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