इस दस्तावेज़ में, Android पर Google Mobile Vision (GMV) से ML Kit पर अपने प्रोजेक्ट माइग्रेट करने का तरीका बताया गया है.
एपीआई में किए गए सभी बदलाव
ये बदलाव सभी एपीआई पर लागू होते हैं:
- GMV एपीआई,
SparseArray<T>नतीजे को सिंक्रोनस तरीके से दिखाते हैं. ML Kit के एपीआई, Google Play services के Task API का इस्तेमाल करके, एसिंक्रोनस तरीके से नतीजे दिखाते हैं. - जीएमवी, एपीआई प्लैटफ़ॉर्म में
isOperational()कॉल का इस्तेमाल करता है. इससे यह पता चलता है कि कोई मॉड्यूल डाउनलोड हो गया है या नहीं और वह इस्तेमाल के लिए तैयार है या नहीं. ML Kit में ऐसा कोई तरीका नहीं है. अगर कोई मॉड्यूल डाउनलोड नहीं किया गया है, तो ML KitMlKitException.UNAVAILABLEअपवाद दिखाता है. इस अपवाद को पकड़ा जा सकता है और अगले फ़्रेम को प्रोसेस किया जा सकता है. इसके अलावा, टाइम आउट सेट करके, मौजूदा फ़्रेम के साथ फिर से कोशिश की जा सकती है. - जीएमवी के तरीके, इनपुट के लिए
Frameका इस्तेमाल करते हैं. ML Kit,InputImageका इस्तेमाल करता है. - GMV, कई तरह की पहचान करने और नतीजों को फ़िल्टर करने के लिए,
MultiDetector,MultiProcessor, औरFocusingProcessorफ़्रेमवर्क उपलब्ध कराता है. ML Kit में इस तरह की सुविधाएं नहीं मिलती हैं. हालांकि, डेवलपर चाहे, तो इस तरह की सुविधाएं लागू कर सकता है.
Gradle इंपोर्ट अपडेट करें
अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल में, ML Kit की Android लाइब्रेरी के लिए डिपेंडेंसी अपडेट करें. आम तौर पर, यह फ़ाइल app/build.gradle होती है. इसे यहां दी गई टेबल के हिसाब से अपडेट करें:
| एपीआई | जीएमवी आर्टफ़ैक्ट | ML Kit आर्टफ़ैक्ट |
|---|---|---|
| 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.2 |
| 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_LANDMARKS को बदलने के लिए, |
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.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 लाइब्रेरी पर आसानी से माइग्रेट किया जा सकता है. इसके लिए, ज़रूरी है कि आपका ऐप्लिकेशन, एसडीके के कम से कम 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 |
बहिष्कृत |
सहायता पाना
अगर आपको कोई समस्या आती है, तो हमारा कम्यूनिटी पेज देखें. यहां हमने उन चैनलों के बारे में बताया है जिनके ज़रिए हमसे संपर्क किया जा सकता है.