Bu belgede, projelerinizi Google Mobile Vision'dan (GMV) Android'deki ML Kit'e taşımak için uygulamanız gereken adımlar açıklanmaktadır.
Genel API Değişiklikleri
Bu değişiklikler tüm API'ler için geçerlidir:
- GMV API'leri eşzamanlı olarak bir
SparseArray<T>
sonucu döndürür. ML Kit API'leri, sonuçları eşzamansız olarak döndürmek için Google Play Hizmetleri Görev API'sini kullanır. - GMV, bir modülün başarıyla indirilip indirilmediğini ve kullanıma hazır olup olmadığını belirtmek için API yüzeyindeki
isOperational()
çağrısını kullanır. ML Kit'te böyle bir yöntem yoktur. Bir modül indirilmemişse ML Kit birMlKitException.UNAVAILABLE
istisnası atar. Bu istisnayı yakalayıp sonraki kareyi işleyebilir veya bir zaman aşımı belirleyip geçerli kareyle yeniden deneyebilirsiniz. - GMV yöntemlerinde giriş için
Frame
kullanılır. Makine Öğrenimi Kiti,InputImage
kullanır. - GMV, birden fazla algılama ve sonuç filtrelemesi gerçekleştirmek için
MultiDetector
,MultiProcessor
veFocusingProcessor
çerçeveleri sunar. Makine Öğrenimi Kiti bu tür mekanizmalar sağlamaz, ancak geliştirici isterse aynı işlevler uygulayabilir.
Gradle İçe Aktarmalarını Güncelleme
Aşağıdaki tabloya göre, genellikle app/build.gradle
olan modül (uygulama düzeyi) Gradle dosyanızda ML Kit Android kitaplıklarının bağımlılıklarını güncelleyin:
API | GMV Yapısı | Makine Öğrenimi Kiti Yapısı |
---|---|---|
FaceDetector | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
BarcodeDetector | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.0 |
TextRecognition | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-text-recognition:19.0.0 |
CameraSource | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
API Değişiklikleri
Bu bölümde, her Vision API için ilgili GMV ve ML Kit sınıfları ile yöntemleri açıklanmakta ve API'nin nasıl başlatılacağı gösterilmektedir.
FaceDetector
Başlatma işlemini aşağıdaki örnekte gösterildiği gibi yeniden kodlayın:
GMV
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
ML Kiti
FaceDetectorOptions options = new FaceDetectorOptions.Builder() .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE) .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL) .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL) .build(); detector = FaceDetection.getClient(options);
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision.face |
mlkit.vision.face |
---|---|
FaceDetector
|
FaceDetector
|
SparseArray<Face> detect(Frame frame)
|
Task<List<Face>> process(@NonNull InputImage image)
|
FaceDetector.Builder.setClassificationType(int classificationType)
|
FaceDetectorOptions.Builder.setClassificationMode(int classificationMode)
|
NO_CLASSIFICATIONS, ALL_CLASSIFICATIONS
|
CLASSIFICATION_MODE_NONE, CLASSIFICATION_MODE_ALL
|
FaceDetector.Builder.setLandmarkType(int landmarkType)
|
FaceDetectorOptions.Builder.setLandmarkMode(int landmarkMode)
|
NO_LANDMARKS, ALL_LANDMARKS, CONTOUR_LANDMARKS
|
LANDMARK_MODE_NONE, LANDMARK_MODE_ALL
GMV CONTOUR_LANDMARKS yerine |
FaceDetector.Builder.setTrackingEnabled(boolean trackingEnabled)
|
FaceDetectorOptions.Builder.enableTracking()
|
FaceDetector.Builder.setMinFaceSize(float proportionalMinFaceSize)
|
FaceDetectorOptions.Builder.setMinFaceSize(float minFaceSize)
|
FaceDetector.Builder.setMode(int mode)
|
FaceDetectorOptions.Builder.setPerformanceMode(int performanceMode)
|
FAST_MODE, ACCURATE_MODE
|
PERFORMANCE_MODE_FAST, PERFORMANCE_MODE_ACCURATE
|
FaceDetector.Builder.setProminentFaceOnly(boolean prominentFaceOnly)
|
Bu özellik, yüz kontur modu kapsamındadır. |
Face
|
Face
|
Contour
|
FaceContour
|
Landmark
|
FaceLandmark
|
Face.getContours()
|
Face.getAllContours()
|
Face.getEulerY()
|
Face.getHeadEulerAngleY()
|
Face.getEulerZ()
|
Face.getHeadEulerAngleZ()
|
Face.getId()
|
Face.getTrackingId()
|
Face.getIsLeftEyeOpenProbability()
|
Face.getLeftEyeOpenProbability()
|
Face.getIsRightEyeOpenProbability()
|
Face.getRightEyeOpenProbability()
|
Face.getIsSmilingProbability()
|
Face.getSmilingProbability()
|
Face.getLandmarks()
|
Face.getLandmark(int landmarkType)
|
Face.getPosition()
|
Face.getBoundingBox()
|
BarcodeDetector
Başlatma işlemini aşağıdaki örnekte gösterildiği gibi yeniden kodlayın:
GMV
barcodeDetector = new BarcodeDetector.Builder(context).build());
ML Kiti
barcodeScanner = BarcodeScanning.getClient();
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision.barcode |
mlkit.vision.barcode |
---|---|
BarcodeDetector |
BarcodeScanner
|
SparseArray<Barcode> detect(Frame frame) |
Task<List<Barcode>> process(@NonNull InputImage image)
|
Barcode
|
Barcode
|
TextRecognition
Başlatma işlemini aşağıdaki örnekte gösterildiği gibi yeniden kodlayın:
GMV
textRecognizer = new TextRecognizer.Builder(context).build();
ML Kiti
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision.text |
mlkit.vision.text |
---|---|
TextRecognizer |
TextRecognizer |
SparseArray<TextBlock> detect(Frame frame) |
Task<Text> process(@NonNull InputImage image) |
SparseArray<TextBlock> |
Text |
Line
|
Line
|
TextBlock
|
TextBlock
|
Element
|
Element
|
getLanguage()
|
getRecognizedLanguage()
|
getBoundingBox()
|
getBoundingBox()
|
getCornerPoints()
|
getCornerPoints()
|
TextBlock.getComponents()
|
TextBlock.getLines()
|
TextBlock.getValue()
|
TextBlock.getText()
|
Element.getValue()
|
Element.getText()
|
CameraSource
Google Mobile Vision tarafından sağlanan CameraSource kitaplığını kullanıyorsanız uygulamanızın minimum 21 veya daha eski bir SDK sürümünde çalışması koşuluyla, ML Kit'in CameraXSource
kitaplığına kolayca geçiş yapabilirsiniz.
Aşağıdaki sınıf ve yöntem adlarını değiştirin:
android.gms.vision |
mlkit.vision.camera |
---|---|
CameraSource
|
CameraSourceConfig
|
CameraSource.Builder
|
CameraSourceConfig.Builder
|
CameraSource.Builder.setAutoFocusEnabled
|
CameraX kullanılırken otomatik odaklama varsayılan olarak sağlanır. |
CameraSource.Builder.setFacing
|
CameraSourceConfig.Builder.setCameraFacing
|
CameraSource.Builder.setFocusMode
|
CameraX kullanılırken otomatik odaklama varsayılan olarak sağlanır. |
CameraSource.Builder.setRequestedFps
|
Kullanımdan kaldırıldı. |
CameraSource.Builder.setRequestedPreviewSize
|
CameraSourceConfig.Builder.setRequestedPreviewSize
|
CameraSource
|
CameraXSource
|
new CameraSource.Builder(mContext, detector)....build(); |
CameraXSource(CameraSourceConfig, PreviewView) |
getCameraFacing()
|
getCameraFacing()
|
getPreviewSize()
|
getPreviewSize()
|
release()
|
close()
|
start(SurfaceHolder surfaceHolder)
|
start() // The previewview is set in the CameraSourceConfig
|
start()
|
start()
|
stop()
|
stop()
|
Detector.Processor
|
DetectionTaskCallback
|
receiveDetections(Detections<T> detections)
|
void onDetectionTaskReceived(@NonNull Task<ResultT> detectionTask);
|
release()
|
Dahili olarak ele alındı |
CameraSource.PictureCallback |
Kullanımdan kaldırıldı |
CameraSource.ShutterCallback |
Kullanımdan kaldırıldı |
Yardım alma
Herhangi bir sorunla karşılaşırsanız bize ulaşmak için kullanılabilecek kanalların açıklandığı Topluluk sayfamıza göz atın.