צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

צינור הגדלת תמונה עבור Amazon Lookout for Vision

תצפית אמזון לחזון מספק שירות זיהוי אנומליות מבוסס למידת מכונה (ML) לזיהוי תמונות רגילות (כלומר תמונות של אובייקטים לְלֹא פגמים) לעומת תמונות חריגות (כלומר, תמונות של אובייקטים עם פגמים), סוגי חריגות (למשל, חלק חסר), והמיקום של חריגות אלה. לכן, Lookout for Vision פופולרי בקרב לקוחות המחפשים פתרונות אוטומטיים לבדיקת איכות תעשייתית (למשל, איתור מוצרים חריגים). עם זאת, מערכי הנתונים של הלקוחות מתמודדים בדרך כלל עם שתי בעיות:

  1. מספר התמונות עם חריגות עשוי להיות נמוך מאוד וייתכן שלא יגיע למינימום חריגות/פגמים שהוטלו על ידי Lookout for Vision (~20).
  2. ייתכן שלתמונות רגילות אין מספיק גיוון ועלולות לגרום לכישלון הדגם כאשר תנאי הסביבה כגון תאורה משתנים בייצור

כדי להתגבר על הבעיות הללו, פוסט זה מציג צינור הגדלת תמונה שמכוון לשתי הבעיות: הוא מספק דרך ליצור תמונות חריגות סינתטיות על ידי הסרת אובייקטים בתמונות ויוצר תמונות נורמליות נוספות על ידי הצגת הגדלה מבוקרת כגון רעש גאוסי, גוון, רוויה, פיקסל קנה מידה של ערך וכו'. אנו משתמשים ב- imgaug הספרייה להציג הגדלה כדי ליצור תמונות חריגות ונורמליות נוספות עבור הבעיה השנייה. אנו משתמשים אמזון Sagemaker Ground Truth כדי ליצור מסכות להסרת אובייקטים ואת לאמא אלגוריתם להסרת אובייקטים לבעיה הראשונה באמצעות טכניקות של ציור תמונה (הסרת אובייקט).

שאר הפוסט מאורגן באופן הבא. בסעיף 3, אנו מציגים את צינור הגדלת התמונה עבור תמונות רגילות. בסעיף 4, אנו מציגים את צינור הגדלת התמונה עבור תמונות חריגות (המכונה גם יצירת פגמים סינתטיים). סעיף 5 ממחיש את תוצאות האימון של Lookout for Vision באמצעות מערך הנתונים המוגדל. סעיף 6 מדגים כיצד פועל מודל Lookout for Vision המאומן על נתונים סינתטיים כנגד פגמים אמיתיים. בסעיף 7, אנו מדברים על הערכת עלויות עבור פתרון זה. ניתן לגשת לכל הקוד שהשתמשנו עבור הפוסט הזה כאן.

1. סקירת פתרונות

דיאגרמת ML

להלן הדיאגרמה של צינור הגדלת התמונה המוצע עבור אימון מודל לוקליזציה חריגות של Lookout for Vision:

התרשים שלמעלה מתחיל באיסוף סדרה של תמונות (שלב 1). אנו מגדילים את מערך הנתונים על ידי הגדלת התמונות הרגילות (שלב 3) ועל ידי שימוש באלגוריתמים להסרת אובייקטים (שלבים 2, 5-6). לאחר מכן אנו אורזים את הנתונים בפורמט שניתן לצרוך על ידי Amazon Lookout for Vision (שלבים 7-8). לבסוף, בשלב 9, אנו משתמשים בנתונים הארוזים כדי להכשיר מודל לוקליזציה של Lookout for Vision.

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

2. הכנת נתונים

