הכנת נתוני אימון של תמונות לסיווג

בדף הזה מוסבר איך להכין נתונים לאימון תמונות לשימוש במערך נתונים של Vertex AI כדי לאמן מודל לסיווג תמונות.

בקטעים הבאים של המטרה מפורטים דרישות הנתונים, קובץ הסכימה של הקלט/פלט והפורמט של קובצי ייבוא הנתונים (JSON Lines ו-CSV) שמוגדרים על ידי הסכימה.

הרשאות

כדי להשתמש בתמונות מקטגוריה של Cloud Storage, צריך להעניק לסוכן השירות של Vertex AI את התפקיד Storage Object Viewer בקטגוריה. סוכן השירות הוא חשבון שירות בניהול Google שמשמש את Vertex AI כדי לגשת לנתונים שלכם בשמכם. הסבר מפורט יותר זמין במאמר סוכני שירות.

סיווג עם תווית אחת

הדרישות לגבי הנתונים

  • נתוני אימון: הפורמטים הבאים של תמונות נתמכים כשמאמנים את המודל. אחרי שה-API של Vertex AI מבצע עיבוד מקדים של התמונות המיובאות, הן משמשות כנתונים לאימון המודל. הגודל המקסימלי של כל קובץ תמונה הוא 30MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • נתוני חיזוי: הפורמטים הבאים של תמונות נתמכים כשמבקשים חיזוי מהמודל (מפעילים שאילתה) גודל הקובץ המקסימלי הוא 1.5MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    שיטות מומלצות לשימוש בנתוני תמונות לאימון מודלים של AutoML

    השיטות המומלצות הבאות רלוונטיות למערכי נתונים שמשמשים לאימון מודלים באמצעות AutoML.

  • מודלים של AutoML מותאמים לתמונות של אובייקטים בעולם האמיתי.
  • נתוני האימון צריכים להיות כמה שיותר קרובים לנתונים שעליהם יתבססו התחזיות. לדוגמה, אם תרצו להשתמש במודל כדי לזהות תמונות מטושטשות ברזולוציה נמוכה (למשל, תמונות ממצלמת אבטחה), נתוני האימון צריכים לכלול תמונות מטושטשות ברזולוציה נמוכה. באופן כללי, כדאי גם לספק כמה זוויות, רזולוציות ורקעים לתמונות האימון.
  • באופן כללי, מודלים של Vertex AI לא יכולים לחזות תוויות שאנשים לא יכולים להקצות. לכן, אם אי אפשר לאמן אדם להקצות תוויות על ידי התבוננות בתמונה למשך שנייה או שתיים, סביר להניח שאי אפשר לאמן את המודל לעשות זאת גם כן.
  • מומלץ להשתמש בכ-1,000 תמונות לאימון לכל תווית. המינימום לכל תווית הוא 10. באופן כללי, כדי לאמן מודלים עם כמה תוויות לכל תמונה צריך יותר דוגמאות לכל תווית, והציונים שמתקבלים קשים יותר לפירוש.
  • המודל פועל בצורה הכי טובה כשיש לכל היותר פי 100 יותר תמונות לתווית הנפוצה ביותר מאשר לתווית הכי פחות נפוצה. מומלץ להסיר תוויות של תדירות נמוכה מאוד.
  • מומלץ לכלול תווית None_of_the_above ותמונות שלא תואמות לאף אחת מהתוויות שהגדרתם. לדוגמה, אם יש לכם מערך נתונים של פרחים, כדאי לכלול בו תמונות של פרחים שלא נכללים בזנים שסימנתם, ולסמן אותם בתווית None_of_the_above (אף אחת מהאפשרויות שלמעלה).

קובץ סכימת YAML

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

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml

קובץ סכימה מלא

title: ImageClassificationSingleLabel
description: >
 Import and export format for importing/exporting images together with
 single-label classification annotation. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotation:
   type: object
   description: Single classification Annotation on the image.
   properties:
     displayName:
       type: string
       description: >
         It will be imported as/exported from AnnotationSpec's display name,
         i.e. the name of the label/class.
     annotationResourceLabels:
       description: Resource labels on the Annotation.
       type: object
       additionalProperties:
         type: string
 dataItemResourceLabels:
   description: Resource labels on the DataItem.
   type: object
   additionalProperties:
     type: string

