يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل مشاريعك من 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
استخدام السمة |
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
أعِد ترميز عملية الإعداد كما هو موضّح في المثال التالي:
قيمة المتاجرة الإجمالية
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 |
منهي العمل به |
الحصول على المساعدة
إذا واجهت أي مشاكل، يُرجى زيارة صفحة المنتدى التي توضّح القنوات المتاحة للتواصل معنا.