כדי לאמן מודל לתיוג תמונות, צריך לספק ל-AutoML Vision Edge קבוצה של תמונות ותוויות תואמות. מערכת AutoML Vision Edge משתמשת בקבוצת הנתונים הזו כדי לאמן מודל חדש בענן, שתוכלו להשתמש בו לתיוג תמונות במכשיר באפליקציה שלכם. (מידע כללי על התכונה מופיע בקטע סקירה כללית).
AutoML Vision Edge הוא שירות של Google Cloud. השימוש בשירות כפוף להסכם הרישיון של Google Cloud Platform ולתנאים הספציפיים לשירות, והחיוב מתבצע בהתאם. למידע על חיוב, אפשר לעיין בדף Pricing של 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
התמונות צריכות להיות מאוחסנות בקטגוריה (bucket) שנכללת בפרויקט Google Cloud התואם של פרויקט Firebase.
מידע נוסף על הכנת קובץ ה-CSV זמין במאמר הכנת נתוני האימון במסמכי העזרה של Cloud AutoML Vision.
אפשרות 3: תמונות ללא תוויות
אחרי ההעלאה, מסמנים את קובצי האימון במסוף Firebase, בנפרד או בקובץ zip לא מובנה. יש הסבר בשלב הבא.
2. אימון המודל
בשלב הבא, מארגנים אימון של מודל באמצעות התמונות:
פותחים את הדף Vision Datasets במסוף Google Cloud. בוחרים את הפרויקט הרצוי כשמופיעה הבקשה.
לוחצים על New dataset, נותנים שם למערך הנתונים, בוחרים את סוג המודל שרוצים לאמן ולוחצים על Create dataset.
בכרטיסייה Import של מערך הנתונים, מעלים ארכיון zip של תמונות האימון או קובץ CSV שמכיל את המיקומים Cloud Storage שאליהם העליתם אותן. איך אוספים את נתוני האימון
אחרי שתהליך הייבוא יושלם, תוכלו להשתמש בכרטיסייה תמונות כדי לאמת את נתוני האימון ולתייג תמונות ללא תוויות.
בכרטיסייה אימון, לוחצים על התחלת האימון.
נותנים שם למודל ובוחרים את סוג המודל Edge.
מגדירים את הגדרות האימון הבאות, שקובעות את הביצועים של המודל שנוצר:
אופטימיזציה של המודל לצורך... הגדרת המודל שבה רוצים להשתמש. אפשר לאמן מודלים מהירים וקטנים יותר כשחשובים זמן אחזור קצר או חבילות קטנות, או מודלים איטיים וגדולים יותר כשהדיוק הוא הדבר החשוב ביותר. תקציב שעות שימוש בצומת משך הזמן המקסימלי, בשעות מחשוב, להדרכת המודל. בדרך כלל, ככל שמשך האימון ארוך יותר, המודל יהיה מדויק יותר.
לתשומת ליבכם: האימון עשוי להסתיים תוך פחות מהזמן שצוין אם המערכת קובעת שהמודל עבר אופטימיזציה ושאימון נוסף לא ישפר את הדיוק. אתם מחויבים רק על השעות שבהן השתמשתם בפועל.
זמני הדרכה אופייניים קבוצות קטנות מאוד שעה אחת 500 תמונות שעתיים 1,000 תמונות 3 שעות 5,000 תמונות 6 שעות 10,000 תמונות 7 שעות 50,000 תמונות 11 שעות 100,000 תמונות 13 שעות 1,000,000 תמונות 18 שעות
3. הערכת המודל
בסיום האימון, אפשר ללחוץ על הכרטיסייה Evaluate כדי לראות את מדדי הביצועים של המודל.
אחת מהשימושים החשובים בדף הזה היא לקבוע את סף האמון שמתאים ביותר למודל שלכם. סף האמון הוא רמת האמון המינימלית שהמודל צריך כדי להקצות תווית לתמונה. כשמזיזים את פס ההזזה של Confidence threshold אפשר לראות איך ערכי סף שונים משפיעים על ביצועי המודל. ביצועי המודל נמדדים באמצעות שני מדדים: דיוק ורגישות.
בהקשר של סיווג תמונות, הדיוק הוא היחס בין מספר התמונות שסומנו בצורה נכונה לבין מספר התמונות שהמודל סימן בהתאם לסף שנבחר. כאשר לדגם יש רמת דיוק גבוהה, הוא מקצה תוויות באופן שגוי בתדירות נמוכה יותר (פחות תוצאות חיוביות שגויות).
החזר הוא היחס בין מספר התמונות שסומנו בצורה נכונה לבין מספר התמונות שהכילו תוכן שהמודל היה אמור לתייג. כאשר למודלים יש רמת זיכרון גבוהה, הם לא מקצים תווית לפחות מקרים (פחות תוצאות שליליות שגויות).
הבחירה אם לבצע אופטימיזציה לשיפור הדיוק או לשיפור הזכירה תלויה בתרחיש לדוגמה שלכם. למידע נוסף, עיינו במדריך למתחילים ב-AutoML Vision ובמדריך ל-ML כוללני – AutoML.
כשמוצאים ערך סף ביטחון שמניב מדדים שמתאימים לכם, כדאי לרשום אותו. תשתמשו בערך הסף הזה כדי להגדיר את המודל באפליקציה. (אפשר להשתמש בכלי הזה בכל שלב כדי לקבל ערך סף מתאים).
4. פרסום או הורדה של המודל
אם אתם מרוצים מהביצועים של המודל ואתם רוצים להשתמש בו באפליקציה, יש לכם שלוש אפשרויות, שתוכלו לבחור כל שילוב מהן: לפרוס את המודל לחיזוי אונליין, לפרסם את המודל ב-Firebase או להוריד את המודל ולצרף אותו לאפליקציה.
פריסת המודל
בכרטיסייה Test & use של מערך הנתונים, אפשר לפרוס את המודל לחיזוי אונליין, שבו המודל פועל בענן. אפשרות זו מפורטת במסמכים של 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 בדף בדיקה ושימוש של מערך הנתונים.
השלבים הבאים
אחרי שפרסמתם או הורדתם את המודל, תוכלו ללמוד איך להשתמש בו באפליקציות ל-iOS+ ול-Android.