מסקנות לזיהוי אובייקטים ב-Python עם YOLOv5 ו-PyTorch PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

מסקנות לזיהוי אובייקטים ב- Python עם YOLOv5 ו- PyTorch

מבוא

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

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

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

למזלם של ההמונים - Ultralytics פיתחה API פשוט, חזק מאוד ויפה לזיהוי אובייקטים סביב יישום ה-YOLOv5 שלהם.

במדריך הקצר הזה, נבצע זיהוי אובייקטים ב-Python, עם YOLOv5 שנבנה על ידי Ultralytics ב-PyTorch, באמצעות סט של משקולות מאומנות מראש המאומנות על MS COCO.

YOLOv5

YOLO (אתה מסתכל רק פעם אחת) היא מתודולוגיה, כמו גם משפחה של מודלים שנבנו לזיהוי אובייקטים. מאז היווסדה בשנת 2015, YOLOv1, YOLOv2 (YOLO9000) ו-YOLOv3 הוצעו על ידי אותם מחבר/ים - וקהילת הלמידה העמוקה המשיכה בהתקדמות בקוד פתוח בשנים הבאות.

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

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

זיהוי אובייקטים עם YOLOv5

לפני שמתקדמים קדימה, ודא שיש לך torch ו torchvision מוּתקָן:

! python -m pip install torch torchvision

ל-YOLOv5 יש תיעוד מפורט ללא שטויות וממשק API פשוט להפליא, כפי שמוצג ב-repo עצמו, ובדוגמה הבאה:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

הטיעון השני של ה hub.load() השיטה מציינת את המשקולות שבהן נרצה להשתמש. על ידי בחירה בכל מקום ביניהם yolov5n ל yolov5l6 – אנו מעמיסים את המשקולות המאומנות מראש של MS COCO. לדגמים מותאמים אישית:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

בכל מקרה - ברגע שאתה מעביר את הקלט דרך המודל, האובייקט המוחזר כולל שיטות מועילות לפרש את התוצאות, ובחרנו render() אותם, מה שמחזיר מערך NumPy שנוכל לזרוק לתוך imshow() שִׂיחָה. זה מביא לפורמט יפה:

שמירת תוצאות כקבצים

אתה יכול לשמור את תוצאות ההסקה כקובץ, באמצעות ה- results.save() שיטה:

results.save(save_dir='results')

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

חיתוך אובייקטים

אתה יכול גם להחליט לחתוך את האובייקטים שזוהו כקבצים בודדים. במקרה שלנו, עבור כל תווית שזוהתה, ניתן לחלץ מספר תמונות. זה מושג בקלות באמצעות results.crop() שיטה, שיוצרת מחדש את א runs/detect/ ספרייה, עם expN/crops (כאשר N גדל עבור כל הפעלה), שבה נוצרת ספרייה עם תמונות חתוכות עבור כל תווית:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

אתה יכול גם לאמת את מבנה קובץ הפלט באמצעות:

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

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

ספירת אובייקטים

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

print(results)

זו התוצאה:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

הסקה עם סקריפטים

לחלופין, אתה יכול להפעיל את סקריפט הזיהוי, detect.py, על ידי שיבוט מאגר YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

ואז רץ:

$ python detect.py --source img.jpg

לחלופין, אתה יכול לספק כתובת URL, קובץ וידאו, נתיב לספרייה עם מספר קבצים, גלוב בנתיב שיתאים רק לקבצים מסוימים, קישור YouTube או כל זרם HTTP אחר. התוצאות נשמרות ב- runs/detect במדריך.

הולך רחוק יותר - למידה עמוקה מעשית לראייה ממוחשבת

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

מסקנות לזיהוי אובייקטים ב-Python עם YOLOv5 ו-PyTorch PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

עוד קורס ראיית מחשב?

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

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

מה יש בפנים?

  • העקרונות הראשונים של חזון וכיצד ניתן ללמד מחשבים "לראות"
  • משימות ויישומים שונים של ראייה ממוחשבת
  • כלי המקצוע שיקלו עליכם את העבודה
  • מציאת, יצירה וניצול של מערכי נתונים עבור ראייה ממוחשבת
  • התיאוריה והיישום של רשתות עצביות קונבולוציונליות
  • טיפול בהסטת תחום, התרחשות משותפת והטיות אחרות במערך נתונים
  • העבר למידה וניצול זמן ההדרכה ומשאבי החישוב של אחרים לטובתך
  • בנייה והדרכה של סיווג סרטן שד חדיש
  • כיצד ליישם מנה בריאה של ספקנות על רעיונות מיינסטרים ולהבין את ההשלכות של טכניקות מאומצות באופן נרחב
  • הדמיית "מרחב הקונספט" של ConvNet באמצעות t-SNE ו-PCA
  • תיאורי מקרה של האופן שבו חברות משתמשות בטכניקות ראייה ממוחשבת כדי להשיג תוצאות טובות יותר
  • הערכת מודל נכונה, הדמיית מרחב סמוי וזיהוי תשומת הלב של המודל
  • ביצוע מחקר תחום, עיבוד מערכי נתונים משלך והקמת בדיקות מודל
  • ארכיטקטורות חדשניות, התקדמות רעיונות, מה מייחד אותם וכיצד ליישם אותם
  • KerasCV – ספריית WIP ליצירת צינורות ודגמים מתקדמים
  • כיצד לנתח ולקרוא מאמרים וליישם אותם בעצמך
  • בחירת דגמים בהתאם ליישום שלך
  • יצירת צינור למידת מכונה מקצה לקצה
  • נוף ואינטואיציה על זיהוי אובייקטים עם R-CNN מהירים יותר, RetinaNets, SSDs ו-YOLO
  • מופע ופילוח סמנטי
  • זיהוי אובייקטים בזמן אמת עם YOLOv5
  • הכשרת גלאי אובייקטים של YOLOv5
  • עבודה עם רובוטריקים באמצעות KerasNLP (ספריית WIP בעלת חוזק בתעשייה)
  • שילוב רובוטריקים עם ConvNets ליצירת כיתובים של תמונות
  • חלום עמוק

סיכום

במדריך הקצר הזה, בדקנו כיצד ניתן לבצע זיהוי אובייקטים עם YOLOv5 שנבנה באמצעות PyTorch.

בול זמן:

עוד מ Stackabuse