מכאן ועד סוף הפוסט, אנו משתמשים בציבור FICS-PCB: מערך נתונים רב-מודאלי לבדיקה חזותית של לוח מודפס אוטומטי מערך נתונים ברישיון תחת א רישיון Creative Commons Attribution 4.0 בינלאומי (CC BY 4.0). כדי להמחיש את צינור הגדלת התמונה ואת ההדרכה והבדיקות של Lookout for Vision. מערך נתונים זה נועד לתמוך בהערכה של מערכות בדיקה ויזואלית אוטומטיות של PCB. הוא נאסף במעבדת SeCurity and Assurance (SCAN) באוניברסיטת פלורידה. ניתן לגשת אליו כאן.

אנו מתחילים עם ההשערה שהלקוח מספק רק תמונה רגילה אחת של לוח PCB (דגימת s10 PCB) כמערך הנתונים. ניתן לראות זאת באופן הבא:

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

3. הגדלת תמונה לתמונות רגילות

שירות Lookout for Vision דורש לפחות 20 תמונות רגילות ו-20 חריגות לכל סוג פגם. מכיוון שיש רק תמונה רגילה אחת מנתוני הדוגמה, עלינו ליצור תמונות נורמליות יותר באמצעות טכניקות הגדלת תמונה. מנקודת המבט של ML, הזנת תמורות מרובות באמצעות טכניקות הגדלה שונות יכולה לשפר את הדיוק והחוסן של המודל.

נשתמש imgaug להגדלת תמונה של תמונות רגילות. Imgaug היא חבילת python בקוד פתוח המאפשרת לך להגדיל תמונות בניסויי ML.

ראשית, נתקין את imgaug ספרייה ב אמזון SageMaker מחברת.

pip install imgaug

לאחר מכן, נוכל להתקין את חבילת python בשם 'IPyPlot'.

pip install ipyplot

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

import imageio
import imgaug as ia
import imgaug.augmenters as iaa
import ipyplot
input_img = imageio.imread('s10.png')
noise=iaa.AdditiveGaussianNoise(10,40)
input_noise=noise.augment_image(input_img)
contrast=iaa.GammaContrast((0.5, 2.0))
contrast_sig = iaa.SigmoidContrast(gain=(5, 10), cutoff=(0.4, 0.6))
contrast_lin = iaa.LinearContrast((0.6, 0.4))
input_contrast = contrast.augment_image(input_img)
sigmoid_contrast = contrast_sig.augment_image(input_img)
linear_contrast = contrast_lin.augment_image(input_img)
images_list=[input_img, input_contrast,sigmoid_contrast,linear_contrast,input_noise]
labels = ['Original', 'Gamma Contrast','SigmoidContrast','LinearContrast','Gaussian Noise Image']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

4. יצירת פגמים סינתטיים להגדלת תמונות חריגות

בחלק זה, אנו מציגים צינור ליצירת פגמים סינתטיים כדי להגדיל את מספר התמונות עם חריגות במערך הנתונים. שימו לב שבניגוד לסעיף הקודם בו אנו יוצרים דגימות נורמליות חדשות מדגימות רגילות קיימות, כאן אנו יוצרים תמונות חריגות חדשות מדגימות רגילות. זוהי תכונה אטרקטיבית עבור לקוחות שחסרים לחלוטין תמונות מסוג זה במערך הנתונים שלהם, למשל, הסרת רכיב מלוח ה-PCB הרגיל. לצינור יצירת פגמים סינתטיים זה יש שלושה שלבים: ראשית, אנו יוצרים מסכות סינתטיות מתמונות מקור (רגילות) באמצעות Amazon SageMaker Ground Truth. בפוסט זה, אנו מכוונים לסוג פגם ספציפי: רכיב חסר. יצירת מסכות זו מספקת תמונת מסכה וקובץ מניפסט. שנית, יש לשנות את קובץ המניפסט ולהמיר אותו לקובץ קלט עבור נקודת קצה של SageMaker. ושלישית, קובץ הקלט מוקלט לנקודת קצה של Object Removal SageMaker האחראית על הסרת החלקים של התמונה הרגילה המצוינת על ידי המסכה. נקודת קצה זו מספקת את התמונה החריגה המתקבלת.

4.1 צור מסכות פגמים סינתטיים באמצעות Amazon SageMaker Ground Truth

