Як навчити спеціальний набір даних за допомогою YOLOv5?

Як навчити спеціальний набір даних за допомогою YOLOv5?

Вихідний вузол: 1953267

Вступ

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

You Only Look Once, або YOLO, є одним із найпоширеніших методів ідентифікації об’єктів на основі глибокого навчання. Використовуючи спеціальний набір даних, ця стаття покаже вам, як навчити одну з його останніх варіацій, YOLOv5.

Мета навчання 

  1. Ця стаття буде зосереджена головним чином на навчанні моделі YOLOv5 для реалізації спеціального набору даних.
  2. Ми побачимо, що таке попередньо навчені моделі, і побачимо, що таке трансферне навчання.
  3. Ми розберемося, що таке YOLOv5 і чому ми використовуємо 5 версію YOLO.

Отже, не гаючи часу, приступимо до процесу

Зміст

  1. Попередньо навчені моделі
  2. Трансферне навчання
  3. Що і чому YOLOv5?
  4. Етапи, що входять до трансферного навчання
  5. Реалізація
  6. Деякі проблеми, з якими ви можете зіткнутися
  7. Висновок

Попередньо навчені моделі

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

Ось як TensorFlow веб-сайт визначає попередньо підготовлені моделі: Попередньо навчена модель — це збережена мережа, яка була попередньо навчена на великому наборі даних, як правило, на великомасштабному завданні класифікації зображень.

Деякі високооптимізовані та надзвичайно ефективні попередньо навчені моделі доступні в Інтернеті. Для виконання різних завдань використовуються різні моделі. Деякі з попередньо навчених моделей: VGG-16, VGG-19, YOLOv5, YOLOv3 і ResNet 50.

Яку модель використовувати залежить від завдання, яке ви хочете виконати. Наприклад, якщо я хочу виконати виявлення об'єкта завдання, я буду використовувати модель YOLOv5.

Трансферне навчання

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

Отже, передача навчання в основному означає передачу знань, отриманих під час навчання моделі на попередніх даних, щоб допомогти моделі навчитися краще та швидше виконувати інше, але подібне завдання.

Наприклад, використання YOLOv5 для виявлення об’єкта, але об’єкт є чимось іншим, ніж попередні використані дані об’єкта.

Що і чому YOLOv5?

YOLOv5 — це попередньо навчена модель, яка означає, що ви дивитеся лише після того, як версія 5 використовується для виявлення об’єктів у реальному часі, і вона довела свою високу ефективність з точки зору точності та часу висновку. Існують інші версії YOLO, але, як можна було передбачити, YOLOv5 працює краще, ніж інші версії. YOLOv5 швидкий і простий у використанні. Він заснований на структурі PyTorch, яка має більшу спільноту, ніж Yolo v4 Darknet.

Йолов5

Тепер ми розглянемо архітектуру YOLOv5.

Структура може виглядати заплутаною, але це не має значення, оскільки нам не потрібно дивитися на архітектуру, замість цього безпосередньо використовувати модель і ваги.

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

Етапи, пов’язані з трансферним навчанням

Трансферне навчання – це простий процес, і ми можемо зробити це за кілька простих кроків:

  1. Підготовка даних
  2. Правильний формат для анотацій
  3. Змініть кілька шарів, якщо хочете
  4. Повторно навчіть модель для кількох ітерацій
  5. Підтвердити/перевірити

Підготовка даних

Підготовка даних може зайняти багато часу, якщо вибрані вами дані дещо великі. Підготовка даних означає анотування зображень, тобто процес, у якому ви позначаєте зображення, створюючи рамку навколо об’єкта на зображенні. При цьому координати позначеного об’єкта будуть збережені у файлі, який потім буде передано моделі для навчання. Є кілька веб-сайтів, наприклад Makesense.ai та roboflow.com, який може допомогти вам позначити дані. 

Ось як ви можете анотувати дані для моделі YOLOv5 на makesense.ai.

1. візит https://www.makesense.ai/. 

2. Натисніть «Почати» в нижньому правому куті екрана.

Йолов5

3. Виберіть зображення, які потрібно позначити, натиснувши на поле, виділене в центрі.

Завантажте зображення, які ви хочете анотувати, і натисніть «Виявлення об’єкта».
Йолов5

4. Після завантаження зображень вам буде запропоновано створити мітки для різних класів вашого набору даних.

Я виявляю номерні знаки на транспортному засобі, тому єдиний ярлик, який я буду використовувати, це «номерний знак». Ви можете створити більше міток, просто натиснувши Enter, натиснувши кнопку «+» у лівій частині діалогового вікна.

Після того, як ви створили всі мітки, натисніть «Почати проект».

Йолов5

Якщо ви пропустили якісь мітки, ви можете змінити їх пізніше, натиснувши на дії, а потім відредагуйте мітки.

5. Почніть створювати обмежувальну рамку навколо об’єкта на зображенні. Спочатку ця вправа може бути трохи веселою, але з дуже великими даними вона може бути виснажливою.

обмежувальний ящик

6. Після анотування всіх зображень потрібно зберегти файл, який міститиме координати обмежувальних рамок разом із класом.

Тож вам потрібно перейти до кнопки дій і натиснути на експорт анотацій. Не забудьте позначити опцію «Zip-пакет, що містить файли у форматі YOLO», оскільки це збереже файли у правильному форматі, як того вимагає модель YOLO.

