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:
|
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:
- starter: Bu codelab'de temel aldığınız başlangıç kodu.
- final: 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'ı ( ) 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'ı ( ) 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.
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'ı ( ) 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.
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.