Android-এ Google Mobile Vision (GMV) থেকে ML Kit-এ আপনার প্রোজেক্ট মাইগ্রেট করার জন্য আপনাকে যেসব পদক্ষেপ নিতে হবে তা এই ডকুমেন্টে কভার করা হয়েছে।
API-তে সামগ্রিক পরিবর্তন
এইসব পরিবর্তন সব API-এর ক্ষেত্রে প্রযোজ্য:
- GMV API সিঙ্ক্রোনাসভাবে
SparseArray<T>ফলাফল দেখায়। ML Kit API, Google Play পরিষেবা Task API ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে ফলাফল দেখায়। - GMV, API সারফেসে
isOperational()কল ব্যবহার করে, কোনও মডিউল সফলভাবে ডাউনলোড করা হয়েছে কিনা এবং ব্যবহারের জন্য রেডি কিনা তা নির্দেশ করে। ML Kit-এ এই ধরনের কোনও পদ্ধতি নেই। কোনও মডিউল ডাউনলোড করা না হলে, ML KitMlKitException.UNAVAILABLEব্যতিক্রম দেখায়। আপনি এই ব্যতিক্রমটি ধরতে পারেন এবং পরবর্তী ফ্রেম প্রসেস করতে পারেন বা টাইমআউট সেট করতে পারেন এবং বর্তমান ফ্রেমের সাথে আবার চেষ্টা করতে পারেন। - GMV পদ্ধতি ইনপুটের জন্য
Frameব্যবহার করে। ML KitInputImageব্যবহার করে। - GMV একাধিক শনাক্তকরণ এবং ফলাফল ফিল্টার করার জন্য
MultiDetector,MultiProcessorএবংFocusingProcessorফ্রেমওয়ার্ক প্রদান করে। ML Kit এই ধরনের মেকানিজম প্রদান করে না, তবে ডেভেলপার চাইলে একই কার্যকারিতা প্রয়োগ করতে পারেন।
Gradle ইমপোর্ট আপডেট করুন
আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে ML Kit Android লাইব্রেরির জন্য ডিপেন্ডেন্সি আপডেট করুন, যা সাধারণত app/build.gradle, নিম্নলিখিত সারণী অনুযায়ী:
| API | 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.2 |
| CameraSource | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
API-তে পরিবর্তন
এই বিভাগে প্রতিটি Vision API-এর জন্য সংশ্লিষ্ট GMV এবং ML Kit ক্লাস এবং পদ্ধতিগুলি বর্ণনা করা হয়েছে এবং API কীভাবে শুরু করতে হয় তা দেখানো হয়েছে।
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 ভার্সন >= ২১-এ রান করতে হবে।
নিম্নলিখিত ক্লাস ও পদ্ধতির নাম পরিবর্তন করুন:
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 |
বন্ধ করে দেওয়া হয়েছে |
সহায়তা পাওয়া
কোনও সমস্যা হলে, আমাদের কমিউনিটি পৃষ্ঠা চেক করে দেখুন যেখানে আমাদের সাথে যোগাযোগ করার জন্য উপলভ্য চ্যানেলগুলি উল্লেখ করা আছে।