Я никогда не использовал сеть 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 эпохами.
Сравнение
Мы должны попытаться обучить сеть дольше, изменив ей некоторые гиперпараметры.