Amazon Sagemaker Ground Truth עבור תיוג נתונים

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

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

לצורך הפוסט הזה, בעבודת התיוג שלנו נסיר באופן מלאכותי עד שלושה רכיבים מלוח ה-PCB: IC, resistor1 וresistor2. לאחר הכניסה לעבודת התיוג כמתווית, ניתן לבחור את שם התווית ולצייר מסיכה מכל צורה סביב הרכיב שברצונכם להסיר מהתמונה כפגם סינטטי. שים לב שאינך יכול לכלול '_' בשם התווית עבור ניסוי זה, מכיוון שאנו משתמשים ב-'_' כדי להפריד מטא נתונים שונים בשם הפגם בהמשך הקוד.

בתמונה הבאה, אנו מציירים מסיכה ירוקה סביב IC (מעגל משולב), מסכה כחולה סביב נגד 1, ומסכה כתומה סביב נגד 2.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לאחר שנבחר את להגיש כפתור, Amazon SageMaker Ground Truth יפיק מסכת פלט עם רקע לבן וקובץ מניפסט כדלקמן:
צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

{"source-ref":"s3://pcbtest22/label/s10.png","s10-label-ref":"s3://pcbtest22/label/s10-label/annotations/consolidated-annotation/output/0_2022-09-08T18:01:51.334016.png","s10-label-ref-metadata":{"internal-color-map":{"0":{"class-name":"BACKGROUND","hex-color":"#ffffff","confidence":0},"1":{"class-name":"IC","hex-color":"#2ca02c","confidence":0},"2":{"class-name":"resistor_1","hex-color":"#1f77b4","confidence":0},"3":{"class-name":"resistor_2","hex-color":"#ff7f0e","confidence":0}},"type":"groundtruth/semantic-segmentation","human-annotated":"yes","creation-date":"2022-09-08T18:01:51.498525","job-name":"labeling-job/s10-label"}}

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

4.2 הכן קלט עבור נקודת הקצה של SageMaker

הפוך את המניפסט של Amazon SageMaker Ground Truth כקובץ קלט של SageMaker לנקודת קצה

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

from PIL import Image 
import os 
import shutil 
import boto3

s3=boto3.client('s3')

# make the image directory
dir_im="images"
if not os.path.isdir(dir_im):
    os.makedirs(dir_im)
# create augmented images from original image
input_img = imageio.imread('s10.png')

for i in range(10):
    noise=iaa.AdditiveGaussianNoise(scale=0.2*255)
    contrast=iaa.GammaContrast((0.5,2))
    contrast_sig = iaa.SigmoidContrast(gain=(5,20), cutoff=(0.25, 0.75))
    contrast_lin = iaa.LinearContrast((0.4,1.6))
      
    input_noise=noise.augment_image(input_img)
    input_contrast = contrast.augment_image(input_img)
    sigmoid_contrast = contrast_sig.augment_image(input_img)
    linear_contrast = contrast_lin.augment_image(input_img)
      
    im_noise = Image.fromarray(input_noise)
    im_noise.save(f'{dir_im}/input_noise_{i}.png')

    im_input_contrast = Image.fromarray(input_contrast)
    im_input_contrast.save(f'{dir_im}/contrast_sig_{i}.png')

    im_sigmoid_contrast = Image.fromarray(sigmoid_contrast)
    im_sigmoid_contrast.save(f'{dir_im}/sigmoid_contrast_{i}.png')

    im_linear_contrast = Image.fromarray(linear_contrast)
    im_linear_contrast.save(f'{dir_im}/linear_contrast_{i}.png')
    
# move original image to image augmentation folder
shutil.move('s10.png','images/s10.png')
# list all the images in the image directory
imlist =  [file for file in os.listdir(dir_im) if file.endswith('.png')]

# upload augmented images to an s3 bucket
s3_bucket='qualityinspection'
for i in range(len(imlist)):
    with open('images/'+imlist[i], 'rb') as data:
        s3.upload_fileobj(data, s3_bucket, 'images/'+imlist[i])

