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