Выполнено в репозитории https://github.com/WongKinYiu/PyTorch_YOLOv4.
Репозиторий протестирован на Windows 10.
Для поддержки GPU а компьютере должна быть установлена Cuda Toolkit 10.х или 11.х (протестировано на версиях 10.1, 11.4) и CudNN. Pytorch устанавливает Cuda Toolkit отдельно, при его установке можно выбрать версию cuda. Поэтому скорее всего, версия Cuda Toolkit, установленная на компьютере, не имеет значения.
Для теста использовались видеокарты Nvidia GeForce GTX 1060, GTX 1660 Ti.
- Установите на компьютер менеджер виртуальных сред Anaconda.
- Откройте командную строку Anaconda, создайте новую среду и установите необходимые библиотеки:
- conda create -n yolov4 python=3.8
- conda activate yolov4
Установка pytorch с Cuda Toolkit 11.х: - pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
- Перейдите в каталог, в который хотите склонировать репозиторий Yolov4.
- Выполните команду: git clone https://github.com/WongKinYiu/PyTorch_YOLOv4.git
- Перейдите в скачанный репозиторий: cd PyTorch_YOLOv4
- Установите пакеты: pip install -r requirements.txt
Перейдите в скачанный репозиторий.
-
Для однообразия необходимо положить изображения в папку images. В этой папке для удобства создайте папки train, val, test и положите в них соотвествующие изображения для обучения, валидации и тестирования.
-
Разметьте в своем датасете классы номерами. Теперь необходимо создать файлы *.txt с номерами классов и координатами истинных объектов классов. Каждый файл соотвествует одному изображению с таким же именем, как и имя изображения в папке images, но расширением *.txt. Данные текстовые файлы необходимо положить в соотвествующие папки: labels/train, labels/val, labels/test.
Содержимое каждого текстового файла (значения через пробел):
nclass xcenter ycenter w h
где:
nclass - номер класса (нумерация начинается с нуля),
xcenter - координата по горизонтали центра объекта,
ycenter - координата по вертикали центра объекта,
w - ширина объекта,
h - высота объекта.
Значения координат, ограничивающих прямоугольник должны быть нормализованы на размер изображения, то есть находятся в пределах от 0 до 1.
Пример содержимого файла 0.txt (соответствующего изображению 0.png) для трех объектов:
0 0.2109375 0.3765625 0.05 0.48125
0 0.21328125 0.05859375 0.0515625 0.1171875
0 0.21328125 0.8 0.0515625 0.4 -
В папке data создайте файлы списков изображений: train.txt, val.txt, test.txt.
В каждом файле содержится список путей к изображениям для обучения, валидации и тестирования. Каждый путь записывается с новой строки.
Пример содержимого файла train.txt:
C:/PyTorch_YOLOv4/images/train/0.png
C:/PyTorch_YOLOv4/images/train/1.png
...
C:/PyTorch_YOLOv4/images/train/n.png -
По образцу файла data/coco.yaml создайте свой файл и заполните его путями к спискам изображений, созданных шагом ранее, количеством и списком классов.
-
По образцу файла data/coco.names создайте свой файл со списком классов.
-
По образцу файла data/coco.data создайте свой файл, в котором указано количество классов, пути к спискам файлов, созданных в п.3 данного раздела, и путь к файлу со списком классов, созданном в п.5 данного раздела.
-
Выберите модель yolov4, которую хотите дообучать. Перечень моделей можно найти в исходном репозитории. Для выбранной модели там же скачайте образец конфигурационного файла и предобученную модель. Образцы конфигурационных файлов лежат также в папке cfg. Скачанную модель положите в папку weights.
-
Теперь нужно отредактировать конфигурационный файл под свои данные. Cледуйте инструкции по его изменению: https://techzizou.com/train-a-custom-yolov4-object-detector-on-windows/
Размер входной картинки в модель должен быть кратен 32.
Инструкции и команды по обучению находятся в ноутбуке yolov4.ipynb.
Команды можно выполнять либо напрямую из ноутбука (со знаком !), либо из командной строки созданной среды Anaconda.