# get the image s3 locations
im_s3_list=[]
for i in range(len(imlist)):
    image_s3='s3://qualityinspection/images/'+imlist[i]
    im_s3_list.append(image_s3)

לאחר מכן, אנו מורידים את המסכה מאמזון SageMaker Ground Truth ומעלים אותה לתיקיה בשם 'מסכה' בדלי ה-S3 הזה.

# download Ground Truth annotation mask image to local from the Ground Truth s3 folder
s3.download_file('pcbtest22', 'label/S10-label3/annotations/consolidated-annotation/output/0_2022-09-09T17:25:31.918770.png', 'mask.png')
# upload mask to mask folder
s3.upload_file('mask.png', 'qualityinspection', 'mask/mask.png')

לאחר מכן, אנו מורידים את קובץ המניפסט מעבודת התיוג של Amazon SageMaker Ground Truth וקוראים אותו כשורות json.

import json
#download output manifest to local
s3.download_file('pcbtest22', 'label/S10-label3/manifests/output/output.manifest', 'output.manifest')
# read the manifest file
with open('output.manifest','rt') as the_new_file:
    lines=the_new_file.readlines()
    for line in lines:
        json_line = json.loads(line)

לבסוף, אנו יוצרים מילון קלט אשר מתעד את מיקום ה-S3 של תמונת הקלט, מיקום המסכה, מידע המסכה וכו', שומרים אותו כקובץ txt ולאחר מכן מעלים אותו לתיקיית 'קלט' דלי S3 היעד.

# create input dictionary
input_dat=dict()
input_dat['input-image-location']=im_s3_list
input_dat['mask-location']='s3://qualityinspection/mask/mask.png'
input_dat['mask-info']=json_line['S10-label3-ref-metadata']['internal-color-map']
input_dat['output-bucket']='qualityinspection'
input_dat['output-project']='synthetic_defect'

# Write the input as a txt file and upload it to s3 location
input_name='input.txt'
with open(input_name, 'w') as the_new_file:
    the_new_file.write(json.dumps(input_dat))
s3.upload_file('input.txt', 'qualityinspection', 'input/input.txt')

להלן קובץ קלט לדוגמה:

{"input-image-location": ["s3://qualityinspection/images/s10.png", ... "s3://qualityinspection/images/contrast_sig_1.png"], "mask-location": "s3://qualityinspection/mask/mask.png", "mask-info": {"0": {"class-name": "BACKGROUND", "hex-color": "#ffffff", "confidence": 0}, "1": {"class-name": "IC", "hex-color": "#2ca02c", "confidence": 0}, "2": {"class-name": "resistor1", "hex-color": "#1f77b4", "confidence": 0}, "3": {"class-name": "resistor2", "hex-color": "#ff7f0e", "confidence": 0}}, "output-bucket": "qualityinspection", "output-project": "synthetic_defect"}

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

4.3.1 דגם LaMa

כדי להסיר רכיבים מהתמונה המקורית, אנו משתמשים במודל PyTorch בקוד פתוח בשם LaMa from LaMa: צביעת מסכה גדולה בעלת רזולוציה חזקה עם פיתולי פורייה. זהו דגם גדול בעל רזולוציה לצביעה של מסכה גדולה עם פיתולי פורייה שפותחו על ידי סמסונג AI. הכניסות לדגם הן תמונה ומסכה בשחור לבן והפלט הוא תמונה עם האובייקטים שבתוך המסכה הוסרו. אנו משתמשים באמזון SageMaker Ground Truth כדי ליצור את המסכה המקורית, ולאחר מכן להפוך אותה למסכה בשחור לבן לפי הצורך. אפליקציית מודל LaMa מוצגת כדלקמן:

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

4.3.2 הצגת מסקנות אסינכרוניות של Amazon SageMaker 

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

4.3.3 פריסת נקודות קצה

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

