טכנולוגיית זיהוי האובייקטים של ראיית מחשב חיונית עבור יישומים רבים. אנו משתמשים בו ברובוטיקה, ציוד מעקב, מכוניות בנהיגה עצמית ועוד תחומים רבים נוספים. לפיכך, אנו זוכים למצוא ולזהות דברים מסוימים בתמונה או בסרטון.
אחד הידועים ביותר אלגוריתמים לזיהוי אובייקטים הם ה-YOLO (אתה מסתכל רק פעם אחת) סט דגמים. מודלים אלה נוצרים על ידי Ultralytics LLC.
הגרסה העדכנית ביותר של סדרה זו היא YOLOv5. וזהו המודל המהיר והמדויק ביותר לזיהוי אובייקטים בשוק. יכולתו של המודל להכליל לנתונים חדשים שופרה מאוד. כמו כן, הוא מכיל תכונות רבות שהופכות אותו לביצועים טובים יותר מאשר איטרציות קודמות.
YOLOv5 נהדר עבור יישומים בזמן אמת מכיוון שהוא יכול לעבד תמונות בקצב של עד 1000 פריימים לשנייה ב-GPU יחיד.
במאמר זה נציג את YOLOv5 ונעבור על הפרטים של תחומי היישום שלו.
המסע של YOLO: מ-YOLO ל-YOLOv5
יוסף רדמון ועוד. במקור הציג את YOLO, קבוצה של מודלים לזיהוי אובייקטים, בשנת 2016. מודל YOLO הראשוני יכול לזהות אובייקטים בזמן אמת. עם זאת, היה לו דיוק נמוך בהשוואה לדגמים אחרים באותה תקופה.
מספר גרסאות משודרגות של YOLO שוחררו במהלך השנים. ולבסוף, Ultralytics LLC יצרה את המהדורה החדשה ביותר של סדרת YOLO, YOLOv5.
YOLOv5 הוא המודל המדויק והמהיר ביותר לזיהוי אובייקטים הזמין כיום.
תכונות חשובות
תיבות עוגן
YOLOv5 מנבא תיבות תוחמות עבור אובייקטים בתמונה באמצעות תיבות עוגן. המודל מנבא איזו מבין קופסאות רבות שהוגדרו מראש עם יחסי גובה-רוחב שונים מתאימה בצורה הטובה ביותר לפריט בתמונה באמצעות תיבות עוגן. אלו תיבות מוגדרות מראש.
בנוסף, הם מאפשרים ל-YOLOv5 לזהות ולמצוא פריטים בתמונה בדיוק.
הגדלת נתוני פסיפס
בעת אימון, YOLOv5 משתמש בשיטה המכונה פסיפס הגדלת נתונים. כדי לפתח תמונות אימון טריות, הדגם שלנו משלב באופן אקראי טלאים של מספר תמונות. כתוצאה מכך, הדגם הופך לגמיש ואמין יותר. לפיכך, זה יכול להכליל לנתונים חדשים ולהפחית התאמה יתר.
צינור הדרכה ייחודי
צינור הדרכה ייחודי המשלב מפוקח ו למידה ללא פיקוח משמש.
לפיכך, המודל לומד ממדגם קטן יותר ומנצל קלט ללא תווית ביעילות. זה מגביר את ביצועי המודל ומשפר את יכולתו להכליל לתשומות חדשות.
שכבות שהן שיוריות ולא שיוריות
הארכיטקטורה של YOLOv5 משלבת שכבות שהן שיוריות ולא שיוריות. על ידי מתן אפשרות להדרגות לזרום על פני השכבות, שכבות שיוריות מסייעות למודל בלימוד תכונות קשות. כמו כן, שכבות שאינן שיוריות מספקות לדגם תפיסה מקיפה יותר של תמונת הקלט. כתוצאה מכך, YOLOv5 יכול לפעול בצורה מדויקת ויעילה יותר.
כיצד להשתמש ב- YOLOv5
הַתקָנָה
התקנת YOLOv5 עשויה להסתיים במהירות באמצעות pip. Pip הוא מנהל חבילות Python. ההליכים הכלליים להתקנת YOLOv5 הם כדלקמן:
1- התקנת PyTorch: מכיוון ש-YOLOv5 מבוסס על מסגרת PyTorch, תחילה עליך להתקין את PyTorch.
pip install torch torchvision
2. התקן CUDA: עליך להתקין CUDA אם אתה מתכוון להריץ את YOLOv5 על GPU.
3. התקן את YOLOv5: לאחר הגדרת PyTorch ו-CUDA, השתמש בפקודה הבאה כדי להוריד את YOLOv5.
pip install yolov5
4-לאחר ההתקנה של YOLOv5, עליך להוריד את המשקולות המאומנות מראש. המשקולות המאומנות מראש זמינות בריפו של Ultralytics GitHub.
עבור לחלק "משקלות" של האתר על ידי גלילה מטה. אתה יכול להוריד משקולות מאומנות מראש מהרשימה שתוכל למצוא כאן.
5. בחר את המשקולות שכבר מאומנות ומתאימות ביותר למקרה השימוש שלך. ניתן להשתמש במערך הנתונים או בגרסה הספציפית של YOLOv5 שבה נלמדו המשקולות כדי לצמצם את הרשימה.
6- לאחר בחירת המשקולות הנכונות, בחר את המשקל על ידי לחיצה על כפתור "הורד" שלידו. המשקולות יהיו זמינות להורדה כ. קבצי pt.
7- העבר את המשקולות שהורדת לספרייה. זה המקום שבו סקריפט הזיהוי שלך יפעל.
8- בשלב זה, אתה יכול להפעיל זיהוי אובייקטים על התמונות או הסרטונים שלך באמצעות המשקולות המאומנות מראש בסקריפט הזיהוי שלך.
הכן את הנתונים
עליך לבצע את הפעולות הבאות כדי להכין את הנתונים לשימוש עם YOLOv5:
1. אסוף את הנתונים: הצעד הראשון הוא לאסוף את נתוני התמונה או הווידאו שתזדקק להם איתור אובייקטים. הדברים שאתה רוצה לזהות צריכים להיות נוכחים בתמונות או בסרטונים.
2- פרמט את הנתונים: אתה יכול פשוט לייבא תמונות לסקריפט שלך אם אתה משתמש בהן. אתה חייב להפוך סרטון לסדרת תמונות אם אתה מתכנן להשתמש באחת. אתה יכול לחלץ את הפריימים מסרט באמצעות ספרייה כמו OpenCV.
import cv2
img = cv2.imread('path/to/image')
עם ספריית OpenCV, אתה יכול להשתמש בפקודה הבאה כדי להפוך סרטון לסדרת תמונות:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. תווית את הנתונים: עליך לתייג את הנתונים אם אתה משתמש במערך הנתונים שלך. ציור תיבות תוחמות סביב הפריטים שברצונך לזהות בכל מסגרת של תמונה. זהו תהליך של תיוג הנתונים. תוכל להשתמש במספר כלים כדי לסייע לך בפעולה זו, כולל LabelImg ו- RectLabel.
4- עליך לחלק את הנתונים לקבוצות אימון ובדיקות לאחר שתייגת אותם. זה חיוני להערכת ביצועי המודל שלך.
5. לבסוף, ייתכן שיהיה עליך לעבד מראש את הנתונים לפני אימון או בדיקה. זה יכול לכלול קנה מידה של התמונות או הסרטונים, סטנדרטיזציה של ערכי הפיקסלים או שימוש בשיטות להגדלת נתונים.
לאחר השלמת שלבים אלה, הנתונים שלך מוכנים.
הפעל את סקריפט הזיהוי
הנה איור של תסריט זיהוי שמנתח תמונה ומוצא חפצים.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
לאחר עיבוד
דיכוי לא מרבי הוא אחת הטכניקות הפוסט-עיבוד השכיחות ביותר המשמשות בזיהוי אובייקטים (NMS). אנו משתמשים ב-NMS כדי לחסל תיבות תוחמות חופפות עבור אותו אובייקט. כדי להפעיל NMS על הזיהויים, אנו יכולים להשתמש בשיטת cv2.dnn.NMSBoxes() של ספריית OpenCV.
הנה דוגמה כיצד לבצע זיהוי לאחר עיבוד באמצעות NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indices = cv2.dnn.NMSBoxes(detections, confidences, conf_thres, nms_thres)
ראיה
במקרה של הדמיה, נוכל להשתמש שוב בספרייה כמו OpenCV. אנו יכולים להציג את התיבות התוחמות סביב האובייקטים שהתגלו בתמונת המקור או בסרטון. כדי לצייר את התיבות התוחמות של התמונה, השתמש בשיטת cv2.rectangle() . כך ניתן לראות את הזיהויים בתמונה המקורית:
ייבא cv2
# Draw the bounding boxes on the image
עבור I במדדים:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
יישומים
YOLOv5 הוא מודל חזק לזיהוי אובייקטים. לפיכך, אנו יכולים לעשות בו שימוש בתרחישים רבים בעולם האמיתי. אחד השימושים הבולטים הוא במכוניות לנהיגה עצמית. YOLOv5 יכול לזהות פריטים בזמן אמת כמו מכוניות ורמזורים.
במערכות מעקב, אנו יכולים להשתמש ב-YOLOv5 כדי לזהות ולעקוב אחר אובייקטים בזרמי וידאו חיים. יתר על כן, YOLOv5 יכול להיות נכס נהדר ברובוטיקה. זה יכול לעזור לרובוטים לזהות ולהבין את הסביבה שלהם. זה חשוב ביותר עבור פעילויות כמו ניווט ומניפולציה.
ניתן להשתמש ב-YOLOv5 גם בכל תעשייה הדורשת זיהוי אובייקטים, כגון קמעונאות, ספורט, רפואה ואבטחה.
סיכום
לבסוף, YOLOv5 היא הגרסה העדכנית והמתוחכמת ביותר של משפחת YOLO של איתור אובייקטים מודלים
. כמו כן, הוגן לומר שזהו המודל המדויק ביותר לזיהוי אובייקטים הקיים. הודות לדיוק והמהירות הגבוהים שלו, אתה יכול לבחור אותו בבטחה עבור פרויקטי זיהוי האובייקטים שלך.
רסקי אגוס
אני עושה יומן ראשון על רכב איתור עם yolov5 והאינטרנט הזה עוזר לי לחפש מידע על זה.
אני מאוד מתעניין ב-AI.
אם אתה יכול יש לי הרבה שאלות על AI אולי אתה יכול לעזור לי
תודה רבה לך