Висновок виявлення об’єктів у Python із YOLOv5 і PyTorch PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Висновок виявлення об’єктів у Python за допомогою YOLOv5 і PyTorch

Вступ

Виявлення об’єктів — це велика область комп’ютерного зору та одне з найважливіших застосувань комп’ютерного зору «в дикій природі». З одного боку, його можна використовувати для створення автономних систем, які переміщують агентів у середовищі – будь то роботи, що виконують завдання, або самокеровані автомобілі, але для цього потрібен перетин з іншими сферами. Проте виявлення аномалій (наприклад, бракованих продуктів на лінії), визначення місцезнаходження об’єктів на зображеннях, розпізнавання обличчя та інші інші застосування виявлення об’єктів можна виконати без перетину з іншими полями.

Виявлення об’єктів не є настільки стандартизованим, як класифікація зображень, головним чином тому, що більшість нових розробок зазвичай виконуються окремими дослідниками, супроводжувачами та розробниками, а не великими бібліотеками та фреймворками. Важко упакувати необхідні службові сценарії в такий фреймворк, як TensorFlow або PyTorch, і підтримувати інструкції щодо API, якими досі керувалася розробка.

Це робить виявлення об’єктів дещо складнішим, зазвичай більш детальним (але не завжди) і менш доступним, ніж класифікація зображень. Одна з головних переваг перебування в екосистемі полягає в тому, що вона дає вам можливість не шукати корисну інформацію про хороші практики, інструменти та підходи до використання. З виявленням об’єктів – більшості людей доводиться набагато більше досліджувати ландшафт поля, щоб отримати хороший контроль.

На щастя для мас, компанія Ultralytics розробила простий, дуже потужний і красивий API для виявлення об’єктів на основі своєї реалізації YOLOv5.

У цьому короткому посібнику ми будемо виконувати виявлення об’єктів у Python за допомогою YOLOv5, створеного Ultralytics у PyTorch, використовуючи набір попередньо навчених ваг, навчених на MS COCO.

YOLov5

YOLO (You Look Only Once) це методологія, а також сімейство моделей, побудованих для виявлення об'єктів. З моменту створення в 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, який ми можемо вставити в 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 з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди 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 каталог.

Йти далі – практичне глибоке навчання для комп’ютерного зору

Ваша допитлива природа змушує вас йти далі? Ми рекомендуємо перевірити наш Курс: «Практичне глибоке навчання комп’ютерного бачення за допомогою Python».

Висновок виявлення об’єктів у Python із YOLOv5 і PyTorch PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ще один курс комп’ютерного зору?

Ми не будемо класифікувати цифри MNIST або моди MNIST. Вони свою роль давно відслужили. Занадто багато навчальних ресурсів зосереджені на базових наборах даних і базових архітектурах, перш ніж дозволити просунутим архітектурам чорної скриньки взяти на себе тягар продуктивності.

Ми хочемо зосередитися на демістифікація, практичність, розуміння, інтуїція та реальні проекти. Хочеться навчитися як ти можеш змінити ситуацію? Ми проведемо вас у подорожі від того, як наш мозок обробляє зображення, до написання дослідницького класифікатора глибокого навчання для раку молочної залози до мереж глибокого навчання, які «галюцинують», навчаючи вас принципам і теорії через практичну роботу, озброюючи вас ноу-хау та інструменти, щоб стати експертом у застосуванні глибокого навчання для вирішення проблем комп’ютерного зору.

Що всередині?

  • Перші принципи бачення та те, як комп’ютери можна навчити «бачити»
  • Різні задачі та застосування комп'ютерного зору
  • Інструменти, які полегшать вашу роботу
  • Пошук, створення та використання наборів даних для комп’ютерного зору
  • Теорія та застосування згорткових нейронних мереж
  • Обробка зсуву домену, спільного входження та інших упереджень у наборах даних
  • Передача навчання та використання часу навчання та обчислювальних ресурсів інших для вашої вигоди
  • Створення та навчання сучасного класифікатора раку молочної залози
  • Як застосувати здорову дозу скептицизму до основних ідей і зрозуміти наслідки широко поширених методів
  • Візуалізація «концептуального простору» ConvNet за допомогою t-SNE та PCA
  • Тематичні дослідження того, як компанії використовують методи комп’ютерного зору для досягнення кращих результатів
  • Правильна оцінка моделі, візуалізація прихованого простору та ідентифікація уваги моделі
  • Виконання досліджень предметної області, обробка власних наборів даних і створення тестів моделей
  • Передові архітектури, розвиток ідей, що робить їх унікальними та як їх реалізувати
  • KerasCV – бібліотека WIP для створення найсучасніших конвеєрів і моделей
  • Як аналізувати та читати документи та реалізувати їх самостійно
  • Вибір моделей в залежності від вашого застосування
  • Створення наскрізного конвеєра машинного навчання
  • Пейзаж та інтуїція під час виявлення об’єктів за допомогою Faster R-CNN, RetinaNets, SSD та YOLO
  • Екземплярна та семантична сегментація
  • Розпізнавання об'єктів у реальному часі за допомогою YOLOv5
  • Навчання детекторам об’єктів YOLOv5
  • Робота з Transformers за допомогою KerasNLP (потужна бібліотека WIP)
  • Інтеграція Transformers із ConvNets для створення підписів до зображень
  • DeepDream

Висновок

У цьому короткому посібнику ми розглянули, як можна виконувати виявлення об’єктів за допомогою YOLOv5, створеного за допомогою PyTorch.

Часова мітка:

Більше від Stackabuse