Обучение модели YOLOv5

глубокое обучение

Программно-аппаратная среда

  • ubuntu 18.04 64bit
  • anaconda with 3.7
  • nvidia gtx 1070Ti
  • cuda 10.1
  • pytorch 1.5
  • YOLOv5

Конфигурация среды YOLOv5

Пожалуйста, обратитесь к предыдущей статье,Обнаружение цели YOLOv5

Использование набора данных COCO

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

$ python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
                                         yolov5m                                48
                                         yolov5l                                32
                                         yolov5x                                16

COCOДоступ к набору данных можно получить черезdataв папкеget_coco2017.shскрипт для загрузки, включая изображения иlableдокумент.COCOНабор данных действительно слишком велик, весь сжатый пакет имеет 18G, учитывая скорость Интернета и вычислительную мощность машины, давайте вздремнем. . .

Создайте свой собственный набор данных

Если нет общедоступного набора данных, соответствующего цели, то вы можете собрать его только самостоятельно.После того, как изображение в руках, следующим шагом является трудоемкая работа по маркировке.Здесь используются инструменты.LabelImg, адрес загрузки

GitHub.com/Тайзу Таллинн/Ла…

LabelImgиспользоватьQtС графическим интерфейсом операция по-прежнему очень удобна, что является причиной его выбора.class, вы можете удалить эти типы, если они вам не нужны

открыть следующийexeфайл, нажмитеOpenИмпортируйте картинку, нажмите горячую клавишуw, после выбора цели появится поле ввода, напишитеclassимя, ничего страшного, если целей несколько, продолжайте отмечать

labelImgТакже поддерживает импорт папок.Отметив лист, выберите его слеваNext ImageВы можете переключиться на следующий, чтобы продолжить. раздел формата вывода, в настоящее времяlabelImgслужба поддержкиYOLOиPascalOVC2, прежняя информация тега хранится вtxtфайл, а последний хранится вxmlсередина

После маркировки его можно сохранить.Храним изображение и файл этикетки отдельно, но имена файлов соответствующие, но расширение другое.

Наконец, давайте взглянем на содержимое файла тегов.

Одна строка представляет цель, формат

class x_center y_center width height

Первый столбецclassИндекс , отсчет начинается с 0, например, 0 здесь представляетbasketball, 1 означаетface; последние 4 столбцаx_center/image_width,y_center/image_height,width/image_width,height/image_height, диапазон значений 0 ~ 1

Тренируйтесь с общедоступными наборами данных

ROBOFLOWПредоставляются некоторые общедоступные наборы данных, и мы загружаем набор данных маски для обучения.public.Rob o flow.Love/object-of..., Если исходный веб-сайт недоступен, вы можете загрузить его по ссылке ниже.

Загрузка представляет собой сжатый пакет.После распаковки файловая структура в папке такая

какая папкаtrainСодержит фотографии участия в тренинге и соответствующиеlabelФайл, только расширение у них разное, на данный момент всего 105 картинок. Мы переименовали папку, содержащую набор данных, вmask, сохранить вyolov5В каталоге того же уровня проекта

Затем изменитеmask/data.yamlСодержимое файла

(base) xugaoxiang@1070Ti:~/Works/github/mask$ cat data.yaml
train: ../mask/train/images
val: ../mask/valid/images

nc: 2
names: ['mask', 'no-mask']

Последний отзывyolov5/models/yolov5s.yaml,будетnc = 80превратиться вnc = 2, потому что набор данных имеет толькоmaskиno-mask2 категории

Затем выполните обучающую команду

cd yolov5
python train.py --img 640 --batch 16 --epochs 300 --data ../mask/data.yaml --cfg models/yolov5s.yaml --weights '' 

После обучения,weightsпапка созданаbest.ptиlast.pt,прибытьmask/test/imagesНайдите несколько фотографий для тестирования

python detect.py --weight weights/best.pt --source ../mask/test/images/1224331650_g_400-w_g_jpg.rf.b816f49e2d84044fc997a8cbd55c347d.jpg

Эффект не плохойok. Если вам интересно, попробуйте сами

версия v3.0

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

Эта ошибка связана сpythonв окружающей средеpyqtвызвано, удалитьpyqtпросто хорошо

pip uninstall pyqt5

Еще одна вещь здесь, если вы используетеanacondaсреде, после установки, вbaseНе устанавливайте сторонние библиотеки в среду. Для разных проектов или проектов создайте независимую виртуальную среду, а затем установите зависимые библиотеки, и подобных ошибок возникать не будет.

Кроме того, вwindowsОбучите модель, если она есть

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

Решение состоит в том, чтобыtrain.pyВ начале файла добавьте оператор

import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'

использованная литература