מעבר מ-Mobile Vision ל-ML Kit ב-Android

במסמך הזה מפורטים השלבים שצריך לבצע כדי להעביר את הפרויקטים מ: Google Mobile Vision (GMV) ל-ML Kit ב-Android.

שינויים כוללים ב-API

השינויים האלה יחולו על כל ממשקי ה-API:

  • ממשקי API של GMV מחזירים תוצאת SparseArray<T> באופן סינכרוני. ממשקי API של ML Kit משתמשים ממשק ה-API של Google Play Services להחזרת תוצאות באופן אסינכרוני.
  • GMV משתמש בקריאה isOperational() שבפלטפורמת ה-API כדי לציין אם המודול הורד בהצלחה ומוכן לשימוש. לערכת למידת המכונה אין שיטה כזו. ערכת למידת מכונה גורמת לחריגה MlKitException.UNAVAILABLE אם המודול לא הורד. תוכלו לזהות את החריגה הזו ולעבד את למסגרת הבאה, או להגדיר זמן קצוב לתפוגה ולנסות שוב עם המסגרת הנוכחית.
  • בשיטות GMV נעשה שימוש ב-Frame לקלט. ב-ML Kit נעשה שימוש ב-InputImage.
  • GMV מספק MultiDetector, MultiProcessor וגם FocusingProcessor frameworks לביצוע מספר זיהויים וסינון תוצאות. ערכת למידת מכונה לא מספקת מנגנונים כאלה, אבל את אותה פונקציונליות יכולה הטמענו על ידי המפתח, אם יש בכך צורך.

עדכון ייבוא של Gradle

מעדכנים את יחסי התלות של ספריות ML Kit ל-Android בקובץ Gradle של המודול (ברמת האפליקציה), שהוא בדרך כלל app/build.gradle, לפי הטבלה הבאה:

API ארטיפקט של GMV פריט מידע של ערכת ML
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.1
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.1
CameraSource com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

שינויים ב-API

בקטע הזה מתוארים המחלקות והשיטות המתאימות של GMV ו-ML Kit לכל אחד מה-Vision API, ומוסבר איך לאתחל את ה-API.

FaceDetector

מקודדים מחדש את האתחול כמו בדוגמה הזו:

GMV

detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();

ML Kit

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);

שינוי שמות המחלקה והשיטות הבאים:

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

צריך להשתמש בפונקציה #setContourMode כדי להחליף את GMV CONTOUR_GENDERS)

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) התכונה הזו מכוסה במצב קווי מתאר של הפנים.
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.getHeight()
Face.getWidth()
Face.getBoundingBox()

BarcodeDetector

מקודדים מחדש את האתחול כמו בדוגמה הזו:

GMV

barcodeDetector = new BarcodeDetector.Builder(context).build());

ML Kit

barcodeScanner = BarcodeScanning.getClient();

שינוי שמות המחלקה והשיטות הבאים:

android.gms.vision.barcode mlkit.vision.barcode
BarcodeDetector BarcodeScanner
SparseArray<Barcode> detect(Frame frame) Task<List<Barcode>> process(@NonNull InputImage image)
Barcode Barcode

TextRecognition

מקודדים מחדש את האתחול כמו בדוגמה הזו:

GMV

textRecognizer = new TextRecognizer.Builder(context).build();

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

שינוי שמות המחלקה והשיטות הבאים:

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

אם משתמשים בספריית CameraSource שסופקה על ידי Google Mobile Vision, אפשר: לעבור בקלות ל-CameraXSource של ML Kit לספרייה, בתנאי שהאפליקציה פועלת בגרסת SDK מינימלית >= 21.

שינוי שמות המחלקה והשיטות הבאים:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled המיקוד האוטומטי מסופק כברירת מחדל כשמשתמשים ב- CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode המיקוד האוטומטי מסופק כברירת מחדל כשמשתמשים ב- CameraX.
CameraSource.Builder.setRequestedFps הוצא משימוש.
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() בטיפול פנימי
CameraSource.PictureCallback הוצא משימוש
CameraSource.ShutterCallback הוצא משימוש

קבלת עזרה

נתקלתם בבעיות? תוכלו לעיין בדף הקהילה שלנו שבו נפרט את הערוצים הזמינים ליצירת קשר איתנו.