Программно-аппаратная среда
- 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
, адрес загрузки
LabelImg
использоватьQt
С графическим интерфейсом операция по-прежнему очень удобна, что является причиной его выбора.class
, вы можете удалить эти типы, если они вам не нужны
открыть следующийexe
файл, нажмитеOpen
Импортируйте картинку, нажмите горячую клавишуw
, после выбора цели появится поле ввода, напишитеclass
имя, ничего страшного, если целей несколько, продолжайте отмечать
labelImg
Также поддерживает импорт папок.Отметив лист, выберите его слеваNext Image
Вы можете переключиться на следующий, чтобы продолжить. раздел формата вывода, в настоящее времяlabelImg
служба поддержкиYOLO
иPascalOVC
2, прежняя информация тега хранится в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..., Если исходный веб-сайт недоступен, вы можете загрузить его по ссылке ниже.
- CSDN-загрузка
-
Сетевой диск Baidu, Код извлечения:
wja4
Загрузка представляет собой сжатый пакет.После распаковки файловая структура в папке такая
какая папка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-mask
2 категории
Затем выполните обучающую команду
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'