Перейти к содержимому

Советы для достижения наилучших результатов тренировок

📚 В этом руководстве объясняется, как добиться наилучших результатов в МПД и тренировках с помощью YOLOv5 🚀.

В большинстве случаев хорошие результаты можно получить без каких-либо изменений в моделях или настройках обучения, если твой набор данных достаточно большой и хорошо маркирован. Если поначалу ты не получаешь хороших результатов, есть шаги, которые ты можешь предпринять для улучшения, но мы всегда рекомендуем пользователям сначала потренироваться со всеми настройками по умолчанию, прежде чем рассматривать какие-либо изменения. Это поможет определить базовую производительность и выявить области для улучшения.

Если у тебя есть вопросы по поводу результатов твоих тренировок Мы рекомендуем тебе предоставить максимальное количество информации если ты ожидаешь полезного ответа, включая графики результатов (train losses, val losses, P, R, mAP), кривую PR, матрицу смешения, обучающие мозаики, результаты тестов и изображения статистики набора данных, такие как labels.png. Все это находится в твоем каталоге project/name каталог, обычно yolov5/runs/train/exp.

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

Набор данных

  • Изображения на класс. ≥ Рекомендуется 1500 изображений на класс.
  • Экземпляры на класс. ≥ 10000 экземпляров (помеченных объектов) на класс рекомендуется
  • Разнообразие образов. Они должны быть репрезентативными для развернутой среды. Для реальных случаев использования мы рекомендуем использовать изображения из разного времени суток, разных сезонов, разной погоды, разного освещения, разных ракурсов, разных источников (взятые из сети, собранные на месте, с разных камер) и т.д.
  • Согласованность меток. Все экземпляры всех классов на всех изображениях должны быть помечены. Частичная маркировка не подойдет.
  • Точность наклеивания этикеток. Этикетки должны плотно облегать каждый объект. Между объектом и его ограничительной рамкой не должно быть пространства. Ни один объект не должен быть лишен метки.
  • Проверка этикетки. Посмотреть train_batch*.jpg При запуске поезда проверь правильность наклеек, т.е. посмотри пример Мозаика.
  • Фоновые изображения. Фоновые изображения - это изображения без объектов, которые добавляются в набор данных, чтобы уменьшить количество ложноположительных результатов (ЛП). Мы рекомендуем использовать около 0-10% фоновых изображений, чтобы помочь уменьшить ЛП (для сравнения в COCO есть 1000 фоновых изображений, 1% от общего количества). Для фоновых изображений не требуется никаких меток.

Анализ КОКО

Выбор модели

Более крупные модели, такие как YOLOv5x и YOLOv5x6, дают лучшие результаты почти во всех случаях, но имеют больше параметров, требуют больше памяти CUDA для обучения и медленнее работают. Для мобильных развертываний мы рекомендуем YOLOv5s/m, для облачных - YOLOv5l/x. Полное сравнение всех моделей смотри в нашей таблице README.

YOLOv5 Модели

  • Начни с предварительно обученных весов. Рекомендуется для наборов данных небольшого и среднего размера (т.е. VOC, VisDrone, GlobalWheat). Передай название модели в --weights Аргумент. Модели загружаются автоматически из Последний выпуск YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Начни с нуля. Рекомендуется для больших наборов данных (т.е. COCO, Объекты365, OIv6). Передай интересующую тебя архитектуру модели YAML вместе с пустым --weights '' аргумент:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Тренировочные настройки

Прежде чем что-то изменять, сначала потренируйся с настройками по умолчанию, чтобы определить базовую производительность. Полный список настроек train.py можно найти в аргпарсере train.py.

  • Эпохи. Начни с 300 эпох. Если оверфиттинг произойдет раньше, то ты можешь уменьшить количество эпох. Если оверфиттинг не происходит после 300 эпох, тренируйся дольше, то есть 600, 1200 и т.д. эпох.
  • Размер изображения. COCO тренируется с родным разрешением --img 640Хотя из-за большого количества мелких объектов в наборе данных он может выиграть от обучения на более высоких разрешениях, таких как --img 1280. Если в нем много мелких объектов, то пользовательские наборы данных выиграют от обучения в родном или более высоком разрешении. Лучшие результаты умозаключений достигаются при --img при котором проходила тренировка, то есть если ты тренируешься при --img 1280 Тебе также следует проверить и обнаружить --img 1280.
  • Размер партии. Используй самый большой --batch-size что позволяет твое оборудование. Малые размеры партии дают плохую статистику batchnorm, и их следует избегать.
  • Гиперпараметры. Гиперпараметры по умолчанию находятся в hyp.scratch-low.yaml. Мы рекомендуем тебе сначала потренироваться с гиперпараметрами по умолчанию, прежде чем думать об их изменении. В целом, увеличение гиперпараметров аугментации уменьшит и отсрочит оверфиттинг, что позволит дольше тренироваться и получить более высокий итоговый mAP. Уменьшение гиперпараметров усиления компонентов потерь, таких как hyp['obj'] поможет уменьшить перебор в этих конкретных компонентах потерь. Об автоматизированном методе оптимизации этих гиперпараметров читай в нашей статье Самоучитель по эволюции гиперпараметров.

Дальнейшее чтение

Если ты хочешь узнать больше, то начать стоит с книги Карпати "Рецепт обучения нейронных сетей", в которой есть отличные идеи по обучению, применимые во всех областях ML: https://karpathy.github.io/2019/04/25/recipe/.

Удачи 🍀 и дай нам знать, если у тебя возникнут другие вопросы!



Создано 2023-11-12, Обновлено 2024-01-12
Авторы: glenn-jocher (3)

Комментарии