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

Висновок щодо виявлення об’єктів у реальному часі в Python із YOLOv7

Вступ

Виявлення об’єктів — це велика область комп’ютерного зору та одне з найважливіших застосувань комп’ютерного зору «в дикій природі».

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

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

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

У цьому короткому посібнику ми будемо виконувати виявлення об’єктів у Python за допомогою найсучаснішого YOLOv7.

YOLO Пейзаж і YOLOv7

YOLO (You Look Only Once) це методологія, а також сімейство моделей, побудованих для виявлення об'єктів. З моменту створення в 2015 році YOLOv1, YOLOv2 (YOLO9000) і YOLOv3 були запропоновані тим самим автором (авторами), і спільнота глибокого навчання продовжувала вдосконалювати відкритий вихідний код протягом наступних років.

Ultralytics' YOLOv5 це перша широкомасштабна реалізація YOLO в PyTorch, яка зробила її доступнішою, ніж будь-коли раніше, але основною причиною, чому YOLOv5 завоював таку точку опори, є чудово простий і потужний API, створений навколо нього. Проект абстрагує непотрібні деталі, водночас дозволяє налаштовувати практично всі придатні для використання формати експорту та використовує дивовижні методи, які роблять увесь проект ефективним і оптимальним, наскільки це можливо.

YOLOv5 все ще є основним проектом для створення моделей виявлення об’єктів, і багато репозиторіїв, які прагнуть просунути метод YOLO, починають із YOLOv5 як базової лінії та пропонують подібний API (або просто розгалужують проект і створюють його поверх). Ось такий випадок YOLOR (ви вивчаєте лише одне представлення) і YOLOv7, який побудовано на основі YOLOR (той самий автор). YOLOv7 є останнім досягненням у методології YOLO, і особливо YOLOv7 надає нові головки моделі, які можуть виводити ключові точки (скелети) і виконувати сегментацію екземплярів, окрім лише регресії обмежувальної рамки, яка не була стандартною для попередніх моделей YOLO.

Це робить сегментацію екземплярів і визначення ключових точок швидше, ніж будь-коли раніше!

Крім того, YOLOv7 працює швидше та з вищим ступенем точності, ніж попередні моделі, завдяки зменшеній кількості параметрів і вищій обчислювальній ефективності:

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

Сама модель була створена шляхом архітектурних змін, а також оптимізації аспектів навчання, які отримали назву «мішок безкоштовних подарунків», що підвищило точність без збільшення вартості висновків.

Встановлення YOLOv7

Встановлення та використання YOLOv7 зводиться до завантаження репозиторію GitHub на вашу локальну машину та запуску сценаріїв, які постачаються разом із ним.

Примітка: На жаль, на момент написання YOLOv7 не пропонує чистого програмного API, такого як YOLOv5, який зазвичай завантажується з torch.hub(), передаючи репозиторій GitHub. Здається, це функція, яка має працювати, але наразі не працює. Коли це буде виправлено, я оновлю посібник або опублікую новий у програмному API. Наразі ми зосередимося на сценаріях висновків, наданих у сховищі.

Незважаючи на це, ви можете виконувати виявлення в реальному часі відео, зображень тощо та легко зберігати результати. Проект дотримується тих самих умов, що й YOLOv5, який має обширну документацію, тож ви, ймовірно, знайдете відповіді на інші нішеві запитання в репозиторії YOLOv5, якщо такі у вас є.

Давайте завантажимо репозиторій і виконаємо деякі висновки:

! git clone https://github.com/WongKinYiu/yolov7.git

Це створює yolov7 у вашому поточному робочому каталозі, в якому міститься проект. Давайте перемістимося в цей каталог і подивимося на файли:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

Примітка: На блокноті Google Colab вам доведеться запустити магію %cd у кожній комірці, на яку ви бажаєте змінити свій каталог yolov7, тоді як наступна клітинка повертає вас до вихідного робочого каталогу. На локальних блокнотах Jupyter, зміна каталогу один раз тримає вас у ньому, тому немає потреби повторювати команду кілька разів.