from sagemaker import get_execution_role
from sagemaker.pytorch import PyTorchModel
import boto3

role = get_execution_role()
env = dict()
env['TS_MAX_REQUEST_SIZE'] = '1000000000'
env['TS_MAX_RESPONSE_SIZE'] = '1000000000'
env['TS_DEFAULT_RESPONSE_TIMEOUT'] = '1000000'
env['DEFAULT_WORKERS_PER_MODEL'] = '1'

כפי שציינו קודם, אנו משתמשים במודל PyTorch בקוד פתוח LaMa: צביעת מסכה גדולה בעלת רזולוציה חזקה עם פיתולי פורייה והדגם שהוכשר מראש הועלה ל s3://qualityinspection/model/big-lama.tar.gz. ה image_uri מצביע על קונטיינר docker עם גרסאות ה-framework ו-python הנדרשות.

model = PyTorchModel(
    entry_point="./inference_defect_gen.py",
    role=role,
    source_dir = './',
    model_data='s3://qualityinspection/model/big-lama.tar.gz',
    image_uri = '763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-inference:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker',
    framework_version="1.7.1",
    py_version="py3",
    env = env,
    model_server_workers=1
)

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

from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig
bucket = 'qualityinspection'
prefix = 'async-endpoint'
async_config = AsyncInferenceConfig(output_path=f"s3://{bucket}/{prefix}/output",max_concurrent_invocations_per_instance=10)

לאחר מכן, אנו פורסים את נקודת הקצה במופע ml.g4dn.xlarge על ידי הפעלת הקוד הבא:

predictor = model.deploy(
    initial_instance_count=1,
    instance_type='ml.g4dn.xlarge',
    model_server_workers=1,
    async_inference_config=async_config
)

לאחר כ-6-8 דקות, נקודת הקצה נוצרת בהצלחה, והיא תופיע בקונסולת SageMaker.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

4.3.4 הפעל את נקודת הקצה

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

import boto3
runtime= boto3.client('runtime.sagemaker')
response = runtime.invoke_endpoint_async(EndpointName='pytorch-inference-2022-09-16-02-04-37-888',
                                   InputLocation='s3://qualityinspection/input/input.txt')

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

4.3.5 בדוק את תוצאת ההסקה של נקודת הקצה 

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אם בקשת ההסקה תצליח, תראה את ההודעה: Inference request succeeded.ב-data-log וגם לקבל מידע על השהייה הכוללת של המודל, זמן התהליך הכולל וכו' בהודעה. אם ההסקה נכשלת, בדוק את היומן השני כדי לבצע ניפוי באגים. אתה יכול גם לבדוק את התוצאה על ידי בדיקת סטטוס בקשת ההסקה. למידע נוסף על ההסקה האסינכרונית של אמזון SageMaker כאן.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

4.3.6 יצירת פגמים סינתטיים עם רכיבים חסרים באמצעות נקודת הקצה

נשלים ארבע משימות בנקודת הסיום:

  1. שירות לוקליזציית החריגות של Lookout for Vision דורש פגם אחד בכל תמונה במערך ההדרכה כדי לייעל את ביצועי המודל. לכן, עלינו להפריד את המסכות עבור פגמים שונים בנקודת הקצה על ידי סינון צבע.
    צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  2. פיצול מערך נתונים של רכבת/בדיקה כדי לעמוד בדרישה הבאה:
    • לפחות 10 תמונות רגילות ו-10 חריגות עבור מערך הנתונים של הרכבת
    • פגם/תמונה אחת במערך הנתונים של הרכבת
    • לפחות 10 תמונות רגילות ו-10 חריגות עבור מערך הנתונים של הבדיקה
    • מותרים מספר פגמים בכל תמונה עבור מערך הנתונים של הבדיקה
  3. צור פגמים סינתטיים והעלה אותם למיקומי היעד של S3.

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

להלן דוגמה לתמונת המקור והפגמים הסינתטיים שלה עם שלושה רכיבים: IC, resistor1 ונגד 2 חסרים.

