אימון מודל לתיוג תמונות באמצעות AutoML Vision Edge

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

AutoML Vision Edge הוא שירות של Google Cloud. השימוש בשירות כפוף להסכם הרישיון של Google Cloud Platform ולתנאים הספציפיים לשירות, והחיוב מתבצע בהתאם. מידע על החיוב זמין במאמר AutoML תמחור הדף הזה.

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

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

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

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

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

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

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

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

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

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

כשתמונות האימון מוכנות, כדאי להכין אותן לייבוא אל 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 מסמכי תיעוד בנושא הראייה לקבלת מידע נוסף על הכנת קובץ ה-CSV.

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

אחרי ההעלאה, מסמנים את קובצי האימון במסוף Firebase, בנפרד או בקובץ zip לא מובנה. יש הסבר בשלב הבא.

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

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

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

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

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

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

  5. בכרטיסייה אימון, לוחצים על התחלת האימון.

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

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

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

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

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

      זמני הדרכה אופייניים
      קבוצות קטנות מאודשעה אחת
      500 תמונותשעתיים
      1,000 תמונות3 שעות
      5,000 תמונות6 שעות
      10,000 תמונות7 שעות
      50,000 תמונות11 שעות
      100,000 תמונות13 שעות
      1,000,000 תמונות18 שעות

3. הערכת המודל

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

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

בהקשר של סיווג תמונות, precision הוא היחס בין המספר של תמונות שתויגו בצורה נכונה בהתאם למספר התמונות שהמודל נתן להם תווית בהתאם לסף שנבחר. כאשר לדגם יש רמת דיוק גבוהה, הוא מקצה תוויות באופן שגוי בתדירות נמוכה יותר (פחות תוצאות חיוביות שגויות).

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

הבחירה אם לבצע אופטימיזציה לשיפור הדיוק או לשיפור הזכירה תלויה בתרחיש לדוגמה שלכם. צפייה AutoML Vision Plannings' המדריך מדריך כוללני ללמידת מכונה – AutoML מידע נוסף.

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

4. פרסום או הורדה של המודל

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

פריסת המודל

בכרטיסייה Test & use של מערך הנתונים, אפשר לפרוס את המודל לחיזוי אונליין, שבו המודל פועל בענן. אפשרות זו מפורטת במסמכי העזרה של Cloud AutoML. המסמכים באתר הזה מטפלים בשתי האפשרויות הנותרות.

פרסום המודל

אם מפרסמים את המודל ב-Firebase, אפשר לעדכן אותו בלי לפרסם אותו גרסת אפליקציה חדשה, ואפשר להשתמש ב-Remote Config וב-A/B Testing כדי להציג מודלים שונים באופן דינמי לקבוצות שונות של משתמשים.

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

כדי לפרסם את המודל, אפשר להשתמש באחת משתי השיטות הבאות:

  • מורידים את מודל TF Lite מהדף Test & use של מערך הנתונים במסוף Google Cloud, ולאחר מכן מעלים את המודל לדף Custom model במסוף Firebase. בדרך כלל זו הדרך הקלה ביותר לפרסם מודל יחיד.
  • מפרסמים את המודל ישירות מהפרויקט Google Cloud ב-Firebase באמצעות Admin SDK. אפשר להשתמש בשיטה הזו כדי לפרסם כמה מודלים בבת אחת, או כדי ליצור צינורות עיבוד נתונים אוטומטיים לפרסום.

כדי לפרסם את המודל באמצעות ה-API לניהול מודלים של ה-Admin SDK:

  1. מתקינים ומפעילים את ה-SDK.

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

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

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER מספר הפרויקט של הקטגוריה Cloud Storage שמכילה את המודל. יכול להיות שזה פרויקט Firebase או פרויקט Google Cloud אחר. אפשר למצוא את הערך הזה בדף Settings (הגדרות) מסוף 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);
    

הורדה של המודל ויצירת חבילה עם האפליקציה

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

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

כדי להוריד את המודל, לוחצים על TF Lite בתפריט Test & שימוש.

השלבים הבאים

עכשיו, אחרי שפרסמתם או הורדתם את המודל, אתם יכולים לקרוא איך להשתמש במודל. ב-iOS+ אפליקציות ל-Android.