1. מבוא
ML Kit הוא SDK לנייד שמביא את המומחיות של Google בתחום הלמידה מחישובים אל אפליקציות ל-Android ול-iOS בחבילה עוצמתית ונוחה לשימוש. לא משנה אם אתם חדשים בתחום של למידת מכונה או מנוסים בו, תוכלו להטמיע בקלות את הפונקציונליות שאתם צריכים בכמה שורות קוד בלבד. לא צריך ידע מעמיק ברשתות עצביות או באופטימיזציה של מודלים כדי להתחיל.
אם נתקלתם בבעיות (באגים בקוד, שגיאות דקדוק, ניסוח לא ברור וכו') במהלך העבודה עם ה-codelab הזה, אתם יכולים לדווח על הבעיה באמצעות הקישור דיווח על טעות בפינה הימנית התחתונה של ה-codelab.
איך זה עובד
ML Kit מאפשר להחיל בקלות טכניקות של למידת מכונה באפליקציות שלכם, על ידי שילוב של טכנולוגיות למידת מכונה של Google, כמו Mobile Vision ו-TensorFlow Lite, ב-SDK יחיד. בין אם אתם צריכים את היכולות של מודלים בזמן אמת במכשיר של Mobile Vision, או את הגמישות של מודלים מותאמים אישית של TensorFlow Lite, ML Kit הוא הפתרון בשבילכם.
ב-Codelab הזה תלמדו איך ליצור אפליקציית Android משלכם שיכולה לזהות באופן אוטומטי טקסט ותווי פנים בתמונה.
מה תפַתחו
ב-Codelab הזה תלמדו איך ליצור אפליקציית Android באמצעות ML Kit. האפליקציה שלכם:
|
|
מה תלמדו
- איך משתמשים ב-ML Kit SDK כדי להוסיף בקלות יכולות מתקדמות של למידת מכונה, כמו זיהוי טקסט וזיהוי תווי פנים
מה תצטרכו
- גרסה עדכנית של Android Studio (גרסה 3.0 ואילך)
- אמולטור של Android Studio או מכשיר Android פיזי
- קוד לדוגמה
- ידע בסיסי בפיתוח אפליקציות ל-Android ב-Java
- הבנה בסיסית של מודלים של למידת מכונה
ה-Codelab הזה מתמקד ב-ML Kit. מושגים ובלוקים של קוד שלא רלוונטיים מוצגים בקצרה, ואתם יכולים פשוט להעתיק ולהדביק אותם.
2. תהליך ההגדרה
הורדת הקוד
כדי להוריד את כל הקוד של ה-Codelab הזה, לוחצים על הקישור הבא:
מחלצים את קובץ ה-ZIP שהורד. הפעולה הזו תפרוס תיקיית שורש (mlkit-android-master) עם כל המשאבים שתצטרכו. ב-codelab הזה, תצטרכו רק את המשאבים בספריית המשנה vision.
ספריית המשנה vision במאגר mlkit-android-master מכילה שתי ספריות:
-
starter – קוד התחלתי שעליו מתבססים ב-Codelab הזה. -
final – קוד מלא של אפליקציית הדוגמה המוגמרת.
3. בדיקת יחסי התלות של ML Kit
אימות התלויות של ML Kit
השורות הבאות כבר אמורות להיות מוספות לסוף הקובץ 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'
}
אלה התלויות הספציפיות ב-ML Kit שצריך להטמיע כדי להשתמש בתכונות של ה-codelab הזה.
4. הפעלת האפליקציה לתחילת הדרך
אחרי שייבאתם את הפרויקט ל-Android Studio ובדקתם את התלות ב-ML Kit, אתם מוכנים להפעיל את האפליקציה בפעם הראשונה. מפעילים את האמולטור של Android Studio ולוחצים על Run (הפעלה) (
) בסרגל הכלים של Android Studio.
האפליקציה אמורה להיפתח באמולטור. בשלב הזה אמור להופיע פריסה בסיסית עם שדה נפתח שמאפשר לבחור בין 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);
}
}
}
}
הרצת האפליקציה באמולטור
עכשיו לוחצים על Run (הפעלה) (
) בסרגל הכלים של Android Studio. אחרי שהאפליקציה נטענת, מוודאים שהאפשרות Test Image 1(Text) נבחרה בשדה התפריט הנפתח ולוחצים על הלחצן FIND TEXT.
האפליקציה שלכם אמורה להיראות עכשיו כמו בתמונה שלמטה, עם תוצאות זיהוי הטקסט ותיבות התוחמות שמוצגות מעל התמונה המקורית.

צילום: קאי שרייבר (Kai Schreiber) / Wikimedia Commons / CC BY-SA 2.0
ברכות, הרגע הוספתם לאפליקציה שלכם זיהוי טקסט במכשיר באמצעות ML Kit! זיהוי טקסט במכשיר מתאים למקרים רבים, כי הוא פועל גם כשהאפליקציה לא מחוברת לאינטרנט, והוא מהיר מספיק לשימוש בתמונות סטילס וגם בפריים של סרטונים בשידור חי.
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);
}
}
הרצת האפליקציה באמולטור
עכשיו לוחצים על Run (הפעלה) (
) בסרגל הכלים של Android Studio. אחרי שהאפליקציה נטענת, מוודאים שהאפשרות Test Image 2 (Face) נבחרה בשדה התפריט הנפתח ולוחצים על הלחצן FIND FACE CONTOUR.
האפליקציה אמורה להיראות כמו בתמונה שלמטה, עם תוצאות זיהוי קווי המתאר של הפנים, וקווי המתאר של הפנים מוצגים כנקודות שמוצגות על גבי התמונה המקורית.

ברכות, הרגע הוספתם לאפליקציה שלכם זיהוי קווי מתאר של פנים במכשיר באמצעות ML Kit! זיהוי קווי המתאר של הפנים במכשיר מתאים למקרים רבים, כי הוא פועל גם כשהאפליקציה לא מחוברת לאינטרנט, והוא מהיר מספיק לשימוש בתמונות סטילס וגם בפריים של סרטונים בשידור חי.
7. מעולה!
השתמשתם בהצלחה ב-ML Kit כדי להוסיף בקלות לאפליקציה יכולות מתקדמות של למידת מכונה.
מה נכלל
- איך מוסיפים את ML Kit לאפליקציית Android
- איך משתמשים בזיהוי טקסט במכשיר ב-ML Kit כדי למצוא טקסט בתמונות
- איך משתמשים ב-ML Kit כדי לזהות תווי פנים בתמונות באמצעות תכונת זיהוי קווי המתאר של הפנים במכשיר
השלבים הבאים
- אפשר להשתמש ב-ML Kit באפליקציית Android משלכם.