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

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

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

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

  • אם עדיין אין לכם פרויקט Firebase, אתם צריכים ליצור פרויקט מסוף Firebase.

  • להכיר את ההנחיות שמוצגות Inclusive ML guide – AutoML

  • אם אתם רוצים רק לנסות את 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. בכרטיסייה Import של מערך הנתונים, מעלים את התמונות לצורך אימון, קובץ ארכיון zip של התמונות לצורך אימון או קובץ CSV שמכיל את המיקומים Cloud Storage שהעליתם אותם אליהם. צפייה להרכיב נתוני אימון.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

פריסת המודל

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

פרסום המודל

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

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

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

  • מורידים את מודל TF Lite מהכלי Test & להשתמש במסוף Google Cloud, ואז להעלות את המודל דף מודל מותאם אישית במסוף 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 & שימוש.

השלבים הבאים

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