YOLO چیست؟( تشخیص همزمان چند شیء)
وقتی میخواهیم چندین شیء را همزمان در تصویر ربات پیدا کنیم (مثلاً چند مانع، چند جعبه یا چند برچسب)، از مدلهای خانواده YOLO استفاده میکنیم.
YOLO مخفف You Only Look Once (فقط یکبار نگاه کن) است، یک مدل هوش مصنوعی است که برای تشخیص اشیا در تصاویر و ویدیوها استفاده میشود. این مدل به جای این که تصویر را بخشبخش بررسی کند، کل تصویر را یکباره پردازش میکند، به همین دلیل سریع و دقیق است.
یک سیستم پیشرفته تشخیص اشیا در زمان واقعی است که برخلاف روشهای سنتی (مثل R-CNN یا Fast R-CNN)، کل فرآیند تشخیص را در یک مرحله انجام میدهد. این مدل بهدلیل سرعت بالا و دقت قابلقبول، بهویژه در سیستمهای بلادرنگ (Real-Time) مانند خودروهای خودران، دوربینهای نظارتی و رباتها محبوبیت گستردهای دارد.
نسخههای اصلی YOLO
| نسخه | سال انتشار | ویژگیهای کلیدی |
|---|---|---|
| YOLOv1 | 2016 | معرفی معماری تکمرحلهای و تقسیم تصویر به شبکه 7×7. |
| YOLOv2 | 2017 | افزودن Anchor Boxes و بهبود دقت با استفاده از Darknet-19. |
| YOLOv3 | 2018 | استفاده از Darknet-53، افزودن Feature Pyramid Network (FPN) و Multi-Label Classification. |
| YOLOv4 | 2020 | بهینهسازی با CSPDarknet53، PANet و تکنیکهای Data Augmentation پیشرفته. |
| YOLOv5 | 2020 | نسخه غیررسمی مبتنی بر PyTorch با تمرکز بر سادگی استقرار. |
| YOLOv6-8 | 2022-2023 | بهبود سرعت و دقت با RepVGG Backbone، Task-Aligned Assigner و Distillation. |
| YOLO-NAS | 2023 | توسعه با Neural Architecture Search (NAS) توسط شرکت Deci برای بهینهسازی خودکار. |
نحوه کار YOLO
تقسیم تصویر به صورت شبکهای(Grid):
تصویر ورودی به یک شبکه (مثلاً 13×13 یا 19×19) تقسیم میشود. هر سلول شبکه مسئول تشخیص اشیایی است که مرکز آنها در آن سلول قرار دارد.پیشبینی Bounding Box و کلاس:
هر سلول شبکه:مختصات جعبه مرزی (x, y, width, height).
امتیاز اطمینان (Confidence Score) که نشاندهنده احتمال وجود شی در جعبه است.
احتمالات کلاس (Class Probabilities) برای دستهبندی شی (مثلاً انسان، ماشین، …).
فیلترسازی با Non-Max Suppression (NMS):
جعبههای تکراری یا با اطمینان پایین حذف میشوند تا تنها بهترین پیشبینیها باقی بمانند.تابع زیان (Loss Function):
ترکیبی از سه جزء:خطای موقعیت جعبه (MSE برای x, y, width, height).
خطای اطمینان (Binary Cross-Entropy برای Confidence Score).
خطای طبقهبندی (Cross-Entropy برای Class Probabilities).
YOLO توسط چه شرکت یا شخصی ساخته شد؟
مدل YOLO اولین بار در سال ۲۰۱۵ توسط Joseph Redmon و تیم او معرفی شد. او یک پژوهشگر در زمینه هوش مصنوعی و بینایی کامپیوتری بود که در دانشگاه واشنگتن کار میکرد. مدل اولیه در مقالهای با عنوان “You Only Look Once: Unified, Real-Time Object Detection” منتشر شد.
بعد از نسخههای اول، تیمهای دیگر از جمله Ultralytics مدلهای جدیدتری مانند YOLOv8 را توسعه دادند. امروزه YOLO یکی از محبوبترین مدلهای تشخیص اشیا در سراسر جهان است و در شرکتهای مختلف استفاده میشود.
برخی موارد کاربرد مدل هوش مصنوعی YOLO
موارد استفاده YOLO با مثال
YOLO در زمینههای زیادی استفاده میشود. در اینجا برخی از مهمترین کاربردهای آن را همراه با مثال توضیح میدهیم.
۱. خودروهای خودران 🚗
✅ کاربرد: تشخیص موانع، عابران پیاده، وسایل نقلیه دیگر، علائم راهنمایی و رانندگی
✅ مثال: خودروهای خودران شرکت تسلا (Tesla) از مدلهای مشابه YOLO برای تحلیل تصاویر دوربینهای خودرو استفاده میکنند تا مسیر را شناسایی کنند و از تصادف جلوگیری کنند.
۲. دوربینهای امنیتی و نظارت 📷
✅ کاربرد: تشخیص ورود افراد غیرمجاز، شناسایی چهره، جلوگیری از سرقت
✅ مثال: دوربینهای امنیتی هوشمند مانند Google Nest Cam میتوانند با استفاده از YOLO حضور افراد را تشخیص دهند و هشدار ارسال کنند.
۳. تحلیل بازیهای ورزشی ⚽
✅ کاربرد: بررسی حرکات بازیکنان، توپ، داور و تاکتیکهای بازی
✅ مثال: در مسابقات فوتبال، YOLO میتواند حرکت بازیکنان و توپ را ردیابی کند و اطلاعات مفیدی برای مربیان ارائه دهد.
۴. سیستمهای پزشکی و تشخیص بیماری 🏥
✅ کاربرد: شناسایی تومورها، بررسی تصاویر پزشکی مانند MRI و X-ray
✅ مثال: برخی بیمارستانها از YOLO برای تشخیص سرطان از روی تصاویر سیتی اسکن استفاده میکنند.
۵. روباتیک و هوش مصنوعی 🤖
✅ کاربرد: کمک به رباتها برای دیدن محیط اطراف و انجام وظایف
✅ مثال: در کارخانههای آمازون (Amazon)، رباتهای خودکار از YOLO برای تشخیص محصولات و بستهبندی کالاها استفاده میکنند.
۶. فروشگاههای هوشمند 🛒
✅ کاربرد: شناسایی محصولات بدون نیاز به اسکن دستی، تجربه خرید بدون صندوق
✅ مثال: در فروشگاههای Amazon Go، YOLO کمک میکند تا مشتریان بتوانند بدون نیاز به پرداخت دستی خرید کنند؛ دوربینها اجناس برداشته شده را شناسایی میکنند.
۷. کمک به نابینایان 🦯
✅ کاربرد: تشخیص موانع، خواندن تابلوهای خیابان، شناسایی افراد
✅ مثال: برخی اپلیکیشنها مانند Seeing AI از مایکروسافت، از مدلهایی مانند YOLO برای توصیف محیط برای افراد نابینا استفاده میکنند.
مزایا و معایب مدل هوش مصنوعی YOLO
مزایای YOLO
سرعت بالا: قادر به پردازش 30-60 فریم بر ثانیه (FPS) حتی روی GPUهای متوسط.
سادگی استقرار: پیادهسازی آسان با کتابخانههایی مانند PyTorch، TensorFlow یا OpenCV.
بهینه برای دستگاههای لبه: نسخههای سبک (مثل YOLO-Tiny) روی رزبریپای یا موبایل اجرا میشوند.
پشتیبانی از چندین کلاس: قابلیت تشخیص همزمان دهها تا هزاران شی (بسته به تنظیمات آموزش).
معایب YOLO
دقت پایینتر در اشیا کوچک: بهدلیل تقسیم تصویر به شبکههای درشت.
مشکل در تشخیص اشیا با همپوشانی بالا: ممکن است جعبههای مرزی را بهدرستی تفکیک نکند.
وابستگی به تنظیم Anchor Boxes: در نسخههای قدیمی، نیاز به تنظیم دستی دارد.
چگونه از YOLO استفاده کنیم؟
برای این کار، باید برنامهای بنویسیم که تصویر یا ویدیو را پردازش کند و اشیای داخل آن را تشخیص دهد. این کار معمولاً با زبان پایتون انجام میشود.
۱. نصب کتابخانههای لازم
ابتدا باید OpenCV و YOLO را نصب کنیم:
مقایسه YOLO با مدلهای مشابه
| مدل | سرعت (FPS) | دقت (mAP) | معماری | کاربرد اصلی |
|---|---|---|---|---|
| YOLOv8 | 65 | 53.9 | تک مرحلهای | سیستمهای بلادرنگ |
| Faster R-CNN | 7 | 70.4 | دومرحلهای | دقت بالا (غیربلادرنگ) |
| SSD | 22 | 46.5 | تک مرحلهای | موبایل و IoT |
| RetinaNet | 14 | 59.1 | تک مرحلهای |
مثال ساده از به کارگیری مدل yolo
استفاده از مدل از پیش آموزشدیده:
# با استفاده از کتابخانه Ultralytics (YOLOv8) from ultralytics import YOLO model = YOLO('yolov8n.pt') # نسخه Nano results = model('image.jpg') results.show()
استفاده از YOLO برای تشخیص اشیا
در این مثال، ما از YOLOv8 برای تشخیص اشیا در یک تصویر استفاده میکنیم.
from ultralytics import YOLO
import cv2
# مدل YOLO را بارگیری میکنیم
model = YOLO("yolov8n.pt") # مدل از قبل آموزش دیده# تصویر مورد نظر را بارگذاری میکنیم
image_path = "image.jpg"
image = cv2.imread(image_path)
# پردازش تصویر و تشخیص اشیا
results = model(image)
# نمایش نتیجهresults.show()
۳. استفاده در ویدیو (دوربین زنده)
اگر بخواهید از دوربین لپتاپ یا یک ویدیو استفاده کنید:
cap = cv2.VideoCapture(0) # 0 یعنی دوربین لپتاپ
model = YOLO("yolov8n.pt")
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame)
results.show()
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
جمعبندی
YOLO بهدلیل معماری تکمرحلهای و سرعت بینظیر، به استانداردی برای تشخیص اشیا در زمان واقعی تبدیل شده است. با وجود چالشهایی مثل دقت محدود در اشیا کوچک، نسخههای جدید (مانند YOLOv8 و YOLO-NAS) با بهرهگیری از تکنیکهای NAS و بهینهسازی Backbone، عملکرد آن را بهطور مداوم بهبود بخشیدهاند. این مدل برای توسعهدهندهگانی که نیاز به تعادل بین سرعت، دقت و مصرف منابع دارند، گزینهای ایدهآل است.



