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

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

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

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

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

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

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

API عنصر من قيمة المتاجرة الإجمالية (GMV) عناصر مجموعة أدوات تعلُّم الآلة
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.0
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.0
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

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

قيمة المتاجرة الإجمالية

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_VIEWERS)

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

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

قيمة المتاجرة الإجمالية

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

إذا كنت تستخدم مكتبة CameraSource التي تقدّمها Google Mobile Vision، يمكنك نقل البيانات بسهولة إلى مكتبة CameraXSource ضمن أدوات تعلّم الآلة، شرط أن يعمل تطبيقك بإصدار min 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 منهي العمل به

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

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