1. مقدمة
ML Kit هي حزمة تطوير برامج (SDK) للأجهزة الجوّالة تتيح للمطوّرين الاستفادة من خبرة Google في مجال تعلُّم الآلة في تطبيقات Android وiOS، وذلك من خلال حزمة فعّالة وسهلة الاستخدام. سواء كنت مبتدئًا أو خبيرًا في مجال تعلُّم الآلة، يمكنك بسهولة تنفيذ الوظائف التي تحتاج إليها ببضعة أسطر من الرموز البرمجية. لست بحاجة إلى معرفة تفصيلية بالشبكات العصبية أو تحسين النماذج للبدء.
إذا واجهت أي مشاكل (مثل أخطاء في الرمز أو أخطاء نحوية أو صياغة غير واضحة أو غير ذلك) أثناء العمل على هذا الدرس العملي، يُرجى الإبلاغ عن المشكلة من خلال الرابط الإبلاغ عن خطأ في أسفل يمين الدرس العملي.
كيف تعمل هذه الميزة؟
تسهّل حزمة تعلّم الآلة تطبيق تقنيات تعلُّم الآلة في تطبيقاتك من خلال الجمع بين تكنولوجيات تعلُّم الآلة من Google، مثل Mobile Vision وTensorFlow Lite، في حزمة تطوير البرامج (SDK) واحدة. سواء كنت بحاجة إلى إمكانات الوقت الفعلي التي توفّرها نماذج Mobile Vision على الجهاز فقط أو مرونة نماذج TensorFlow Lite المخصّصة، فإنّ حزمة تعلّم الآلة توفّر لك كل ما تحتاجه.
سيرشدك هذا الدرس التطبيقي خلال عملية إنشاء تطبيق Android خاص بك يمكنه رصد النصوص وملامح الوجه تلقائيًا في صورة.
ما ستنشئه
في هذا الدرس التطبيقي، ستنشئ تطبيق Android باستخدام حزمة تعلّم الآلة. سيتم إجراء ما يلي في تطبيقك:
|
|
ما ستتعلمه
- كيفية استخدام حزمة تعلّم الآلة لإضافة إمكانات متقدّمة بسهولة، مثل التعرّف على النصوص ورصد ملامح الوجه
المتطلبات
- إصدار حديث من "استوديو Android" (الإصدار 3.0 أو إصدار أحدث)
- محاكي استوديو Android أو جهاز Android فعلي
- الرمز النموذجي
- معرفة أساسية بتطوير تطبيقات Android باستخدام Java
- فهم أساسي لنماذج تعلُّم الآلة
يركّز هذا الدرس التطبيقي حول الترميز على حزمة تعلّم الآلة. يتم تجاهل المفاهيم ومجموعات الرموز غير ذات الصلة، ويتم توفيرها لك لنسخها ولصقها ببساطة.
2. الإعداد
تنزيل الرمز
انقر على الرابط التالي لتنزيل كل الرموز البرمجية لهذا الدرس التطبيقي حول الترميز:
فكّ ضغط ملف ZIP الذي تم تنزيله. سيؤدي ذلك إلى فك حزمة مجلد رئيسي (mlkit-android-master) يحتوي على جميع الموارد التي ستحتاج إليها. في هذا الدرس التطبيقي، لن تحتاج إلا إلى الموارد الموجودة في الدليل الفرعي vision.
يحتوي الدليل الفرعي vision في مستودع mlkit-android-master على دليلَين:
starter: الرمز الأوّلي الذي ستستند إليه في هذا الدرس التطبيقي حول الترميز.
final: رمز مكتمل لنموذج التطبيق النهائي.
3- التحقّق من التبعيات في حزمة تعلّم الآلة
التحقّق من التبعيات في حزمة تعلّم الآلة
يجب أن تكون الأسطر التالية قد أُضيفت إلى نهاية ملف build.gradle في الدليل app الخاص بمشروعك (تحقَّق من ذلك للتأكّد):
build.gradle
dependencies {
// Face features
implementation 'com.google.mlkit:face-detection:16.0.0'
// Text features
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}
هذه هي التبعيات المحدّدة في حزمة تعلّم الآلة التي تحتاج إليها لتنفيذ الميزات في هذا الدرس التطبيقي حول الترميز.
4. تشغيل التطبيق النموذجي
بعد استيراد المشروع إلى "استوديو Android" والتحقّق من التبعيات الخاصة بحزمة تعلّم الآلة، ستكون مستعدًا لتشغيل التطبيق للمرة الأولى. ابدأ تشغيل محاكي "استوديو Android"، ثم انقر على تشغيل (
) في شريط أدوات "استوديو Android".
من المفترض أن يتم تشغيل التطبيق على المحاكي. في هذه المرحلة، من المفترض أن يظهر لك تخطيط أساسي يتضمّن حقل قائمة منسدلة يتيح لك الاختيار بين 3 صور. في القسم التالي، ستضيف ميزة التعرّف على النص إلى تطبيقك لتحديد النص في الصور.
5- إضافة ميزة التعرّف على النص على الجهاز فقط
في هذه الخطوة، سنضيف وظيفة إلى تطبيقك للتعرّف على النصوص في الصور.
إعداد ميزة التعرّف على النص في صورة وتشغيلها على الجهاز فقط
أضِف ما يلي إلى طريقة runTextRecognition للفئة MainActivity:
MainActivity.java
private void runTextRecognition() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
TextRecognizer recognizer = TextRecognition.getClient();
mTextButton.setEnabled(false);
recognizer.process(image)
.addOnSuccessListener(
new OnSuccessListener<Text>() {
@Override
public void onSuccess(Text texts) {
mTextButton.setEnabled(true);
processTextRecognitionResult(texts);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mTextButton.setEnabled(true);
e.printStackTrace();
}
});
}
يضبط الرمز البرمجي أعلاه أداة رصد التعرّف على النص ويستدعي الدالة processTextRecognitionResult مع الردّ.
معالجة الردّ على طلب التعرّف على النص
أضِف الرمز التالي إلى processTextRecognitionResult في الفئة MainActivity لتحليل النتائج وعرضها في تطبيقك.
MainActivity.java
private void processTextRecognitionResult(Text texts) {
List<Text.TextBlock> blocks = texts.getTextBlocks();
if (blocks.size() == 0) {
showToast("No text found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < blocks.size(); i++) {
List<Text.Line> lines = blocks.get(i).getLines();
for (int j = 0; j < lines.size(); j++) {
List<Text.Element> elements = lines.get(j).getElements();
for (int k = 0; k < elements.size(); k++) {
Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
mGraphicOverlay.add(textGraphic);
}
}
}
}
تشغيل التطبيق على المحاكي
انقر الآن على تشغيل (
) في شريط أدوات "استوديو Android". بعد تحميل التطبيق، تأكَّد من اختيار Test Image 1(Text) في حقل القائمة المنسدلة وانقر على الزر FIND TEXT.
من المفترض أن يبدو تطبيقك الآن مثل الصورة أدناه، حيث يعرض نتائج التعرّف على النص والمربّعات المحيطة مركَّبة فوق الصورة الأصلية.

الصورة: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
تهانينا، لقد أضفت للتو ميزة التعرّف على النصوص على الجهاز فقط إلى تطبيقك باستخدام حزمة تعلّم الآلة. تُعدّ ميزة التعرّف على النصوص على الجهاز فقط رائعة في العديد من حالات الاستخدام، فهي تعمل حتى عندما لا يتوفّر اتصال بالإنترنت في تطبيقك، كما أنّها سريعة بما يكفي لاستخدامها على الصور الثابتة بالإضافة إلى لقطات الفيديو المباشر.
6. إضافة ميزة رصد ملامح الوجه على الجهاز فقط
في هذه الخطوة، سنضيف وظيفة إلى تطبيقك للتعرّف على ملامح الوجوه في الصور.
إعداد ميزة "التعرّف على محيط الوجه على الجهاز فقط" وتشغيلها على صورة
أضِف ما يلي إلى طريقة runFaceContourDetection للفئة MainActivity:
MainActivity.java
private void runFaceContourDetection() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
FaceDetectorOptions options =
new FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
.setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
.build();
mFaceButton.setEnabled(false);
FaceDetector detector = FaceDetection.getClient(options);
detector.process(image)
.addOnSuccessListener(
new OnSuccessListener<List<Face>>() {
@Override
public void onSuccess(List<Face> faces) {
mFaceButton.setEnabled(true);
processFaceContourDetectionResult(faces);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mFaceButton.setEnabled(true);
e.printStackTrace();
}
});
}
يضبط الرمز البرمجي أعلاه أداة رصد محيط الوجه ويستدعي الدالة processFaceContourDetectionResult مع الاستجابة.
معالجة الردّ على طلب رصد ملامح الوجه
أضِف الرمز التالي إلى processFaceContourDetectionResult في الفئة MainActivity لتحليل النتائج وعرضها في تطبيقك.
MainActivity.java
private void processFaceContourDetectionResult(List<Face> faces) {
// Task completed successfully
if (faces.size() == 0) {
showToast("No face found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < faces.size(); ++i) {
Face face = faces.get(i);
FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
mGraphicOverlay.add(faceGraphic);
faceGraphic.updateFace(face);
}
}
تشغيل التطبيق على المحاكي
انقر الآن على تشغيل (
) في شريط أدوات "استوديو Android". بعد تحميل التطبيق، تأكَّد من اختيار Test Image 2 (Face) في حقل القائمة المنسدلة وانقر على الزر FIND FACE CONTOUR.
من المفترض أن يبدو تطبيقك الآن مثل الصورة أدناه، حيث يعرض نتائج رصد محيط الوجه ويعرض محيط الوجه كنقاط متراكبة فوق الصورة الأصلية.

تهانينا، لقد أضفت للتو ميزة "اكتشاف محيط الوجه" على الجهاز فقط إلى تطبيقك باستخدام حزمة تعلّم الآلة. تُعدّ ميزة "رصد محيط الوجه" على الجهاز فقط رائعة في العديد من حالات الاستخدام، إذ إنّها تعمل حتى عندما لا يتوفّر اتصال بالإنترنت في تطبيقك، كما أنّها سريعة بما يكفي لاستخدامها في الصور الثابتة وإطارات الفيديو المباشر.
7. تهانينا!
لقد استخدمت ML Kit بنجاح لإضافة إمكانات متقدّمة لتعلُّم الآلة إلى تطبيقك بسهولة.
المواضيع التي تناولناها
- كيفية إضافة ML Kit إلى تطبيق Android
- كيفية استخدام ميزة "التعرّف على النص" على الجهاز فقط في حزمة تعلّم الآلة للعثور على النص في الصور
- كيفية استخدام ميزة "مخطط الوجه" على الجهاز فقط في حزمة تعلّم الآلة لتحديد ملامح الوجه في الصور
الخطوات التالية
- استخدِم حزمة تعلّم الآلة في تطبيق Android الخاص بك.