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

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 כדי להציג רכיבי ממשק משתמש. כשמטמיעים את הקוד CameraController, ML Kit Analyzer מטפל בטרנספורמציות הקואורדינטות בין ImageAnalysis המקורי ו-PreviewView בשבילך. הוא מקבל את מערכת קואורדינטות היעד מ- CameraX, מחשבת את טרנספורמציה של קואורדינטות, ומעבירה אותו לכיתה Detector של ML Kit לצורך ניתוח.

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

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

  • Executor שמפעיל את הקריאה החוזרת של הצרכן ומבצע את המסירה את MlKitAnalyzer.Result, או את התוצאה המצטברת של ערכת למידת המכונה בפריים של האפליקציה.

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

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

Kotlin

// 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.
    }
)

Java

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

cameraController.setImageAnalysisAnalyzer(executor,
    new MlKitAnalyzer(List.of(barcodeScanner), COORDINATE_SYSTEM_VIEW_REFERENCED,
    executor, result -> {
   // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.
 });

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

  • הטרנספורמציה Matrix שמבוסס על 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.