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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

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

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

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

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

واجهة برمجة التطبيقات قيمة GMV Artifact عناصر ML Kit
مكتشف الوجه com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
أداة رصد الرمز الشريطي com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0
التعرّف على النص com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:18.0.2
مصدر الكاميرا com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

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

يصف هذا القسم الفئات المقابلة لـ GMV وML Kit وأساليبها لكل واجهة برمجة تطبيقات في Vision، ويعرض كيفية تهيئة واجهة برمجة التطبيقات.

مكتشف الوجه

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

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

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 = 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

التعرّف على النص

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

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

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، يمكنك الانتقال بسهولة إلى مكتبة 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 منهي العمل به

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

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