معرفی
تشخیص اشیا میدان بزرگی در بینایی کامپیوتری و یکی از مهمترین کاربردهای بینایی کامپیوتر در طبیعت است. از یک طرف، میتوان از آن برای ساخت سیستمهای مستقلی استفاده کرد که عوامل را در محیطها هدایت میکنند – چه روباتهایی که وظایف را انجام میدهند یا ماشینهای خودران، اما این امر مستلزم تقاطع با زمینههای دیگر است. با این حال، تشخیص ناهنجاری (مانند محصولات معیوب در یک خط)، مکان یابی اشیاء در تصاویر، تشخیص چهره و کاربردهای مختلف دیگر تشخیص اشیاء را می توان بدون تلاقی سایر زمینه ها انجام داد.
تشخیص اشیا به اندازه طبقهبندی تصویر استاندارد نیست، عمدتاً به این دلیل که بیشتر پیشرفتهای جدید بهجای کتابخانهها و چارچوبهای بزرگ، معمولاً توسط محققان، نگهداریکنندگان و توسعهدهندگان منفرد انجام میشود. بستهبندی اسکریپتهای کاربردی ضروری در چارچوبی مانند TensorFlow یا PyTorch و حفظ دستورالعملهای API که تاکنون توسعه را هدایت کردهاند، دشوار است.
این امر تشخیص اشیاء را تا حدودی پیچیدهتر، معمولاً پرمخاطبتر (اما نه همیشه) و کمتر از طبقهبندی تصویر میسازد. یکی از مزایای اصلی حضور در یک اکوسیستم این است که راهی برای جستجو نکردن اطلاعات مفید در مورد شیوه های خوب، ابزارها و رویکردهای استفاده در اختیار شما قرار می دهد. با تشخیص اشیاء - بیشتر مردم باید تحقیقات بیشتری در مورد چشم انداز میدان انجام دهند تا به خوبی به آن دست پیدا کنند.
خوشبختانه برای تودهها – Ultralytics یک API تشخیص شی ساده، بسیار قدرتمند و زیبا را پیرامون اجرای YOLOv5 خود توسعه داده است.
در این راهنمای کوتاه، تشخیص اشیا را در پایتون با YOLOv5 که توسط Ultralytics در PyTorch ساخته شده است، با استفاده از مجموعهای از وزنههای از پیش آموزشدیده شده روی MS COCO انجام میدهیم.
YOLOv5
یولو (شما فقط یک بار نگاه می کنید) یک متدولوژی و همچنین خانواده ای از مدل های ساخته شده برای تشخیص اشیا است. از زمان آغاز به کار در سال 2015، YOLOv1، YOLOv2 (YOLO9000) و YOLOv3 توسط نویسنده(های) یکسانی پیشنهاد شدهاند - و جامعه یادگیری عمیق با پیشرفتهای منبع باز در سالهای ادامه دار ادامه داد.
Ultralytics' YOLOv5 اولین پیاده سازی در مقیاس بزرگ YOLO در PyTorch است که آن را بیش از هر زمان دیگری در دسترس قرار داده است، اما دلیل اصلی که YOLOv5 چنین جایگاهی را به دست آورده است API بسیار ساده و قدرتمندی است که پیرامون آن ساخته شده است. این پروژه جزئیات غیر ضروری را انتزاع میکند، در حالی که امکان سفارشیسازی، عملاً همه قالبهای صادراتی قابل استفاده را فراهم میکند، و از شیوههای شگفتانگیزی استفاده میکند که کل پروژه را هم کارآمد و هم بهینه میکند. در واقع، این نمونه ای از زیبایی اجرای نرم افزار منبع باز است، و اینکه چگونه به دنیایی که در آن زندگی می کنیم، قدرت می بخشد.
این پروژه وزنهای از پیش آموزشدیدهشدهای را بر روی MS COCO ارائه میکند، یک مجموعه داده اصلی بر روی اشیاء در متن، که میتواند هم برای محک زدن و هم برای ساختن سیستمهای تشخیص اشیاء عمومی استفاده شود – اما مهمتر از همه، میتواند برای انتقال دانش عمومی از اشیاء در زمینه به سفارشی استفاده شود. مجموعه داده ها
تشخیص اشیا با YOLOv5
قبل از حرکت به جلو، مطمئن شوید که دارید torch
و torchvision
نصب شده است:
! python -m pip install torch torchvision
همانطور که در خود مخزن و در مثال زیر نشان داده شده است، YOLOv5 مستندات دقیق و بی معنی و یک API بسیار ساده دارد:
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 را برمی گرداند که می توانیم آن را در یک chuck کنیم imshow()
زنگ زدن. این منجر به یک قالب بندی خوب می شود:
ذخیره نتایج به عنوان فایل
می توانید نتایج استنتاج را به صورت فایل با استفاده از results.save()
روش:
results.save(save_dir='results')
اگر دایرکتوری جدیدی وجود نداشته باشد، این یک دایرکتوری جدید ایجاد می کند و همان تصویری را که به تازگی رسم کرده ایم به عنوان یک فایل ذخیره می کند.
برش اشیاء
همچنین می توانید تصمیم بگیرید که اشیاء شناسایی شده را به عنوان فایل های جداگانه برش دهید. در مورد ما، برای هر برچسب شناسایی شده، تعدادی تصویر را می توان استخراج کرد. این به راحتی از طریق results.crop()
روشی که a را ایجاد می کند 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 را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google 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
دایرکتوری.
رفتن به جلو - یادگیری عمیق عملی برای بینایی کامپیوتر
طبیعت کنجکاو شما باعث می شود که بخواهید جلوتر بروید؟ توصیه می کنیم ما را بررسی کنید دوره: "یادگیری عمیق عملی برای بینایی کامپیوتر با پایتون".
یکی دیگر از دوره های بینایی کامپیوتر؟
ما طبقه بندی ارقام MNIST یا مد MNIST را انجام نخواهیم داد. آنها مدتها پیش نقش خود را انجام دادند. بسیاری از منابع یادگیری قبل از اینکه به معماریهای جعبه سیاه پیشرفته اجازه دهند بار عملکرد را به دوش بکشند، روی مجموعه دادههای پایه و معماریهای پایه تمرکز میکنند.
ما می خواهیم روی آن تمرکز کنیم ابهام زدایی, عملی بودن, درک, شهود و پروژه های واقعی. می خواهند یاد بگیرند چگونه تو می توانی تفاوت ایجاد کنی؟ ما شما را از روشی که مغزمان تصاویر را پردازش میکند تا نوشتن طبقهبندیکننده یادگیری عمیق برای سرطان سینه تا شبکههای یادگیری عمیق که «توهم میکنند»، آموزش اصول و تئوری به شما از طریق کار عملی، و تجهیز شما به دانش و ابزارهایی برای تبدیل شدن به یک متخصص در استفاده از یادگیری عمیق برای حل بینایی کامپیوتر.
داخل چیست؟
- اولین اصول بینایی و نحوه آموزش دیدن کامپیوترها
- وظایف و کاربردهای مختلف بینایی کامپیوتر
- ابزارهای تجارت که کار شما را آسان می کند
- یافتن، ایجاد و استفاده از مجموعه داده ها برای بینایی کامپیوتری
- تئوری و کاربرد شبکه های عصبی کانولوشنال
- مدیریت تغییر دامنه، همزمانی و سایر سوگیری ها در مجموعه داده ها
- آموزش را انتقال دهید و از زمان آموزشی و منابع محاسباتی دیگران به نفع خود استفاده کنید
- ساخت و آموزش پیشرفته ترین طبقه بندی سرطان سینه
- چگونه می توان دوز سالمی از شک و تردید را در ایده های جریان اصلی به کار برد و پیامدهای تکنیک های پذیرفته شده را درک کرد
- تجسم فضای مفهومی ConvNet با استفاده از t-SNE و PCA
- مطالعات موردی چگونگی استفاده شرکت ها از تکنیک های بینایی کامپیوتری برای دستیابی به نتایج بهتر
- ارزیابی صحیح مدل، تجسم فضای پنهان و شناسایی توجه مدل
- انجام تحقیقات دامنه، پردازش مجموعه داده های خود و ایجاد آزمون های مدل
- معماری های پیشرفته، پیشرفت ایده ها، آنچه آنها را منحصر به فرد می کند و نحوه اجرای آنها
- KerasCV - یک کتابخانه WIP برای ایجاد خطوط لوله و مدل های پیشرفته
- نحوه تجزیه و خواندن مقالات و پیاده سازی آنها توسط خودتان
- انتخاب مدل ها بسته به برنامه شما
- ایجاد خط لوله یادگیری ماشینی سرتاسر
- چشم انداز و شهود در تشخیص اشیا با R-CNN سریعتر، رتینا نت، SSD و YOLO
- نمونه و تقسیم بندی معنایی
- تشخیص شی در زمان واقعی با YOLOv5
- آموزش آشکارسازهای شی YOLOv5
- کار با ترانسفورماتورها با استفاده از KerasNLP (کتابخانه WIP با قدرت صنعتی)
- ادغام ترانسفورماتورها با ConvNets برای تولید شرح تصاویر
- عمیق
نتیجه
در این راهنمای کوتاه، نگاهی انداختهایم به اینکه چگونه میتوانید با YOLOv5 که با استفاده از PyTorch ساخته شده است، تشخیص شی را انجام دهید.