Ensar Hamzaçebi

An Android Developer

Android Face Detection 04 - Classification

| Comments

Classification, tespit edilen yüz'ün gülüp gülmediğini tespit etmemizi sağlar. Bunu yaparkende yüzün gülüp gülmediğiyle alakalı 0 ile 1 arasında bir sayı döner. Bu yazımızda face detection ile alakalı önceki yazılarımızda başladığımız proje üzerinden devam ediceğimiz için önce onları okumanızda fayda var:

  1. Android Face Detection 01 - Başlangıç
  2. Android Face Detection 02 - Yüzleri Kare içine alma
  3. Android Face Detection 03 - Landmarks Kullanımı

MainActivit'in onCreate methodunda oluşturduğumuz FaceDetector nesnesini aşşağıdaki gibi güncelliyoruz

1
2
3
4
5
FaceDetector detector = new FaceDetector.Builder(getApplicationContext())
            .setTrackingEnabled(false)
            .setLandmarkType(FaceDetector.ALL_LANDMARKS)
            .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
            .build();

Eğer landmark kullanmak istemiyorsanız setLandmarkType opsiyonunu kaldırabilirsiniz. Bu procces'in hızlanmasını sağlayacaktır. Yine onCreate‘in içerisinde kaynak resmimizi alıyoruz

1
InputStream stream = getResources().openRawResource(R.raw.image03);

Daha sonra CustomView sınıfımıza şu fonksiyonu ekliyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void detectFaceCharacteristics(Canvas canvas, double scale) {
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStyle(Paint.Style.FILL);
    paint.setStrokeWidth(1);
    paint.setTextSize(25.0f);

    for (int i = 0; i < mFaces.size(); ++i) {
        Face face = mFaces.valueAt(i);
        float cx = (float)(face.getPosition().x * scale);
        float cy = (float) (face.getPosition().y * scale);
        canvas.drawText(String.valueOf(face.getIsSmilingProbability()), cx, cy + 10.0f, paint);
    }
}

Burada kilit nokta face.getIsSmilingProbability(). Bu bize, tespit edilen yüzün gülüyor olma olasılığını 0 ile 1 arasında bir sayı vererek söylemektedir.

Bu yeni fonksiyonumuzu CustomView sımıfımızdaki onDraw() fonksiyonumuzda drawFaceAnnotations() fonksiyonu yerine çağırıyoruz.

1
detectFaceCharacteristics(canvas, scale);

Projeyi run ettiğimizde kaynak olarak verdiğimiz resimdeki yüzlerin gülümseme oranlarını bize verdiğini görebilirsiniz.

Tavsiyelerinizi önerilerinizi ve ya sorularınızı bekliyorum. İyi çalışmalar.

Comments