Модель YOLO

7. Це важливий крок, тому виконуйте його уважно.

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

Щоб дати вам уявлення про папку, я створив папку з назвою «CarsData» і створив у цій папці дві папки – «зображення» та «мітки».

yolov5

Усередині двох папок вам потрібно створити ще дві папки з назвами «train» і «val». У папці зображень ви можете розділяти зображення відповідно до свого бажання, але ви повинні бути обережними, розділяючи мітки, оскільки мітки мають відповідати зображенням, які ви розділили.

8. Тепер створіть zip-файл папки та завантажте його на диск, щоб ми могли використовувати його в співпраці.

Реалізація

Тепер ми перейдемо до частини реалізації, яка є дуже простою, але складною. Якщо ви не знаєте, які саме файли потрібно змінити, ви не зможете навчити модель на спеціальному наборі даних. 

Отже, ось коди, яких ви повинні дотримуватися, щоб навчити модель YOLOv5 на спеціальному наборі даних

Я рекомендую вам використовувати google colab для цього підручника, оскільки він також надає графічний процесор, який забезпечує швидші обчислення.

1. Клон !git https://github.com/ultralytics/yolov5
Це створить копію репозиторію YOLOv5, який є репозиторієм GitHub, створеним ultralytics.

2. cd йолов5
Це команда оболонки командного рядка, яка використовується для зміни поточного робочого каталогу на каталог YOLOv5.

3. !pip install -r requirements.txt
Ця команда встановить усі пакети та бібліотеки, які використовуються для навчання моделі.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
Розпакуйте папку, яка містить зображення та мітки, у Google Colab

Ось і найважливіший крок…

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

Ось що вам потрібно зробити.

Після виконання 4 кроків, наведених вище, ви матимете папку yolov5 у вашому Google Colab. Перейдіть до папки yolov5 і клацніть папку «data». Тепер ви побачите папку з назвою "coco128.yaml". 

yolov5

Завантажте цю папку.

Після завантаження папки вам потрібно внести в неї кілька змін і завантажити її назад у ту саму папку, з якої ви її завантажили.

Давайте тепер подивимося на вміст файлу, який ми завантажили, і він буде виглядати приблизно так.

yolov5

Ми збираємося налаштувати цей файл відповідно до нашого набору даних і анотацій.

Ми вже розархівували набір даних у colab, тож збираємося скопіювати шлях нашого потягу та зображення перевірки. Після копіювання шляху зображень поїздів, які будуть у папці набору даних і виглядатимуть приблизно так: "/content/yolov5/CarsData/images/train", вставте його у файл coco128.yaml, який ми щойно завантажили.

Зробіть те ж саме з зображеннями тесту та перевірки.

Тепер, коли ми закінчили з цим, ми згадаємо кількість класів, наприклад «nc: 1». Кількість класів у цьому випадку становить лише 1. Потім ми згадаємо назву, як показано на зображенні нижче. Видаліть усі інші класи та частину з коментарями, яка не потрібна, після чого наш файл має виглядати приблизно так.

Yolo

Збережіть цей файл під будь-якою назвою. Я зберіг файл із назвою customPath.yaml і тепер завантажую його назад до спільної роботи в тому самому місці, де був coco128.yaml. 

Тепер ми закінчили з частиною редагування та готові до навчання моделі.

Виконайте наведену нижче команду, щоб навчити свою модель для кількох взаємодій із вашим настроюваним набором даних.

Не забудьте змінити назву файлу, який ви завантажили ('customPath.yaml). Ви також можете змінити кількість епох, за якими ви хочете навчити модель. У цьому випадку я збираюся навчити модель лише для 3 епох.

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

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

Після виконання цієї команди ваша модель має розпочати навчання, і ви побачите щось подібне на екрані.

Yolo

Yolo

Після завершення всіх епох вашу модель можна протестувати на будь-якому зображенні.

Ви можете зробити додаткові налаштування у файлі detect.py щодо того, що ви хочете зберегти, а що вам не подобається, виявлення номерних знаків тощо.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –вихідний шлях_до_зображення

Ви можете використовувати цю команду, щоб перевірити передбачення моделі на деяких зображеннях.

Деякі проблеми, з якими ви можете зіткнутися

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

  1. Неправильний шлях: це може бути головним болем або проблемою. Якщо ви ввели неправильний шлях десь під час навчання зображення, це може бути непросто ідентифікувати, і ви не зможете навчити модель.
  2. Неправильний формат міток: це широко поширена проблема, з якою стикаються люди під час навчання YOLOv5. Модель приймає лише формат, у якому кожне зображення має власний текстовий файл із потрібним форматом усередині. Часто файл у форматі XLS або один файл CSV передається в мережу, що призводить до помилки. Якщо ви завантажуєте дані звідкись, замість того, щоб анотувати кожне зображення, може бути інший формат файлу, у якому зберігаються мітки. Ось стаття про перетворення формату XLS у формат YOLO. (посилання після завершення статті).
  3. Неправильна назва файлів: неправильна назва файлу знову призведе до помилки. Зверніть увагу на кроки під час іменування папок і уникайте цієї помилки.

Висновок

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

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

Більше від Аналітика Vidhya