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