תמונה מקורית

תמונה מקורית

40_im_mask_IC_resistor1_resistor2.jpg (שם הפגם מציין את הרכיבים החסרים)

40_im_mask_IC_resistor1_resistor2.jpg (שם הפגם מציין את הרכיבים החסרים)

  1.  צור קובצי מניפסט עבור מערך נתונים לרכבת/בדיקה המתעדים את כל המידע לעיל.

לבסוף, ניצור מניפסטים של רכבת/בדיקה כדי להקליט מידע, כגון מיקום פגם סינטטי S3, מיקום מסיכת S3, מחלקת פגמים, צבע מסכה וכו'.

להלן שורות json לדוגמה עבור חריגה ותמונה רגילה במניפסט.

לאנומליה:

{"source-ref": "s3://qualityinspection/synthetic_defect/anomaly/train/6_im_mask_IC.jpg", "auto-label": 11, "auto-label-metadata": {"class-name": "anomaly", "type": "groundtruth/image-classification"}, "anomaly-mask-ref": "s3://qualityinspection/synthetic_defect/mask/MixMask/mask_IC.png", "anomaly-mask-ref-metadata": {"internal-color-map": {"0": {"class-name": "IC", "hex-color": "#2ca02c", "confidence": 0}}, "type": "groundtruth/semantic-segmentation"}}

לתמונה רגילה:

{"source-ref": "s3://qualityinspection/synthetic_defect/normal/train/25_im.jpg", "auto-label": 12, "auto-label-metadata": {"class-name": "normal", "type": "groundtruth/image-classification"}}

4.3.7 מבנה התיקיות של Amazon S3

הקלט והפלט של נקודת הקצה מאוחסנים בדלי S3 היעד במבנה הבא:

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

5 חפש אימון ותוצאה של מודל חזון

5.1 הגדר פרויקט, העלה מערך נתונים והתחל אימון מודלים. 

  1. ראשית, אתה יכול ללכת ל- Lookout for Vision מה- קונסולת AWS וליצור פרויקט.
    צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  2. לאחר מכן, תוכל ליצור מערך הדרכה על ידי בחירה ייבא תמונות שכותרתו על ידי SageMaker Ground Truth ולתת את המיקום של Amazon S3 של מניפסט מערך הרכבות שנוצר על ידי נקודת הקצה של SageMaker.
    צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  3. לאחר מכן, תוכל ליצור מערך נתונים לבדיקה על ידי בחירה ייבא תמונות שכותרתו על ידי SageMaker Ground Truth שוב, ותן את המיקום של Amazon S3 של מניפסט מערך הבדיקה שנוצר על ידי נקודת הקצה של SageMaker.
    צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
    .......צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
    ....
  4. לאחר העלאת מערכי הנתונים של הרכבת והבדיקה בהצלחה, תוכל לבחור את דגם רכבת לחצן בפינה השמאלית העליונה כדי להפעיל את אימון מודל לוקליזציה חריג.
    ......
  5. בניסוי שלנו, המודל לקח קצת יותר משעה כדי להשלים את האימון. כאשר הסטטוס מראה שההכשרה הושלמה, תוכל לבחור בקישור הדגם כדי לבדוק את התוצאה.
    ....
    צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

5.2 תוצאת אימון דגם

5.2.1 מדדי ביצועים של מודל 

לאחר בחירת ב- הדגם 1 כפי שמוצג לעיל, אנו יכולים לראות מציון 100% דיוק, 100% ריקול ו-100% F1 שביצועי הדגם טובים למדי. אנחנו יכולים גם לבדוק את הביצועים לכל תווית (רכיב חסר), ונשמח לגלות שציוני ה-F1 של כל שלוש התוויות הם מעל 93%, וה-IoUs הממוצע הם מעל 85%. תוצאה זו מספקת עבור מערך הנתונים הקטן הזה שהדגמנו בפוסט.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

5.2.2 הדמיה של זיהוי פגמים סינתטיים במערך הנתונים של הבדיקה. 

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