קבצי קלט

JSON Lines

‫JSON בכל שורה:



{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotation": {
    "displayName": "LABEL",
    "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
   },
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

הערות בשדה:

  • imageGcsUri – שדה החובה היחיד.
  • annotationResourceLabels – יכול להכיל כל מספר של צמדי מפתח/ערך של מחרוזות. צמד המפתח/ערך היחיד ששמור למערכת הוא:
    • ‪"aiplatform.googleapis.com/annotation_set_name" : "value"

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

  • dataItemResourceLabels – יכול להכיל כל מספר של צמדי מפתח/ערך של מחרוזות. צמד המפתח/ערך היחיד ששמור למערכת הוא הבא, שמציין את קבוצת השימוש של למידת מכונה בפריט הנתונים:
    • ‪"aiplatform.googleapis.com/ml_use" : "training/test/validation"

דוגמה ל-JSON Lines – image_classification_single_label.jsonl:



{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotation": {"displayName": "daisy"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotation": {"displayName": "dandelion"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotation": {"displayName": "roses"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotation": {"displayName": "sunflowers"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotation": {"displayName": "tulips"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

פורמט CSV:

[ML_USE],GCS_FILE_PATH,[LABEL]
רשימת העמודות
  • ML_USE (אופציונלי) – למטרות פיצול נתונים במהלך אימון של מודל. אפשר להשתמש בערכים TRAINING,‏ TEST או VALIDATION. מידע נוסף על פיצול נתונים ידני זמין במאמר מידע על פיצולי נתונים למודלים של AutoML.
  • GCS_FILE_PATH – השדה הזה מכיל את ה-URI של Cloud Storage לתמונה. כתובות URI של Cloud Storage הן תלויות רישיות.
  • LABEL (אופציונלי) – התוויות חייבות להתחיל באות ויכולות להכיל רק אותיות, מספרים וקווים תחתונים.

קובץ CSV לדוגמה – image_classification_single_label.csv:

test,gs://bucket/filename1.jpeg,daisy
training,gs://bucket/filename2.gif,dandelion
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers
validation,gs://bucket/filename5.tiff,tulips
...
    

סיווג עם כמה תוויות

הדרישות לגבי הנתונים

  • נתוני אימון: הפורמטים הבאים של תמונות נתמכים כשמאמנים את המודל. אחרי שה-API של Vertex AI מבצע עיבוד מקדים של התמונות המיובאות, הן משמשות כנתונים לאימון המודל. הגודל המקסימלי של כל קובץ תמונה הוא 30MB.
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • נתוני חיזוי: הפורמטים הבאים של תמונות נתמכים כשמבקשים חיזוי מהמודל (מפעילים שאילתה) גודל הקובץ המקסימלי הוא 1.5MB.
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    שיטות מומלצות לשימוש בנתוני תמונות לאימון מודלים של AutoML

    השיטות המומלצות הבאות רלוונטיות למערכי נתונים שמשמשים לאימון מודלים באמצעות AutoML.

  • מודלים של AutoML מותאמים לתמונות של אובייקטים בעולם האמיתי.
  • נתוני האימון צריכים להיות כמה שיותר קרובים לנתונים שעליהם יתבססו התחזיות. לדוגמה, אם תרצו להשתמש במודל כדי לזהות תמונות מטושטשות ברזולוציה נמוכה (למשל, תמונות ממצלמת אבטחה), נתוני האימון צריכים לכלול תמונות מטושטשות ברזולוציה נמוכה. באופן כללי, כדאי גם לספק כמה זוויות, רזולוציות ורקעים לתמונות האימון.
  • באופן כללי, מודלים של Vertex AI לא יכולים לחזות תוויות שאנשים לא יכולים להקצות. לכן, אם אי אפשר לאמן אדם להקצות תוויות על ידי התבוננות בתמונה למשך שנייה או שתיים, סביר להניח שאי אפשר לאמן את המודל לעשות זאת גם כן.
  • מומלץ להשתמש בכ-1,000 תמונות לאימון לכל תווית. המינימום לכל תווית הוא 10. באופן כללי, כדי לאמן מודלים עם כמה תוויות לכל תמונה צריך יותר דוגמאות לכל תווית, והציונים שמתקבלים קשים יותר לפירוש.
  • המודל פועל בצורה הכי טובה כשיש לכל היותר פי 100 יותר תמונות לתווית הנפוצה ביותר מאשר לתווית הכי פחות נפוצה. מומלץ להסיר תוויות של תדירות נמוכה מאוד.
  • מומלץ לכלול תווית None_of_the_above ותמונות שלא תואמות לאף אחת מהתוויות שהגדרתם. לדוגמה, אם יש לכם מערך נתונים של פרחים, כדאי לכלול בו תמונות של פרחים שלא נכללים בזנים שסימנתם, ולסמן אותם בתווית None_of_the_above (אף אחת מהאפשרויות שלמעלה).

קובץ סכימת YAML

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

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_multi_label_io_format_1.0.0.yaml

קובץ סכימה מלא

title: ImageClassificationMultiLabel
description: >
 Import and export format for importing/exporting images together with
 multi-label classification annotations. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotations:
   type: array
   description: Multiple classification Annotations on the image.
   items:
     type: object
     description: Classification annotation.
     properties:
       displayName:
         type: string
         description: >
           It will be imported as/exported from AnnotationSpec's display name,
           i.e. the name of the label/class.
       annotationResourceLabels:
         description: Resource labels on the Annotation.
         type: object
         additionalProperties:
           type: string
 dataItemResourceLabels:
   description: Resource labels on the DataItem.
   type: object
   additionalProperties:
     type: string

קבצי קלט

JSON Lines

‫JSON בכל שורה:


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotations": [
    {
      "displayName": "LABEL1",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "flower_type"
      }
    },
    {
      "displayName": "LABEL2",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "image_shot_type"
      }
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

הערות בשדה:

  • imageGcsUri – שדה החובה היחיד.
  • annotationResourceLabels – יכול להכיל כל מספר של צמדי מפתח/ערך של מחרוזות. צמד המפתח/ערך היחיד ששמור למערכת הוא:
    • ‪"aiplatform.googleapis.com/annotation_set_name" : "value"

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

  • dataItemResourceLabels – יכול להכיל כל מספר של צמדי מפתח/ערך של מחרוזות. צמד המפתח/ערך היחיד ששמור למערכת הוא הבא, שמציין את קבוצת השימוש של למידת מכונה בפריט הנתונים:
    • ‪"aiplatform.googleapis.com/ml_use" : "training/test/validation"

דוגמה ל-JSON Lines – image_classification_multi_label.jsonl:



{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotations": [{"displayName": "daisy"}, {"displayName": "full_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotations": [{"displayName": "dandelion"}, {"displayName": "medium_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotations": [{"displayName": "roses"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotations": [{"displayName": "sunflowers"}, {"displayName": "closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotations": [{"displayName": "tulips"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

פורמט CSV:

[ML_USE],GCS_FILE_PATH,[LABEL1,LABEL2,...LABELn]
רשימת העמודות
  • ML_USE (אופציונלי) – למטרות פיצול נתונים במהלך אימון של מודל. אפשר להשתמש בערכים TRAINING,‏ TEST או VALIDATION. מידע נוסף על פיצול נתונים ידני זמין במאמר מידע על פיצולי נתונים למודלים של AutoML.
  • GCS_FILE_PATH – השדה הזה מכיל את ה-URI של Cloud Storage לתמונה. כתובות URI של Cloud Storage הן תלויות רישיות.
  • LABEL (אופציונלי) – התוויות חייבות להתחיל באות ויכולות להכיל רק אותיות, מספרים וקווים תחתונים.

קובץ CSV לדוגמה – image_classification_multi_label.csv:

test,gs://bucket/filename1.jpeg,daisy,full_shot
training,gs://bucket/filename2.gif,dandelion,medium_shot
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers,closeup
validation,gs://bucket/filename5.tiff,tulips,extreme_closeup
...