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

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

מבוא

זיהוי אובייקטים הוא תחום גדול בראייה ממוחשבת, ואחד היישומים החשובים יותר של ראייה ממוחשבת "בטבע".

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

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

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

במדריך הקצר הזה, נבצע זיהוי אובייקטים ב-Python, עם YOLOv7 המתקדם.

YOLO Landscape ו-YOLOv7

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

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

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

זה הופך את פילוח המופעים וזיהוי נקודות המפתח למהירים מאי פעם!

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

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

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

התקנת YOLOv7

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

הערה: לרוע המזל, נכון לכתיבת שורות אלו, YOLOv7 אינו מציע ממשק API פרוגרמטי נקי כגון YOLOv5, הנטען בדרך כלל מ- torch.hub(), העברת מאגר GitHub פנימה. נראה שזו תכונה שאמורה לעבוד אך כרגע נכשלת. ככל שזה יתוקן, אני אעדכן את המדריך או אפרסם מדריך חדש ב-API התכנותי. לעת עתה – נתמקד בתסריטי ההסקה המסופקים במאגר.

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

בוא נוריד את המאגר ונבצע הסקה מסויימת:

! git clone https://github.com/WongKinYiu/yolov7.git

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

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

הערה: ב-Google Colab Notebook, תצטרך להפעיל את הקסם %cd פקודה בכל תא שאליו ברצונך לשנות את הספרייה שלך yolov7, בעוד התא הבא מחזיר אותך אל ספריית העבודה המקורית שלך. במחברות מקומיות של Jupyter, שינוי הספרייה פעם שומר אותך בתוכו, כך שאין צורך להנפיק מחדש את הפקודה מספר פעמים.

אל האני detect.py הוא סקריפטים להסיק שמפעילים איתור ושומר את התוצאות תחת runs/detect/video_name, שבו אתה יכול לציין את video_name תוך כדי התקשרות ל detect.py תַסרִיט. export.py מייצא את הדגם לפורמטים שונים, כגון ONNX, TFLite וכו'. train.py ניתן להשתמש כדי להכשיר גלאי YOLOv7 מותאם אישית (הנושא של מדריך אחר), וכן test.py יכול לשמש לבדיקת גלאי (נטען מקובץ משקולות).

מספר ספריות נוספות מכילות את התצורות (cfg), נתונים לדוגמה (inference), נתונים על בניית מודלים ותצורות COCO (data), וכו '

גדלים YOLOv7

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

YOLOv7 מציעה מספר גדלים, וקבעה אותם מול MS COCO:

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

מספר סימוכין גודל מבחן APמבחן AP50 המבחן AP75 המבחן אצווה 1 פריימים לשנייה זמן ממוצע אצווה 32
YOLOv7 640 51.4% 69.7% 55.9% fps 161 2.8 ms
YOLOv7-X 640 53.1% 71.2% 57.8% fps 114 4.3 ms
YOLOv7-W6 1280 54.9% 72.6% 60.1% fps 84 7.6 ms
YOLOv7-E6 1280 56.0% 73.5% 61.2% fps 56 12.3 ms
YOLOv7-D6 1280 56.6% 74.0% 61.8% fps 44 15.0 ms
YOLOv7-E6E 1280 56.8% 74.4% 62.1% fps 36 18.7 ms

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

הסקת וידאו עם YOLOv7

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

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

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

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

שימו לב שהפרויקט ירוץ לאט במכונות מבוססות מעבד (כגון 1000ms לכל שלב היסק בפלט למעלה, רץ על MacBook Pro 2017 מבוסס אינטל), ומהיר משמעותית במכונות מבוססות GPU (קרוב ל-5ms/frame) על V100). אפילו במערכות מבוססות מעבד כמו זו, yolov7-tiny.pt רץ ב 172ms/frame, שאמנם רחוק מלהיות בזמן אמת, אבל הוא עדיין הגון מאוד לטיפול בפעולות אלו על מעבד.

לאחר שהריצה תסתיים, תוכל למצוא את הסרטון שהתקבל תחת runs/video_1 (השם שסיפקנו ב- detect.py שיחה), נשמר כ- .mp4:

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

הסקה על תמונות

ההסקה על תמונות מסתכמת באותו תהליך - אספקת כתובת האתר לתמונה במערכת הקבצים, והתקשרות detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

הערה: נכון לכתיבת שורות אלה, הפלט לא משנה את התוויות לגודל התמונה, גם אם תגדיר --img SIZE. משמעות הדבר היא שלתמונות גדולות יהיו קווי תיבה תוחמים דקים באמת ותוויות קטנות.

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

סיכום

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

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

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

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

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

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

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

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

מה יש בפנים?

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

בול זמן:

עוד מ Stackabuse