Makine Öğrenimi Kiti ile metin ve yüz özelliklerini tanıma: Android

1. Giriş

ML Kit, Google'ın makine öğrenimi uzmanlığını güçlü ancak kullanımı kolay bir pakette Android ve iOS uygulamalarına getiren bir mobil SDK'dır. Makine öğrenimi konusunda yeni veya deneyimli olmanız fark etmez. Yalnızca birkaç satır kodla ihtiyacınız olan işlevi kolayca uygulayabilirsiniz. Başlamak için nöral ağlar veya model optimizasyonu hakkında kapsamlı bilgiye sahip olmanız gerekmez.

Bu codelab'de çalışırken herhangi bir sorunla (kod hataları, dil bilgisi hataları, net olmayan ifadeler vb.) karşılaşırsanız lütfen codelab'in sol alt köşesindeki Hata bildir bağlantısını kullanarak sorunu bildirin.

İşleyiş şekli

ML Kit, Google'ın Mobile Vision ve TensorFlow Lite gibi makine öğrenimi teknolojilerini tek bir SDK'da bir araya getirerek uygulamalarınızda makine öğrenimi tekniklerini uygulamayı kolaylaştırır. İster Mobile Vision'ın cihaz üzerindeki modellerinin gerçek zamanlı özelliklerine veya özel TensorFlow Lite modellerinin esnekliğine ihtiyacınız olsun, ML Kit size her konuda yardımcı olabilir.

Bu codelab'de, resimlerdeki metinleri ve yüz özelliklerini otomatik olarak algılayabilen kendi Android uygulamanızı oluşturma konusunda size yol göstereceğiz.

Oluşturacağınız nedir?

Bu codelab'de, ML Kit ile bir Android uygulaması oluşturacaksınız. Uygulamanız şunları yapabilecek:

  • Resimlerdeki metni algılamak için ML Kit Metin Tanıma API'sini kullanma
  • Görüntülerdeki yüz özelliklerini tanımlamak için ML Kit Face Contour API'yi kullanma

Neler öğreneceksiniz?

  • Metin tanıma ve yüz özelliği algılama gibi gelişmiş makine öğrenimi özelliklerini kolayca eklemek için ML Kit SDK'sını kullanma

Gerekenler

  • Android Studio'nun son sürümü (v3.0+)
  • Android Studio Emulator veya fiziksel bir Android cihaz
  • Örnek kod
  • Java'da Android uygulaması geliştirmeyle ilgili temel bilgiler
  • Makine öğrenimi modelleri hakkında temel düzeyde bilgi sahibi olma

Bu codelab, ML Kit'e odaklanmaktadır. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için kullanımınıza sunulmuştur.

2. Kurulum

Kodu İndirme

Bu codelab'in tüm kodunu indirmek için aşağıdaki bağlantıyı tıklayın:

İndirilen zip dosyasının paketini açın. Bu işlem, ihtiyacınız olan tüm kaynakları içeren bir kök klasör (mlkit-android-master) açar. Bu codelab için yalnızca vision alt dizinindeki kaynaklara ihtiyacınız vardır.

mlkit-android-master deposundaki vision alt dizini iki dizin içerir:

  • android_studio_folder.pngstarter: Bu codelab'de temel aldığınız başlangıç kodu.
  • android_studio_folder.pngfinal: Tamamlanmış örnek uygulamanın tamamlanmış kodu.

3. ML Kit için bağımlılıkları kontrol edin

ML Kit'in bağımlılıklarını doğrulama

Aşağıdaki satırlar, projenizin app dizinindeki build.gradle dosyasının sonuna eklenmiş olmalıdır (onaylamak için kontrol edin):

build.gradle

dependencies {
  // Face features
  implementation 'com.google.mlkit:face-detection:16.0.0'

  // Text features
  implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}

Bu codelab'deki özellikleri uygulamak için ihtiyacınız olan belirli ML Kit bağımlılıklarıdır.

4. Başlangıç uygulamasını çalıştırma

Projeyi Android Studio'ya içe aktardığınıza ve ML Kit'in bağımlılıkları kontrol ettiğinize göre uygulamayı ilk kez çalıştırmaya hazırsınız. Android Studio emülatörünü başlatın ve Android Studio araç çubuğunda Çalıştır'ı ( execute.png) tıklayın.

Uygulama, emülatörünüzde başlatılır. Bu noktada, 3 resim arasından seçim yapmanızı sağlayan bir açılır alan içeren temel bir düzen görürsünüz. Sonraki bölümde, resimlerdeki metni tanımlamak için uygulamanıza metin tanıma özelliğini ekleyeceksiniz.

5. Cihaz üzerinde metin tanıma özelliği ekleyin

Bu adımda, resimlerdeki metni algılayacak işlevi uygulamanıza ekleyeceğiz.

Bir resimde cihaz üzerinde metin tanımayı ayarlama ve çalıştırma

MainActivity sınıfının runTextRecognition yöntemine aşağıdakileri ekleyin:

MainActivity.java

private void runTextRecognition() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   TextRecognizer recognizer = TextRecognition.getClient();
   mTextButton.setEnabled(false);
   recognizer.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<Text>() {
                       @Override
                       public void onSuccess(Text texts) {
                           mTextButton.setEnabled(true);
                           processTextRecognitionResult(texts);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mTextButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });
}

