כלי לניתוח ערכת למידת מכונה

ML Kit של Google מספק ממשקי API של Vision ללמידת מכונה במכשיר, לזיהוי פנים, לסריקת ברקודים, לתיוג תמונות ועוד. בעזרת ML Kit Analyzer קל יותר לשלב את ML Kit באפליקציית CameraX.

‫ML Kit Analyzer הוא הטמעה של הממשק ImageAnalysis.Analyzer. הוא משנה את רזולוציית היעד שמוגדרת כברירת מחדל (אם צריך) כדי לבצע אופטימיזציה לשימוש ב-ML Kit, מטפל בטרנספורמציות של הקואורדינטות ומעביר את הפריימים ל-ML Kit, שמחזיר את תוצאות הניתוח המצטברות.

הטמעת ML Kit Analyzer

כדי להטמיע את ML Kit Analyzer, מומלץ להשתמש במחלקה CameraController, שפועלת עם PreviewView כדי להציג רכיבים בממשק המשתמש. כשמטמיעים את ML Kit Analyzer באמצעות CameraController, הוא מטפל בהמרות הקואורדינטות בין הסטרימינג המקורי של ImageAnalysis לבין PreviewView. הוא מקבל את מערכת הקואורדינטות של היעד מ-CameraX, מחשב את טרנספורמציית הקואורדינטות ומעביר אותה לניתוח במחלקה Detector של ML Kit.

כדי להשתמש ב-ML Kit Analyzer עם CameraController, צריך להפעיל את setImageAnalysisAnalyzer() ולהעביר לו אובייקט חדש של ML Kit Analyzer עם הפרטים הבאים ב-constructor שלו:

  • רשימה של Detector של ML Kit, ש-CameraX מפעיל ברצף לפי הסדר.
  • מערכת הקואורדינטות של היעד שקובעת את הקואורדינטות של הפלט של ML Kit:

  • Executor שמפעיל את פונקציית ה-callback של הצרכן ומעביר לאפליקציה את MlKitAnalyzer.Result, או את התוצאה המצטברת של ML Kit של פריים במצלמה.

  • ‫Consumer, שמופעל על ידי CameraX כשיש פלט חדש של ML Kit.

הקוד הבא מטמיע את ML Kit Analyzer באמצעות CameraController כדי להגדיר BarcodeScanner לזיהוי קודי QR:

// create BarcodeScanner object.
val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
    .build()
val barcodeScanner = BarcodeScanning.getClient(options)

cameraController.setImageAnalysisAnalyzer(
    ContextCompat.getMainExecutor(this),
    MlKitAnalyzer(
        listOf(barcodeScanner),
        COORDINATE_SYSTEM_VIEW_REFERENCED,
        ContextCompat.getMainExecutor(this)
    ) { result: MlKitAnalyzer.Result? ->
        // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.
    }
)

בדוגמת הקוד שלמעלה, ML Kit Analyzer מעביר את הפרטים הבאים למחלקה Detector של BarcodeScanner:

  • מטריצת הטרנספורמציה שמבוססת על COORDINATE_SYSTEM_VIEW_REFERENCED ומייצגת את מערכת הקואורדינטות של היעד.
  • הפריים במצלמה.

אם BarcodeScanner נתקל בבעיות, Detector מציג שגיאה, ו-ML Kit Analyzer מעביר אותה לאפליקציה. אם הפעולה מצליחה, ML Kit Analyzer מחזיר את MLKitAnalyzer.Result#getValue(), שבמקרה הזה הוא האובייקט Barcode.

אפשר גם להטמיע את ML Kit Analyzer באמצעות המחלקה ImageAnalysis שהיא חלק מ-camera-core. עם זאת, מכיוון ש-ImageAnalysis לא משולב עם PreviewView, צריך לטפל באופן ידני בטרנספורמציות של הקואורדינטות. מידע נוסף זמין במאמרי העזרה של ML Kit Analyzer.

מקורות מידע נוספים

כדי לראות אפליקציית מצלמה שפועלת עם פונקציונליות של ML Kit Analyzer, עיינו בדוגמה של CameraX-MLKit.