העברת למידה עבור דגמי זיהוי אובייקטים של TensorFlow באמזון SageMaker

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

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

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

כיצד להשתמש באלגוריתם זיהוי האובייקטים החדש של TensorFlow

סעיף זה מתאר כיצד להשתמש באלגוריתם זיהוי האובייקטים של TensorFlow עם SageMaker Python SDK. למידע על אופן השימוש בו מממשק המשתמש של Studio, ראה SageMaker JumpStart.

האלגוריתם תומך בלמידה של העברה עבור המודלים שהוכשרו מראש המפורטים ב דגמי TensorFlow. כל דגם מזוהה באמצעות ייחודי model_id. הקוד הבא מראה כיצד לכוונן עדין דגם ResNet50 V1 FPN המזוהה על ידי model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 על מערך אימון מותאם אישית. לכל אחד model_id, על מנת להשיק משרת הדרכה של SageMaker דרך ה מעריך מחלקה של SageMaker Python SDK, עליך להביא את ה-URI של התמונה של Docker, ה-URI של סקריפט האימון ו-URI המודל שעבר הכשרה מראש דרך פונקציות השירות הניתנות ב-SageMaker. תסריט האימון URI מכיל את כל הקוד הדרוש לעיבוד נתונים, טעינת המודל שהוכשר מראש, אימון מודלים ושמירת המודל המאומן להסקת מסקנות. ה-URI של המודל שהוכשר מראש מכיל את הגדרת ארכיטקטורת המודל שהוכשר מראש ואת פרמטרי המודל. שימו לב שה-URI של התמונה של Docker ו-URI של סקריפט האימון זהים עבור כל המודלים לזיהוי אובייקטים של TensorFlow. URI המודל שהוכשר מראש הוא ספציפי לדגם המסוים. כדורי הדגם המאומנים מראש הורדו מראש מ-TensorFlow ונשמרו עם חתימת הדגם המתאימה ב- שירות אחסון פשוט של אמזון (Amazon S3) דליים, כך שעבודת ההדרכה פועלת בבידוד רשת. ראה את הקוד הבא:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

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

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

לאחר מכן, להעברת למידה במערך הנתונים המותאם אישית שלך, ייתכן שיהיה עליך לשנות את ערכי ברירת המחדל של ההיפרפרמטרים של האימון, המפורטים ב- היפרפרמטרים. אתה יכול להביא מילון Python של ההיפרפרמטרים האלה עם ערכי ברירת המחדל שלהם על ידי קריאה hyperparameters.retrieve_default, עדכן אותם לפי הצורך ולאחר מכן העביר אותם לכיתה אומד. שים לב שערכי ברירת המחדל של חלק מפרמטרי ההיפר שונים עבור דגמים שונים. עבור דגמים גדולים, גודל האצווה המוגדר כברירת מחדל קטן יותר train_only_top_layer היפרפרמטר מוגדר ל True. ההיפרפרמטר train_only_top_layer מגדיר אילו פרמטרים של הדגם משתנים במהלך תהליך הכוונון העדין. אם train_only_top_layer is True, פרמטרים של שכבות הסיווג משתנים ושאר הפרמטרים נשארים קבועים במהלך תהליך הכוונון העדין. מצד שני, אם train_only_top_layer is False, כל הפרמטרים של הדגם מכוונים עדין. ראה את הקוד הבא:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

אנו מספקים את מערך הנתונים של PennFudanPed בתור מערך נתונים ברירת מחדל לכוונון עדין של המודלים. מערך הנתונים כולל תמונות של הולכי רגל. הקוד הבא מספק את מערך ההדרכה המוגדר כברירת מחדל המתארח בדלי S3:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

לבסוף, כדי להשיק את עבודת ההדרכה של SageMaker לכוונון עדין של הדגם, התקשר .fit על האובייקט של כיתת הערכה, תוך העברת מיקום S3 של מערך ההדרכה:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

ממשק קלט/פלט עבור אלגוריתם זיהוי אובייקטים של TensorFlow

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

  • קֶלֶט – ספרייה עם תמונות של ספריית משנה וקובץ annotations.json.
  • תְפוּקָה - יש שתי יציאות. ראשית הוא מודל מכוונן עדין, שניתן לפרוס להסקת מסקנות או לאמן נוסף באמצעות אימון מצטבר. שנית הוא קובץ אשר ממפה אינדקסים של מחלקות לתוויות מחלקות; זה נשמר יחד עם הדגם.