Yukarıdaki kod, metin tanıma algılayıcısını yapılandırır ve yanıtla birlikte processTextRecognitionResult işlevini çağırır.

Metin tanıma yanıtını işleme

Sonuçları ayrıştırmak ve uygulamanızda görüntülemek için MainActivity sınıfındaki processTextRecognitionResult işlevine aşağıdaki kodu ekleyin.

MainActivity.java

private void processTextRecognitionResult(Text texts) {
   List<Text.TextBlock> blocks = texts.getTextBlocks();
   if (blocks.size() == 0) {
       showToast("No text found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < blocks.size(); i++) {
       List<Text.Line> lines = blocks.get(i).getLines();
       for (int j = 0; j < lines.size(); j++) {
           List<Text.Element> elements = lines.get(j).getElements();
           for (int k = 0; k < elements.size(); k++) {
               Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
               mGraphicOverlay.add(textGraphic);

           }
       }
   }
}

Uygulamayı emülatörde çalıştırma

Ardından Android Studio araç çubuğunda Çalıştır'ı ( execute.png) tıklayın. Uygulama yüklendikten sonra açılır menüde Test Image 1(Text)'ün seçili olduğundan emin olun ve FIND TEXT düğmesini tıklayın.

Uygulamanız artık aşağıdaki resimdeki gibi görünecektir. Bu resimde, metin tanıma sonuçları ve orijinal resmin üzerine yerleştirilmiş sınır kutuları gösterilmektedir.

10b12d0e8822eaf5.png

Fotoğraf: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0

Tebrikler, ML Kit'i kullanarak cihaz üzerinde metin tanıma özelliğini uygulamanıza eklediniz. Cihaz üzerinde metin tanıma, uygulamanızda internet bağlantısı olmadığında bile çalışır ve hem hareketsiz resimlerde hem de canlı video karelerinde kullanılacak kadar hızlı olduğundan birçok kullanım alanı için mükemmeldir.

6. Cihaz üzerinde yüz kontur algılama özelliği ekle

Bu adımda, uygulamanıza resimlerdeki yüzlerin dış hatlarını tanıyacak bir işlev ekleyeceğiz.

Cihaz üzerinde yüz konturu algılamayı bir resimde ayarlama ve çalıştırma

MainActivity sınıfının runFaceContourDetection yöntemine aşağıdakileri ekleyin:

MainActivity.java

private void runFaceContourDetection() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   FaceDetectorOptions options =
           new FaceDetectorOptions.Builder()
                   .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
                   .setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
                   .build();

   mFaceButton.setEnabled(false);
   FaceDetector detector = FaceDetection.getClient(options);
   detector.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<List<Face>>() {
                       @Override
                       public void onSuccess(List<Face> faces) {
                           mFaceButton.setEnabled(true);
                           processFaceContourDetectionResult(faces);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mFaceButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });

}

Yukarıdaki kod, yüz kontur algılayıcısını yapılandırır ve yanıtla birlikte processFaceContourDetectionResult işlevini çağırır.

Yüz kontur algılama yanıtını işleme

Sonuçları ayrıştırmak ve uygulamanızda görüntülemek için MainActivity sınıfındaki processFaceContourDetectionResult işlevine aşağıdaki kodu ekleyin.

MainActivity.java

private void processFaceContourDetectionResult(List<Face> faces) {
   // Task completed successfully
   if (faces.size() == 0) {
       showToast("No face found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < faces.size(); ++i) {
       Face face = faces.get(i);
       FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
       mGraphicOverlay.add(faceGraphic);
       faceGraphic.updateFace(face);
   }
}

Uygulamayı emülatörde çalıştırma

Ardından Android Studio araç çubuğunda Çalıştır'ı ( execute.png) tıklayın. Uygulama yüklendikten sonra açılır alanda Test Image 2 (Face) öğesinin seçili olduğundan emin olun ve FIND FACE CONTOUR düğmesini tıklayın.

Uygulamanız artık aşağıdaki resme benzemelidir. Bu resimde yüz konturu algılama sonuçları ve yüz konturu, orijinal görüntünün üzerine yerleştirilmiş noktalar olarak gösterilmektedir.

f9ff2fcbf63f0f3b.png

Tebrikler, ML Kit'i kullanarak cihaz üzerinde yüz kontur algılama özelliğini uygulamanıza eklediniz. Cihaz üzerinde yüz konturu algılama, uygulamanızda internet bağlantısı olmadığında bile çalışır ve hem hareketsiz resimlerde hem de canlı video karelerinde kullanılacak kadar hızlı olduğundan birçok kullanım alanı için mükemmeldir.

7. Tebrikler!

Uygulamanıza gelişmiş makine öğrenimi özelliklerini kolayca eklemek için ML Kit'i başarıyla kullandınız.

İşlediklerimiz

  • Android uygulamanıza ML Kit'i ekleme
  • Resimlerdeki metni bulmak için ML Kit'te cihaz üzerinde metin tanıma özelliğini kullanma
  • Görüntülerdeki yüz özelliklerini tanımlamak için ML Kit'te cihaz üzerinde yüz konturu özelliğini kullanma

Sonraki Adımlar

  • ML Kit'i kendi Android uygulamanızda kullanın.

Daha Fazla Bilgi