כדי לאמן מודל לתיוג תמונות, צריך לספק ל-AutoML Vision Edge קבוצה של תמונות ותוויות תואמות. AutoML Vision Edge משתמש בקבוצת הנתונים הזו כדי לאמן מודל חדש בענן, שבו תוכלו להשתמש לתווית תמונות במכשיר באפליקציה שלכם. (מידע כללי על התכונה הזו מופיע במאמר סקירה כללית).
AutoML Vision Edge הוא שירות של Google Cloud. השימוש בשירות כפוף להסכם הרישיון של Google Cloud Platform ולתנאים ספציפיים לשירות, והחיוב מתבצע בהתאם. מידע על חיוב זמין בדף תמחור של AutoML.
לפני שמתחילים
אם עדיין אין לכם פרויקט ב-Firebase או ב-Google Cloud, תוכלו ליצור פרויקט חדש במסוף Firebase.
מומלץ לקרוא את ההנחיות שמופיעות במדריך ללמידת מכונה כוללת – AutoML.
אם אתם רק רוצים לנסות את AutoML Vision Edge ואין לכם נתוני אימון משלכם, אתם יכולים להוריד מערך נתונים לדוגמה, כמו אחד מהמערכים הבאים:
- מערך הנתונים לדוגמה של תמונות פרחים הרשמי של TensorFlow
- מערך הנתונים הזה של האלפבית בשפת הסימנים האמריקאית (ASL)
אפשר למצוא עוד מערכי נתונים שמתארחים ב-Kaggle.
1. איסוף נתוני האימון
קודם צריך ליצור מערך נתונים לאימון של תמונות עם תוויות. חשוב לזכור את ההנחיות הבאות:
התמונות צריכות להיות באחד מהפורמטים הבאים: JPEG, PNG, GIF, BMP, ICO.
כל תמונה צריכה להיות בגודל של עד 30MB. שימו לב: AutoML Vision Edge מקטין את רוב התמונות במהלך העיבוד המקדים, ולכן בדרך כלל אין שיפור בדיוק כשמספקים תמונות ברזולוציה גבוהה מאוד.
כדאי לכלול לפחות 10 דוגמאות לכל תווית, ועדיף 100 דוגמאות או יותר.
מומלץ לכלול כמה זוויות צילום, רזולוציות ורקעים לכל תווית.
נתוני האימון צריכים להיות דומים ככל האפשר לנתונים שעליהם יתבססו התחזיות. לדוגמה, אם תרחיש השימוש שלכם כולל תמונות מטושטשות ברזולוציה נמוכה (למשל, ממצלמת אבטחה), נתוני האימון צריכים לכלול תמונות מטושטשות ברזולוציה נמוכה.
המודלים שנוצרים על ידי AutoML Vision Edge מותאמים לתמונות של אובייקטים בעולם האמיתי. יכול להיות שהם לא יתאימו לצילומי רנטגן, לציורים ידניים, למסמכים סרוקים, לקבלות וכו'.
בנוסף, המודלים בדרך כלל לא יכולים לחזות תוויות שבני אדם לא יכולים להקצות. לכן, אם אדם לא יכול להקצות תוויות על ידי התבוננות בתמונה למשך שנייה או שתיים, סביר להניח שגם המודל לא יוכל לעשות זאת.
אחרי שהתמונות לאימון מוכנות, צריך להכין אותן לייבוא ל-Firebase. יש שלוש אפשרויות:
אפשרות 1: ארכיון zip מובנה
כדאי לארגן את תמונות האימון בספריות, כשכל אחת מהן נקראת על שם תווית ומכילה תמונות שמהוות דוגמאות לתווית הזו. לאחר מכן, דוחסים את מבנה הספרייה לארכיון ZIP.
שמות התיקיות בארכיון ה-ZIP הזה יכולים להיות באורך של עד 32 תווים מסוג ASCII, ויכולים לכלול רק תווים אלפאנומריים ואת התו קו תחתון (_
).
לדוגמה:
my_training_data.zip |____accordion | |____001.jpg | |____002.jpg | |____003.jpg |____bass_guitar | |____hofner.gif | |____p-bass.png |____clavier |____well-tempered.jpg |____well-tempered (1).jpg |____well-tempered (2).jpg
אפשרות 2: Cloud Storage עם אינדקס CSV
מעלים את תמונות האימון אל Google Cloud Storage ומכינים קובץ CSV עם רשימה של כתובות ה-URL של כל תמונה, ואם רוצים, גם את התוויות הנכונות של כל תמונה. האפשרות הזו שימושית כשמשתמשים במערכי נתונים גדולים מאוד.
לדוגמה, מעלים את התמונות אל Cloud Storage ומכינים קובץ CSV כמו זה שבהמשך:
gs://your-training-data-bucket/001.jpg,accordion gs://your-training-data-bucket/002.jpg,accordion gs://your-training-data-bucket/003.jpg,accordion gs://your-training-data-bucket/hofner.gif,bass_guitar gs://your-training-data-bucket/p-bass.png,bass_guitar gs://your-training-data-bucket/well-tempered.jpg,clavier gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier
התמונות צריכות להיות מאוחסנות בקטגוריית אחסון שהיא חלק מפרויקט Firebase התואם Google Cloud.
במאמר הכנת נתוני האימון במסמכי התיעוד של Cloud AutoML Vision יש מידע נוסף על הכנת קובץ ה-CSV.
אפשרות 3: תמונות ללא תיאור
אחרי שמעלים את תמונות האימון ל-Firebase Console, צריך להוסיף להן תוויות. אפשר להוסיף תוויות לכל תמונה בנפרד או להעלות קובץ ZIP לא מובנה. הסבר מופיע בשלב הבא.
2. אימון המודל
לאחר מכן, מאמנים מודל באמצעות התמונות:
פותחים את הדף Vision Datasets במסוף Google Cloud. כשמתבקשים, בוחרים את הפרויקט.
לוחצים על New dataset (מערך נתונים חדש), נותנים שם למערך הנתונים, בוחרים את סוג המודל שרוצים לאמן ולוחצים על Create dataset (יצירת מערך נתונים).
בכרטיסייה ייבוא של מערך הנתונים, מעלים ארכיון ZIP של תמונות האימון או קובץ CSV שמכיל את Cloud Storage המיקומים שאליהם העליתם את התמונות. איך מרכיבים את נתוני האימון
אחרי שמשימת הייבוא מסתיימת, משתמשים בכרטיסייה תמונות כדי לאמת את נתוני האימון ולתייג תמונות שלא תויגו.
בכרטיסייה Train (אימון), לוחצים על Start training (התחלת האימון).
נותנים שם למודל ובוחרים את סוג המודל Edge.
מגדירים את הגדרות האימון הבאות, שקובעות את הביצועים של המודל שנוצר:
אופטימיזציה של המודל ל... הגדרת המודל שרוצים להשתמש בו. אתם יכולים לאמן מודלים קטנים יותר ומהירים יותר אם חשוב לכם שהחבילה תהיה קטנה או שההשהיה תהיה נמוכה, או לאמן מודלים גדולים יותר ואיטיים יותר אם חשוב לכם שהדיוק יהיה גבוה. תקציב שעות שימוש בצומת הזמן המקסימלי, בשעות מחשוב, שיוקדש לאימון המודל. בדרך כלל, ככל שזמן האימון ארוך יותר, המודל מדויק יותר.
שימו לב: יכול להיות שהאימון יושלם לפני הזמן שצוין, אם המערכת תקבע שהמודל עבר אופטימיזציה ואימון נוסף לא ישפר את הדיוק. החיוב הוא רק על השעות שבהן נעשה שימוש בפועל.
זמני אימון אופייניים קבוצות קטנות מאוד שעה אחת 500 תמונות שעתיים 1,000 תמונות 3 שעות 5,000 תמונות 6 שעות 10,000 תמונות 7 שעות 50,000 תמונות 11 שעות 100,000 תמונות 13 שעות 1,000,000 תמונות 18 שעות
3. הערכת המודל
אחרי שהאימון יסתיים, תוכלו ללחוץ על הכרטיסייה הערכה כדי לראות את מדדי הביצועים של המודל.
אחד השימושים החשובים בדף הזה הוא קביעת סף הביטחון שמתאים ביותר למודל שלכם. סף המהימנות הוא רמת המהימנות המינימלית שצריכה להיות למודל כדי להקצות תווית לתמונה. אם מזיזים את הסליידר של סף מהימנות, אפשר לראות איך ספים שונים משפיעים על הביצועים של המודל. ביצועי המודל נמדדים באמצעות שני מדדים: דיוק והחזרה.
בהקשר של סיווג תמונות, דיוק הוא היחס בין מספר התמונות שסומנו בצורה נכונה לבין מספר התמונות שהמודל סימן בהינתן הסף שנבחר. כשמודל הוא בעל דיוק גבוה, הוא מקצה תוויות בצורה שגויה בתדירות נמוכה יותר (פחות תוצאות חיוביות שגויות).
היזכרות היא היחס בין מספר התמונות שתויגו בצורה נכונה לבין מספר התמונות שהכילו תוכן שהמודל היה אמור לתייג. כשמודל מסוים כולל רמת דיוק גבוהה, הוא נכשל בהקצאת תווית כלשהי בתדירות נמוכה יותר (פחות תוצאות שליליות שגויות).
ההחלטה אם לבצע אופטימיזציה לדיוק או לזיכרון תלויה בתרחיש השימוש. מידע נוסף זמין במדריך למתחילים בנושא AutoML Vision ובמדריך ל-ML כוללני – AutoML.
אחרי שתמצאו סף מהימנות שמניב מדדים שנוח לכם איתם, כדאי לרשום אותו. תשתמשו בסף המהימנות הזה כדי להגדיר את המודל באפליקציה שלכם. (אפשר להשתמש בכלי הזה בכל שלב כדי לקבל ערך סף מתאים).
4. פרסום או הורדה של המודל
אם אתם מרוצים מביצועי המודל ורוצים להשתמש בו באפליקציה, יש לכם שלוש אפשרויות, ואתם יכולים לבחור כל שילוב ביניהן: פריסת המודל לחיזוי אונליין, פרסום המודל ב-Firebase או הורדת המודל וצירוף שלו לאפליקציה.
פריסת המודל
בכרטיסייה בדיקה ושימוש של מערך הנתונים, אפשר לפרוס את המודל לחיזוי אונליין, שמריץ את המודל בענן. האפשרות הזו מוסברת במסמכי Cloud AutoML. המסמכים באתר הזה מתייחסים לשתי האפשרויות הנותרות.
פרסום המודל
כשמפרסמים את המודל ב-Firebase, אפשר לעדכן אותו בלי לשחרר גרסה חדשה של האפליקציה, ואפשר להשתמש ב-Remote Config וב-A/B Testing כדי להציג באופן דינמי מודלים שונים לקבוצות שונות של משתמשים.
אם בוחרים לספק את המודל רק על ידי אירוח שלו ב-Firebase, ולא לצרף אותו לאפליקציה, אפשר להקטין את גודל ההורדה הראשוני של האפליקציה. עם זאת, חשוב לזכור שאם המודל לא מצורף לאפליקציה, כל הפונקציות שקשורות למודל לא יהיו זמינות עד שהאפליקציה תוריד את המודל בפעם הראשונה.
כדי לפרסם את המודל, אפשר להשתמש באחת משתי שיטות:
- מורידים את מודל TF Lite מדף Test & use (בדיקה ושימוש) של מערך הנתונים במסוף Google Cloud, ואז מעלים את המודל לדף Custom model (מודל בהתאמה אישית) במסוף Firebase. זו בדרך כלל הדרך הכי קלה לפרסם מודל יחיד.
- מפרסמים את המודל ישירות מפרויקט Google Cloud ב-Firebase באמצעות Admin SDK. אפשר להשתמש בשיטה הזו כדי לפרסם כמה מודלים בבת אחת או כדי ליצור צינורות אוטומטיים לפרסום.
כדי לפרסם את המודל באמצעות model management API של Admin SDK:
מפרסמים את המודל.
צריך לציין את מזהה המשאב של המודל, שהוא מחרוזת שנראית כמו בדוגמה הבאה:
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
מספר הפרויקט של קטגוריית Cloud Storage שמכילה את המודל. יכול להיות שזה פרויקט Firebase או פרויקט אחר של Google Cloud. אפשר למצוא את הערך הזה בדף ההגדרות של מסוף Firebase או במרכז הבקרה של מסוף Google Cloud. MODEL_ID
המזהה של המודל, שקיבלתם מ-AutoML Cloud API. Python
# First, import and initialize the SDK. # Get a reference to the AutoML model source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format( # See above for information on these values. project_number, model_id )) # Create the model object tflite_format = ml.TFLiteFormat(model_source=source) model = ml.Model( display_name="example_model", # This is the name you will use from your app to load the model. tags=["examples"], # Optional tags for easier management. model_format=tflite_format) # Add the model to your Firebase project and publish it new_model = ml.create_model(model) new_model.wait_for_unlocked() ml.publish_model(new_model.model_id)
Node.js
// First, import and initialize the SDK. (async () => { // Get a reference to the AutoML model. See above for information on these // values. const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`; // Create the model object and add the model to your Firebase project. const model = await ml.createModel({ displayName: 'example_model', // This is the name you use from your app to load the model. tags: ['examples'], // Optional tags for easier management. tfliteModel: { automlModel: automlModel }, }); // Wait for the model to be ready. await model.waitForUnlocked(); // Publish the model. await ml.publishModel(model.modelId); process.exit(); })().catch(console.error);
הורדה של המודל וצירוף שלו לאפליקציה
אם תצרפו את המודל לאפליקציה, תוכלו לוודא שתכונות ה-ML של האפליקציה ימשיכו לפעול גם אם המודל שמתארח ב-Firebase לא יהיה זמין.
אם תפרסמו את המודל ותצרפו אותו לאפליקציה, האפליקציה תשתמש בגרסה העדכנית ביותר שזמינה.
כדי להוריד את המודל, לוחצים על TF Lite בדף Test & use (בדיקה ושימוש) של מערך הנתונים.
השלבים הבאים
אחרי שמפרסמים או מורידים את המודל, אפשר ללמוד איך להשתמש בו באפליקציות ל-iOS+ ול-Android.