ספריית הקלט צריכה להיראות כמו הדוגמה הבאה:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

אל האני annotations.json הקובץ צריך לכלול מידע עבור bounding_boxes ותוויות הכיתה שלהם. צריך להיות לו מילון עם המקשים "images" ו "annotations". הערך עבור ה "images" המפתח צריך להיות רשימה של ערכים, אחד עבור כל תמונה של הטופס {"file_name": image_name, "height": height, "width": width, "id": image_id}. ערך ה- "annotations" המפתח צריך להיות רשימה של ערכים, אחד עבור כל תיבה תוחמת של הטופס {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

הסקה עם אלגוריתם זיהוי אובייקטים של TensorFlow

ניתן לארח את הדגמים שנוצרו להסקת מסקנות ולתמוך בפורמטים מקודדים של .jpg, .jpeg ו-.png. application/x-image סוג תוכן. גודל תמונת הקלט משתנה באופן אוטומטי. הפלט מכיל את התיבות, השיעורים החזויים והציונים עבור כל חיזוי. מודל זיהוי האובייקטים של TensorFlow מעבד תמונה בודדת לכל בקשה ומוציא רק שורה אחת ב-JSON. להלן דוגמה לתגובה ב-JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept מוגדר application/json, אז המודל מציג רק תיבות, מחלקות וציונים חזויים. לפרטים נוספים על אימון והסקת מסקנות, עיין במחברת לדוגמה היכרות עם SageMaker TensorFlow - זיהוי אובייקטים.

השתמש באלגוריתמים מובנים של SageMaker דרך ממשק המשתמש של JumpStart

אתה יכול גם להשתמש בזיהוי אובייקטים של SageMaker TensorFlow ובכל אחד מהאלגוריתמים המובנים האחרים בכמה לחיצות דרך ממשק המשתמש של JumpStart. JumpStart היא תכונה של SageMaker המאפשרת לך לאמן ולפרוס אלגוריתמים מובנים ומודלים מאומנים מראש ממסגרות ML שונות ומרכזי מודלים באמצעות ממשק גרפי. זה גם מאפשר לך לפרוס פתרונות ML מלאים המחברים מודלים של ML ושירותי AWS שונים אחרים כדי לפתור מקרה שימוש ממוקד.

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

כוונן את הדגם המאומן מראש

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

פרוס את הדגם המכוונן

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

סיכום

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

למידע נוסף, בדקו תיעוד ו מחברת דוגמה.


על המחברים

העברת למידה עבור דגמי זיהוי אובייקטים של TensorFlow באמזון SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר Vivek Madan הוא מדען יישומי עם צוות אמזון SageMaker JumpStart. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי באורבנה-שמפיין והיה חוקר פוסט דוקטורט בג'ורג'יה טק. הוא חוקר פעיל בלמידת מכונה ועיצוב אלגוריתמים ופרסם מאמרים בכנסים של EMNLP, ICLR, COLT, FOCS ו-SODA.

העברת למידה עבור דגמי זיהוי אובייקטים של TensorFlow באמזון SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ז'ואאו מורה הוא אדריכל פתרונות AI/ML מומחה בשירותי האינטרנט של אמזון. הוא מתמקד בעיקר במקרים של שימוש ב-NLP ובעזרה ללקוחות לייעל אימון ופריסה של מודל למידה עמוקה. הוא גם חסיד פעיל של פתרונות ML בעלי קוד נמוך וחומרה מתמחה ב-ML.

העברת למידה עבור דגמי זיהוי אובייקטים של TensorFlow באמזון SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר אשיש חתן הוא מדען יישומי בכיר עם אלגוריתמים מובנים של Amazon SageMaker ומסייע בפיתוח אלגוריתמים של למידת מכונה. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי אורבנה שמפיין. הוא חוקר פעיל בלמידת מכונה והסקה סטטיסטית ופרסם מאמרים רבים בכנסים NeurIPS, ICML, ICLR, JMLR, ACL ו-EMNLP.

בול זמן:

עוד מ למידת מכונות AWS