להלן דוגמה לרכיבים חסרים משולבים (שלושה פגמים במקרה זה) במערך הנתונים של הבדיקה:

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לאחר מכן תוכל להרכיב ולארוז את המודל כ- AWS IoT Greengrass רכיב בהתאם להוראות בפוסט זה, זהה את המיקום של חריגות באמצעות Amazon Lookout for Vision בקצה מבלי להשתמש ב-GPU, ולהריץ מסקנות על המודל.

6. בדוק את מודל Lookout for Vision המאומן על נתונים סינתטיים כנגד פגמים אמיתיים

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

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

פגם אמיתי

פגם אמיתי

פגם סינטטי

פגם סינטטי

שנית, אנו משתמשים בזיהויי הניסיון ב- Lookout for Vision כדי לבדוק את המודל מול הפגם האמיתי. אתה יכול לשמור את תמונות הבדיקה בדלי S3 ולייבא אותן מאמזון S3 או להעלות תמונות מהמחשב שלך. לאחר מכן, בחר זיהוי חריגות כדי להפעיל את הזיהוי.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

7. הערכת עלויות 

צינור הגדלת תמונה זה עבור Lookout for Vision הוא חסכוני מאוד. בדוגמה המוצגת לעיל, פריסה והסקת נקודות קצה א-סינכרוניות של אמזון SageMaker עולים כמה דולרים בלבד. עבור שירות Lookout for Vision, אתה משלם רק על מה שאתה משתמש בו. ישנם שלושה מרכיבים שקובעים את החשבון שלך: חיובים עבור אימון הדגם (שעות אימון), חיובים עבור זיהוי חריגות בענן (שעות הסקת ענן), ו/או חיובים עבור זיהוי חריגות בקצה (יחידות הסקת קצה). בניסוי שלנו, מודל Lookout for Vision לקח קצת יותר משעה כדי להשלים את האימון, והוא עלה $2.00 לשעת אימון. יתר על כן, אתה יכול להשתמש במודל המיומן להסקת מסקנות בענן או בקצה עם המחיר הרשום כאן.

8. לנקות

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

  1. פתח את מסוף SageMaker ומחק את המשאבים הבאים:
    • נקודת הסיום. מחיקת נקודת הקצה מוחקת גם את מופע המחשוב של ML או מופעים התומכים בו.
      1. תַחַת הסקה, בחר נקודות קצה.
      2. בחר את נקודת הקצה שיצרת בדוגמה, בחר פעולות, ולאחר מכן לבחור מחק.
    • תצורת נקודת הקצה.
      1. תַחַת הסקה, בחר תצורות של נקודות קצה.
      2. בחר את תצורת נקודת הקצה שיצרת בדוגמה, בחר פעולות, ולאחר מכן לבחור מחק.
    • המודל.
      1. תַחַת הסקה, בחר מודלים.
      2. בחר את הדגם שיצרת בדוגמה, בחר פעולות, ולאחר מכן לבחור מחק.
    • מופע המחברת. לפני מחיקת מופע המחברת, עצור אותו.
      1. תַחַת מחברת, בחר מופעי מחברת.
      2. בחר את מופע המחברת שיצרת בדוגמה, בחר פעולות, ולאחר מכן לבחור עצור. למופע המחברת לוקח מספר דקות להפסיק. כאשר מצב משתנה ל עצר, עבור לשלב הבא.
      3. בחרו פעולות, ולאחר מכן לבחור מחק.
  2. פתח את קונסולת אמזון S3, ולאחר מכן מחק את הדלי שיצרת לאחסון חפצי מודל ואת מערך ההדרכה.
  3. פתח את קונסולת אמזון CloudWatch, ולאחר מכן מחק את כל קבוצות היומן שיש להן שמות שמתחילים ב /aws/sagemaker/.

אתה יכול גם למחוק את נקודת הקצה מהמחברת של SageMaker על ידי הפעלת הקוד הבא:

