فناوری تشخیص شیء بینایی کامپیوتر برای کاربردهای متعدد ضروری است. ما از آن در رباتیک، تجهیزات نظارتی، خودروهای خودران و بسیاری از مناطق دیگر استفاده می کنیم. از این رو، ما میتوانیم چیزهای خاصی را در یک تصویر یا ویدیو پیدا و تشخیص دهیم.
یکی از شناخته شده ترین ها الگوریتم های شناسایی شی YOLO است (شما فقط یک بار نگاه می کنید) مجموعه ای از مدل ها. این مدل ها توسط Ultralytics LLC.
جدیدترین نسخه این سری YOLOv5 است. و سریع ترین و دقیق ترین مدل شناسایی شی در بازار است. ظرفیت مدل برای تعمیم به داده های جدید بسیار بهبود یافته است. همچنین، دارای ویژگی های بسیاری است که باعث می شود عملکرد بهتری نسبت به تکرارهای قبلی داشته باشد.
YOLOv5 برای برنامه های بلادرنگ عالی است زیرا می تواند تصاویر را با سرعت 1000 فریم در ثانیه روی یک GPU پردازش کند.
در این مقاله به معرفی YOLOv5 می پردازیم و به جزئیات حوزه های کاربردی آن می پردازیم.
Journey of YOLO: From YOLO به YOLOv5
جوزف ردمون و همکاران در ابتدا YOLO، مجموعه ای از مدل های شناسایی اشیاء را در سال 2016 معرفی کرد. مدل اولیه YOLO می توانست اشیاء را در زمان واقعی شناسایی کند. با این حال، در مقایسه با سایر مدل های آن زمان، دقت پایینی داشت.
چندین نسخه ارتقا یافته از YOLO در طول سال ها منتشر شد. و در نهایت، Ultralytics LLC جدیدترین نسخه از سری YOLO، YOLOv5 را ایجاد کرد.
YOLOv5 دقیق ترین و سریع ترین مدل شناسایی شی در حال حاضر موجود است.
ویژگی های مهم
انکر باکس
YOLOv5 با استفاده از جعبه های لنگر، جعبه های محدود کننده اشیاء در یک تصویر را پیش بینی می کند. این مدل با استفاده از جعبههای لنگر پیشبینی میکند که کدام یک از بسیاری از جعبههای از پیش تعریفشده با نسبتهای مختلف، با آیتم موجود در تصویر مطابقت دارد. اینها جعبه های از پیش تعریف شده هستند.
و آنها YOLOv5 را قادر می سازند تا موارد موجود در یک تصویر را با دقت تشخیص دهد و پیدا کند.
تقویت داده های موزاییکی
هنگام آموزش، YOLOv5 از روشی به نام موزاییک استفاده می کند افزایش داده ها. برای ایجاد تصاویر آموزشی تازه، مدل ما به طور تصادفی تکه هایی از چندین عکس را ترکیب می کند. در نتیجه، مدل انعطافپذیرتر و قابل اعتمادتر میشود. از این رو، می توان به داده های جدید تعمیم داد و بیش از حد برازش را کاهش داد.
یک خط لوله آموزشی منحصر به فرد
یک خط لوله آموزشی منحصر به فرد که با نظارت و یادگیری بدون نظارت استفاده می شود.
بنابراین، مدل از یک نمونه کوچکتر یاد می گیرد و از ورودی بدون برچسب به طور موثر استفاده می کند. این کار عملکرد مدل را افزایش می دهد و ظرفیت آن را برای تعمیم به ورودی های جدید افزایش می دهد.
لایه هایی که باقی مانده و غیر باقی مانده هستند
معماری YOLOv5 لایه هایی را که باقی مانده و غیر باقی مانده هستند ترکیب می کند. با اجازه دادن به گرادیان ها برای جریان در سراسر لایه ها، لایه های باقیمانده به مدل در یادگیری ویژگی های دشوار کمک می کنند. همچنین، لایههای غیر باقیمانده، درک جامعتری از تصویر ورودی به مدل ارائه میدهند. در نتیجه، YOLOv5 می تواند دقیق تر و موثرتر عمل کند.
نحوه استفاده از YOLOv5
نصب و راه اندازی
نصب YOLOv5 ممکن است به سرعت با استفاده از pip تکمیل شود. Pip یک مدیر بسته پایتون است. مراحل کلی برای نصب YOLOv5 به شرح زیر است:
1- PyTorch را نصب کنید: چون YOLOv5 بر اساس چارچوب PyTorch است، ابتدا باید PyTorch را نصب کنید.
pip install torch torchvision
2. CUDA را نصب کنید: اگر قصد دارید YOLOv5 را روی یک GPU اجرا کنید، باید CUDA را نصب کنید.
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 (تشخیص، اطمینان، 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 تهیه می کنم و این وب به من کمک می کند تا اطلاعاتی در مورد آن جستجو کنم.
من به هوش مصنوعی بسیار علاقه مند هستم.
اگر می توانید سؤالات زیادی در مورد هوش مصنوعی دارم شاید بتوانید به من کمک کنید
متشکرم