मशीन लर्निंग किट ऐनालाइज़र

Google की एमएल किट, डिवाइस पर मशीन लर्निंग के विज़न एपीआई उपलब्ध कराती है, ताकि पता लगाया जा सके चेहरे, बारकोड स्कैन करना, इमेज को लेबल करना वगैरह. ML Kit विश्लेषक इसे बनाता है इससे ML किट को आपके CameraX ऐप्लिकेशन के साथ आसानी से इंटिग्रेट किया जा सकता है.

ML Kit विश्लेषक, ImageAnalysis.Analyzer इंटरफ़ेस को लागू किया गया है. यह डिफ़ॉल्ट टारगेट रिज़ॉल्यूशन को बदल देता है (अगर ज़रूरी हो) एमएल किट के इस्तेमाल को ऑप्टिमाइज़ करने के लिए, कोऑर्डिनेट ट्रांसफ़ॉर्मेशन को हैंडल करता है, और ML Kit को फ़्रेम पास करता है, जो एग्रीगेट किए गए विश्लेषण के नतीजे देता है.

एमएल किट ऐनालाइज़र को लागू करना

एमएल किट ऐनालाइज़र को लागू करने के लिए, हम CameraController क्लास का इस्तेमाल करने का सुझाव देते हैं. यह क्लास PreviewView के साथ काम करती है, ताकि यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखाए जा सकें. जब CameraController का इस्तेमाल करके लागू किया जाता है, तो एमएल किट ऐनालाइज़र यह ओरिजनल ImageAnalysis के बीच कोऑर्डिनेट ट्रांसफ़ॉर्मेशन को हैंडल करता है स्ट्रीम और PreviewView आपके लिए. इसे टारगेट कोऑर्डिनेट सिस्टम से मिलता है CameraX, निर्देशांक बदलाव की गणना करता है, और उसे विश्लेषण के लिए एमएल किट की Detector क्लास को फ़ॉरवर्ड करता है.

CameraController के साथ एमएल किट ऐनालाइज़र का इस्तेमाल करने के लिए, setImageAnalysisAnalyzer() को कॉल करें और उसे पास करें एक नया ML Kit Analytics ऑब्जेक्ट, जिसके कंस्ट्रक्टर में नीचे दिया गया है:

  • एमएल किट Detector की सूची, जिसे CameraX क्रम से लागू करता है.
  • टारगेट कोऑर्डिनेट सिस्टम, जो एमएल किट आउटपुट के निर्देशांक तय करता है:

  • एक Executor जो उपभोक्ता कॉलबैक को शुरू करता है और डिलीवरी करता है MlKitAnalyzer.Result या कैमरे के फ़्रेम से एग्रीगेट किया गया एमएल किट मिला, ऐप्लिकेशन के लिए.

  • एक Consumer, जिसे नया ML Kit आउटपुट होने पर CameraX शुरू करता है.

नीचे दिया गया कोड, मशीन लर्निंग किट ऐनालाइज़र को सेट अप करने के लिए CameraController का इस्तेमाल करता है क्यूआर कोड का पता लगाने के लिए, BarcodeScanner:

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 Attributesr ये पास करती है: BarcodeScanner की Detector क्लास:

  • ट्रांसफ़ॉर्मेशन मैट्रिक्स COORDINATE_SYSTEM_VIEW_REFERENCED पर आधारित है जो टारगेट कोऑर्डिनेट सिस्टम को दिखाता है.
  • कैमरे के फ़्रेम.

अगर BarcodeScanner में कोई समस्या आती है, तो इसके Detector से गड़बड़ी होती है, और ML Kit Analytics, इसे आपके ऐप्लिकेशन पर लागू करता है. कामयाब होने पर, ML किट ऐनालाइज़र MLKitAnalyzer.Result#getValue() लौटाता है, जो इस मामले में, Barcode ऑब्जेक्ट होगा.

camera-core का हिस्सा होने वाली ImageAnalysis क्लास का इस्तेमाल करके भी एमएल किट ऐनालाइज़र को लागू किया जा सकता है. हालांकि, क्योंकि ImageAnalysis को PreviewView के साथ इंटिग्रेट नहीं किया गया है, आपको कोऑर्डिनेट ट्रांसफ़ॉर्मेशन को मैन्युअल तौर पर मैनेज करना होगा. ज़्यादा जानकारी के लिए, ML Kit Analytics से जुड़ा रेफ़रंस दस्तावेज़ देखें.

अन्य संसाधन

एमएल किट ऐनालाइज़र फ़ंक्शन के साथ काम करने वाले कैमरा ऐप्लिकेशन के लिए, CameraX-MLKit सैंपल देखें.