import boto3
sm_boto3 = boto3.client("sagemaker")
sm_boto3.delete_endpoint(EndpointName='endpoint name')

9. סיכום

בפוסט זה, הדגמנו כיצד להוסיף הערות למסכות פגמים סינתטיים באמצעות Amazon SageMaker Ground Truth, כיצד להשתמש בטכניקות שונות של הגדלת תמונה כדי להפוך תמונה רגילה אחת למספר הרצוי של תמונות רגילות, ליצור נקודת קצה א-סינכרונית של SageMaker ולהכין את קובץ הקלט עבור נקודת קצה, כמו גם להפעיל את נקודת הקצה. לבסוף, הדגמנו כיצד להשתמש במניפסט הרכבת/הבדיקה כדי להכשיר מודל לוקליזציה של אנומליות Lookout for Vision. ניתן להרחיב את הצינור המוצע הזה למודלים אחרים של ML כדי ליצור פגמים סינתטיים, וכל מה שאתה צריך לעשות הוא להתאים אישית את המודל וקוד ההסקה בנקודת הקצה של SageMaker.

התחל בחקירת Lookout for Vision לבדיקת איכות אוטומטית כאן.


על הכותבים

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.קארה יאנג הוא מדען נתונים בשירותים מקצועיים של AWS. היא נלהבת לעזור ללקוחות להשיג את היעדים העסקיים שלהם עם שירותי הענן של AWS וסייעה לארגונים לבנות פתרונות AI/ML מקצה לקצה בתעשיות מרובות כגון ייצור, רכב, קיימות סביבתית וחלל.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אוקטבי אוביולס-מכירות הוא מדען חישובי המתמחה בלמידה עמוקה (DL) ולמידת מכונה מוסמך כארכיטקט פתרונות שותף. עם ידע נרחב הן בענן והן בקצה, הוא עוזר להאיץ תוצאות עסקיות באמצעות בניית פתרונות AI מקצה לקצה. אוקטבי סיים את הדוקטורט שלו במדעי החישוב באוניברסיטת קליפורניה, אירווין, שם הוא דחף את הטכנולוגיה המתקדמת באלגוריתמי DL+HPC.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.פביאן בניטז-קירוז הוא מדען נתונים של IoT Edge בשירותים מקצועיים של AWS. הוא בעל תואר דוקטור בראייה ממוחשבת וזיהוי דפוסים מאוניברסיטת אוהיו סטייט. פביאן מעורב בסיוע ללקוחות להפעיל את דגמי ה-Machine Learning שלהם עם חביון נמוך במכשירי IoT ובענן.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.מאניש טלרג'ה הוא מנהל מוצר ראשי לפתרונות IoT ב-AWS. הוא נלהב לעזור ללקוחות לבנות פתרונות חדשניים באמצעות שירותי AWS IoT ו-ML בענן ובקצה.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.יושין יאנג הוא ארכיטקט AI/ML ב-AWS, מוסמך במומחיות למידת מכונה של AWS. היא מאפשרת ללקוחות להאיץ את התוצאות שלהם באמצעות בניית פתרונות AI/ML מקצה לקצה, כולל תחזוקה חזויה, ראייה ממוחשבת ולמידת חיזוק. יוקסין קיבלה את התואר השני שלה מאוניברסיטת סטנפורד, שם התמקדה בלמידה עמוקה וניתוח ביג דאטה.

צינור הגדלת תמונה עבור Amazon Lookout for Vision PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ינגמאו טימותי לי הוא מדען נתונים עם AWS. הוא הצטרף ל-AWS לפני 11 חודשים והוא עובד עם מגוון רחב של שירותים וטכנולוגיות למידת מכונה כדי לבנות פתרונות עבור מגוון לקוחות. בעל תואר דוקטור בהנדסת חשמל. בזמנו הפנוי, הוא נהנה ממשחקי חוץ, מרוצי מכוניות, שחייה והטסת גור צינורות לחצות את הארץ ולחקור את השמיים.

 

בול זמן:

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