אימון מודל זיהוי אובייקטים באמצעות AutoML Vision Edge

מודל לזיהוי אובייקטים דומה למודל להוספת תוויות לתמונות, אבל במקום להקצות תוויות לתמונות שלמות, הוא מקצה תוויות לאזורים בתמונות. אתם יכולים להשתמש במודלים של זיהוי אובייקטים כדי לזהות ולאתר אובייקטים בתמונה, או כדי לעקוב אחרי תנועות של אובייקט בסדרה של תמונות.

כדי לאמן מודל לזיהוי אובייקטים, מספקים ל-AutoML Vision Edge קבוצה של תמונות עם תוויות אובייקטים ותיחום אובייקטים תואמים. ‫AutoML Vision Edge משתמש במערך הנתונים הזה כדי לאמן מודל חדש בענן, שאפשר להשתמש בו לזיהוי אובייקטים במכשיר.

לפני שמתחילים

1. איסוף נתוני האימון

קודם צריך ליצור מערך נתונים לאימון של תמונות עם תוויות. חשוב לזכור את ההנחיות הבאות:

  • התמונות צריכות להיות באחד מהפורמטים הבאים: JPEG, ‏ PNG, ‏ GIF, ‏ BMP, ‏ ICO.

  • כל תמונה צריכה להיות בגודל של עד 30MB. שימו לב: AutoML Vision Edge מקטין את רוב התמונות במהלך העיבוד המקדים, ולכן בדרך כלל אין שיפור בדיוק כשמספקים תמונות ברזולוציה גבוהה מאוד.

  • כדאי לכלול לפחות 10 דוגמאות לכל תווית, ועדיף 100 דוגמאות או יותר.

  • מומלץ לכלול כמה זוויות צילום, רזולוציות ורקעים לכל תווית.

  • נתוני האימון צריכים להיות דומים ככל האפשר לנתונים שעליהם יתבססו התחזיות. לדוגמה, אם תרחיש השימוש שלכם כולל תמונות מטושטשות ברזולוציה נמוכה (למשל, ממצלמת אבטחה), נתוני האימון צריכים לכלול תמונות מטושטשות ברזולוציה נמוכה.

  • המודלים שנוצרים על ידי AutoML Vision Edge מותאמים לתמונות של אובייקטים בעולם האמיתי. יכול להיות שהם לא יתאימו לצילומי רנטגן, לציורים ידניים, למסמכים סרוקים, לקבלות וכו'.

    בנוסף, המודלים בדרך כלל לא יכולים לחזות תוויות שבני אדם לא יכולים להקצות. לכן, אם אדם לא יכול להקצות תוויות על ידי התבוננות בתמונה למשך שנייה או שתיים, סביר להניח שגם המודל לא יוכל לעשות זאת.

אחרי שהתמונות לאימון מוכנות, צריך להכין אותן לייבוא אל Google Cloud. תוכל להגדיר אחת משתי אפשרויות:

אפשרות 1: Cloud Storage עם אינדקס CSV

מעלים את תמונות האימון אל Google Cloud Storage ומכינים קובץ CSV עם כתובת ה-URL של כל תמונה, ואם רוצים, גם את התוויות הנכונות של האובייקטים ואת האזורים התוחמים של כל תמונה. האפשרות הזו שימושית כשמשתמשים במערכי נתונים גדולים.

לדוגמה, מעלים את התמונות אל Cloud Storage ומכינים קובץ CSV כמו זה שבהמשך:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

תיבות תוחמות של אובייקטים מצוינות כקואורדינטות יחסיות בתמונה. הנחיות לעיצוב קובץ CSV של נתוני אימון

התמונות צריכות להיות מאוחסנות בקטגוריית אחסון שנמצאת באזור us-central1 ושייכת לפרויקט Google Cloud התואם בפרויקט Firebase.

אפשרות 2: תמונות ללא תווית

אחרי שמעלים את התמונות לאימון, אפשר להוסיף להן תוויות ולשרטט את הגבולות של האובייקטים במסוף Google Cloud. האפשרות הזו מומלצת רק למערכי נתונים קטנים. הסבר מופיע בשלב הבא.

2. אימון המודל

לאחר מכן, מאמנים מודל באמצעות התמונות:

  1. פותחים את הדף Vision Datasets במסוף Google Cloud. כשמתבקשים, בוחרים את הפרויקט.

  2. לוחצים על New dataset (מערך נתונים חדש), נותנים שם למערך הנתונים, בוחרים את סוג המודל שרוצים לאמן ולוחצים על Create dataset (יצירת מערך נתונים).

  3. בכרטיסייה ייבוא של מערך הנתונים, מעלים את תמונות האימון, ארכיון ZIP של תמונות האימון או קובץ CSV שמכיל את המיקומים שאליהם העליתם את התמונות.Cloud Storage איך מרכיבים את נתוני האימון

  4. אחרי שמשימת הייבוא מסתיימת, משתמשים בכרטיסייה תמונות כדי לאמת את נתוני האימון.

  5. אם לא העליתם קובץ CSV, לכל תמונה, ציירו תיבות תוחמות סביב האובייקטים שאתם רוצים לזהות ותייגו כל אובייקט.

  6. בכרטיסייה Train (אימון), לוחצים על Start training (התחלת האימון).

    1. נותנים שם למודל ובוחרים את סוג המודל Edge.

    2. מגדירים את הגדרות האימון הבאות, שקובעות את הביצועים של המודל שנוצר:

      אופטימיזציה של המודל ל... הגדרת המודל שרוצים להשתמש בו. אתם יכולים לאמן מודלים קטנים יותר ומהירים יותר אם חשוב לכם שהחבילה תהיה קטנה או שההשהיה תהיה נמוכה, או לאמן מודלים גדולים יותר ואיטיים יותר אם חשוב לכם שהדיוק יהיה גבוה.
      תקציב שעות שימוש בצומת

      הזמן המקסימלי, בשעות מחשוב, שיוקדש לאימון המודל. בדרך כלל, ככל שזמן האימון ארוך יותר, המודל מדויק יותר.

      שימו לב: יכול להיות שהאימון יושלם לפני הזמן שצוין, אם המערכת תקבע שהמודל עבר אופטימיזציה ואימון נוסף לא ישפר את הדיוק. החיוב הוא רק על השעות שבהן נעשה שימוש בפועל.

      זמני אימון אופייניים
      קבוצות קטנות מאודשעה אחת
      ‫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:

  1. התקנה והפעלה של ה-SDK

  2. מפרסמים את המודל.

    צריך לציין את מזהה המשאב של המודל, שהוא מחרוזת שנראית כמו בדוגמה הבאה:

    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.