Android पर, मोबाइल विज़न से एमएल किट में माइग्रेट किया जा रहा है

इस दस्तावेज़ में बताया गया है कि अपने प्रोजेक्ट को Google Mobile Vision (GMV) से Android पर ML Kit में माइग्रेट करने के लिए, क्या करना होगा.

एपीआई में हुए सभी बदलाव

ये बदलाव सभी एपीआई पर लागू होते हैं:

  • जीएमवी एपीआई, SparseArray<T> नतीजा सिंक करता है. ML Kit API, एसिंक्रोनस तरीके से नतीजे देने के लिए, Google Play services के Task API का इस्तेमाल करता है.
  • GMV, एपीआई प्लैटफ़ॉर्म में isOperational() कॉल का इस्तेमाल करके यह बताता है कि मॉड्यूल डाउनलोड हो गया है या नहीं और वह इस्तेमाल के लिए तैयार है या नहीं. एमएल किट में ऐसा कोई तरीका नहीं है. अगर कोई मॉड्यूल डाउनलोड नहीं हुआ है, तो ML किट MlKitException.UNAVAILABLE अपवाद दिखाती है. इस अपवाद को देखा जा सकता है और अगला फ़्रेम प्रोसेस किया जा सकता है या टाइम आउट सेट करके, मौजूदा फ़्रेम के साथ फिर से कोशिश की जा सकती है.
  • इनपुट के लिए, जीएमवी के तरीकों में Frame का इस्तेमाल किया जाता है. मशीन लर्निंग किट, InputImage का इस्तेमाल करती है.
  • जीएमवी, पहचान करने और नतीजों को फ़िल्टर करने के लिए MultiDetector, MultiProcessor, और FocusingProcessor फ़्रेमवर्क उपलब्ध कराता है. एमएल किट ऐसे तरीके उपलब्ध नहीं कराती. हालांकि, अगर डेवलपर चाहें, तो उन ही सुविधाओं को लागू कर सकता है.

Gradle इंपोर्ट अपडेट करें

यहां दी गई टेबल के मुताबिक, अपने मॉड्यूल (ऐप्लिकेशन-लेवल) Gradle फ़ाइल में ML Kit Android लाइब्रेरी के लिए डिपेंडेंसी अपडेट करें. आम तौर पर, यह app/build.gradle होती है:

API जीएमवी आर्टफ़ैक्ट एमएल किट आर्टफ़ैक्ट
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

एपीआई में हुए बदलाव

इस सेक्शन में, हर Vision API के लिए GMV और ML Kit की क्लास के साथ-साथ एपीआई को शुरू करने के तरीकों के बारे में बताया गया है.

FaceDetector

इस उदाहरण में दिखाए गए तरीके से, शुरू करने की प्रोसेस को फिर से कोड करें:

जीएमवी

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

GMV CONTOUR_][=S को बदलने के लिए, #setContourMode का इस्तेमाल करें)

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

इस उदाहरण में दिखाए गए तरीके से, शुरू करने की प्रोसेस को फिर से कोड करें:

जीएमवी

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

इस उदाहरण में दिखाए गए तरीके से, शुरू करने की प्रोसेस को फिर से कोड करें:

जीएमवी

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

अगर Google Mobile Vision की CameraSource लाइब्रेरी का इस्तेमाल किया जाता है, तो ML Kit की CameraXSource लाइब्रेरी पर आसानी से माइग्रेट किया जा सकता है. हालांकि, इसके लिए यह ज़रूरी है कि आपका ऐप्लिकेशन कम से कम 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 बहिष्कृत

सहायता पाना

अगर आपको कोई समस्या आती है, तो हमारे कम्यूनिटी पेज पर जाएं. यहां हमने उन चैनलों की जानकारी दी है जिनकी मदद से हमसे संपर्क किया जा सकता है.