الانتقال من Mobile Vision إلى ML Kit على نظام التشغيل Android

يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل مشاريعك من Google Mobile Vision (GMV) إلى ML Kit على Android.

التغييرات العامة في واجهة برمجة التطبيقات

تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:

  • تعرض واجهات برمجة التطبيقات الخاصة بـ "إعلانات المركبات على Google" نتيجة SparseArray<T> بشكل متزامن. تستخدم واجهات برمجة التطبيقات في ML Kit واجهة برمجة التطبيقات Task API في "خدمات Google Play" لعرض النتائج بشكل غير متزامن.
  • تستخدِم GMV طلب isOperational() في مساحة واجهة برمجة التطبيقات للإشارة إلى ما إذا تم تنزيل وحدة بنجاح وأصبحت جاهزة للاستخدام. لا تتضمّن حزمة ML Kit طريقة مماثلة. تُصدر حزمة تعلُّم الآلة استثناء MlKitException.UNAVAILABLE في حال عدم تنزيل إحدى الوحدات. يمكنك رصد هذا الاستثناء ومعالجة الإطار التالي أو ضبط مهلة وإعادة المحاولة باستخدام الإطار الحالي.
  • تستخدم طرق GMV Frame لإدخال البيانات. تستخدم حزمة تعلُّم الآلة InputImage.
  • توفّر GMV أُطر عمل MultiDetector وMultiProcessor وFocusingProcessor لإجراء عمليات رصد متعددة وفلترة النتائج. لا يوفّر ML Kit آليات من هذا النوع، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا أراد ذلك.

تعديل عمليات استيراد Gradle

عدِّل التبعيات لمكتبات ML Kit على Android في ملف Gradle للوحدة (على مستوى التطبيق)، والذي يكون عادةً app/build.gradle، وفقًا للجدول التالي:

واجهة برمجة التطبيقات عنصر GMV ML Kit Artifact
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

التغييرات في واجهة برمجة التطبيقات

يوضّح هذا القسم فئات وأساليب GMV وML Kit المقابلة لكل Vision API، ويوضّح كيفية إعداد واجهة برمجة التطبيقات.

FaceDetector

أعِد ترميز عملية التهيئة كما هو موضّح في هذا المثال:

GMV

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

استخدِم #setContourMode لاستبدال 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.getHeight()
Face.getWidth()
Face.getBoundingBox()

BarcodeDetector

أعِد ترميز عملية التهيئة كما هو موضّح في هذا المثال:

GMV

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

أعِد ترميز عملية التهيئة كما هو موضّح في هذا المثال:

GMV

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

إذا كنت تستخدم مكتبة CameraSource التي توفّرها Google Mobile Vision، يمكنك الانتقال بسهولة إلى مكتبة CameraXSource في ML Kit، شرط أن يعمل تطبيقك على الحد الأدنى من إصدار حزمة تطوير البرامج (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 منهي العمل به

الحصول على المساعدة

إذا واجهت أي مشاكل، يُرجى الاطّلاع على صفحة المنتدى حيث نوضّح القنوات المتاحة للتواصل معنا.