Я никогда не использовал сеть Yolo, поэтому тестирую ее на наборе данных NFL.

Полезный материал

Страница Github и официальные документы

Ноутбук

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

Как индивидуально обучить сеть

Самое главное при использовании Yolov5 (для обучения пользовательского набора данных) — это понять, как настроить структуру папок.

Здесь у нас есть:

  • parent_folder: название говорит само за себя
  • images: содержит изображения поезда, действительного и тестового набора (в данном случае отсутствует).
  • labels: то же самое для папки с изображениями.
  • yolov5: это папка, в которую мы клонируем репозиторий github.
  • данные: они уже присутствуют в репозитории. В него мы помещаем наш пользовательский файл yaml (я назвал его data.yaml) для пользовательского обучения.

Класс

В этом примере у нас есть пять разных меток, а именно

classes = image_labels['label'].unique().tolist()
# classes -> ['Helmet', 'Helmet-Blurred', 'Helmet-Difficult', 'Helmet-Sideline', 'Helmet-Partial']

Обратите внимание, что они должны иметь 0-индексацию, поэтому позже, когда мы создадим файл label txt, Helmet станет 0, Helmet-Blurred 1 и так далее…

Как сопоставить изображения с меткой

Как видно из изображения выше (для простоты я привел только два изображения), в папке поезда у нас есть img0.jpg и img1.jpg. Более того, у меня есть соответствующие текстовые файлы ярлыков.

Какое содержание файла img0.txt?

Каждый файл должен содержать одну строку для каждого объекта на изображении со следующей информацией:

class x_center y_center width height

См. дополнительную информацию https://docs.ultralytics.com/tutorials/train-custom-datasets/#2-create-labels

Пользовательский файл yaml

Wandb

Yolov5 интегрирован с Wandb, посмотрите здесь

import wandb
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
secret_value = user_secrets.get_secret(“wandb-login”)
wandb.login(key=secret_value)

Тренироваться

Я тренировал yolov5 (самый маленький)

train.py находится внутри каталога yolov5

По вопросам выбора модели обращайтесь здесь. Параметры project предназначены для wandb, img для размера изображения.

Вывод

Это код, который я использовал для создания видео (с прогнозами), которое вы можете увидеть на миниатюре.

Получить координаты ограничивающей рамки

результаты теперь содержат

Давайте повторим и построим прямоугольник

Результат

Результат как-то ожидаем. Если мы упорядочим метку по сложности, мы получим

['Helmet-Difficult', 'Helmet-Partial', 'Helmet-Blurred', 'Helmet-Sideline','Helmet' ]

Это уверенно отражается на счете f1. Результат идентичный

Улучшить результат с сеткой yolov5 medium?

Да, но обучение на Kaggle занимает много времени. Модели обучались всего с 10 эпохами.

Сравнение

Мы должны попытаться обучить сеть дольше, изменив ей некоторые гиперпараметры.