Команда detect.py це сценарії висновків, які запускають виявлення та зберігають результати в runs/detect/video_name, де можна вказати video_name під час виклику detect.py сценарій export.py експортує модель у різні формати, такі як ONNX, TFLite тощо. train.py можна використовувати для навчання спеціального детектора YOLOv7 (тема іншого посібника), а також test.py можна використовувати для перевірки детектора (завантажується з файлу ваг).

Кілька додаткових каталогів містять конфігурації (cfg), приклад даних (inference), дані про побудову моделей та конфігурацій COCO (data) І т.д.

YOLOv7 Розміри

Моделі на основі YOLO добре масштабуються і зазвичай експортуються як менші, менш точні моделі та більші, більш точні моделі. Потім вони розгортаються відповідно на слабших або сильніших пристроях.

YOLOv7 пропонує кілька розмірів і порівнює їх із MS COCO:

Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!

Model Розмір тесту APтест AP50 тест AP75 тест партія 1 кадр/с партія 32 середній час
YOLov7 640 51.4% 69.7% 55.9% 161 кадрів в секунду 2.8 мс
YOLOv7-X 640 53.1% 71.2% 57.8% 114 кадрів в секунду 4.3 мс
YOLOv7-W6 1280 54.9% 72.6% 60.1% 84 кадрів в секунду 7.6 мс
YOLOv7-E6 1280 56.0% 73.5% 61.2% 56 кадрів в секунду 12.3 мс
YOLOv7-D6 1280 56.6% 74.0% 61.8% 44 кадрів в секунду 15.0 мс
YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36 кадрів в секунду 18.7 мс

Залежно від базового апаратного забезпечення, на якому ви очікуєте роботу моделі, і необхідної точності – ви можете вибрати між ними. Найменша модель досягає понад 160 кадрів/с на зображеннях розміром 640 на V100! Ви також можете очікувати задовільну продуктивність у реальному часі на більш поширених споживчих графічних процесорах.

Відеоінференція з YOLOv7

створити inference-data папку для зберігання зображень і/або відео, з яких ви хочете визначити. Якщо припустити, що він знаходиться в тому самому каталозі, ми можемо запустити сценарій виявлення за допомогою:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

Це підкаже відео на основі Qt на вашому робочому столі, у якому ви зможете побачити поточний прогрес і висновок, кадр за кадром, а також вивести статус у наш стандартний вихідний канал:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

Зауважте, що проект працюватиме повільніше на машинах із процесором (наприклад, 1000 мс на крок висновку у вихідних даних вище, запущено на MacBook Pro 2017 року на основі Intel) і значно швидше на машинах із графічним процесором (ближче до ~5 мс/кадр на V100). Навіть у системах на основі ЦП, таких як ця, yolov7-tiny.pt біжить на 172ms/frame, який, хоча й далекий від реального часу, все ж дуже пристойний для обробки цих операцій на ЦП.

Після завершення запуску ви можете знайти отримане відео нижче runs/video_1 (назва, яку ми вказали в detect.py дзвінок), збережено як an .mp4:

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

Висновок за образами

Висновок щодо зображень зводиться до того самого процесу – надання URL-адреси зображення у файловій системі та виклик detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

Примітка: На момент написання вихідні дані не масштабують мітки до розміру зображення, навіть якщо ви встановили --img SIZE. Це означає, що великі зображення матимуть дуже тонкі обмежувальні рамки та маленькі мітки.

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

Висновок

У цьому короткому посібнику ми коротко ознайомилися з YOLOv7, останнім досягненням у сімействі YOLO, яке базується на YOLOR. Ми розглянули, як встановити репозиторій на вашому локальному комп’ютері та запустити сценарії визначення об’єктів із попередньо навченою мережею на відео та зображеннях.

У наступних посібниках ми розглянемо виявлення ключових точок і сегментацію екземплярів.

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

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

Висновок щодо виявлення об’єктів у реальному часі в Python із YOLOv7 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
  • Оптимізація моделі Deep Learning для комп’ютерного зору

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

Більше від Stackabuse