Новый выпуск YOLOv6 повторяет магистраль и шею YOLO, перерабатывая их с учетом аппаратного обеспечения — представляя то, что они называют EfficientRep Backbone и Rep-PAN Neck.
В моделях YOLO до YOLOv5 включительно заголовки классификации и блочной регрессии имеют одни и те же функции. В YOLOx и YOLOv6 головка отделена, то есть в сети есть дополнительные слои, отделяющие эти функции от конечной головки, что, как было эмпирически показано, повышает производительность.
Как тренировать Yolov6?
- Установка зависимостей Yolov6
git clone https://github.com/meituan/YOLOv6
cd YOLOv6
pip install -r requirements.txt
2. Подготовьте набор данных.
В этом уроке я использую labeme для изображения-аннотации.
Выходной формат аннотированного файла labelme coco json, а затем преобразование в метку Yolo.
бывшая команда:
python3 coco2yolo.py — annotations=v1/ — output=yolov6/ — labels=seal,no_seal
Каталог результатов
- train - images - img_001.jpg - img_002.jpg ... - labels - img_001.txt - img_002.txt ... - test - images - img_003.jpg - img_004.jpg ... - labels - img_003.txt - img_004.txt ... - val - images - img_005.jpg - img_006.jpg ... - labels - img_005.txt - img_006.txt ... - data.yaml Note: The corresponding YOLOv6 YAML file is structured like this: train : {path to train directory} val : {path to val directory} test : {path to test directory} nc : {count classes} names : {list name classes}
3. Модель поезда
Есть несколько аргументов, прежде чем тренироваться.
- — путь к данным : default=’./data/coco.yaml’, type=str, help=путь к набору данных
- — conf-файл : default=’./configs/yolov6s.py’, type=str, help=файл описания экспериментов
- — img-size : default=640, type=int, help=train, val размер изображения (в пикселях)
- — размер пакета : default=32, type=int, help=общий размер пакета для всех графических процессоров.
- — эпохи : default=400, type=int, help=количество всех эпох для запуска
- — воркеры : default=8, type=int, help=количество воркеров загрузки данных (по умолчанию: 8)
- — устройство : default=’0’, type=str, help=cuda устройство, т.е. 0 или 0,1,2,3 или процессор
- — eval-interval : default=20, type=int, help=evaluate на каждом интервале эпох
- — eval-final-only: action=’store_true’, help=только оценка в последней эпохе
- — Heavy-eval-range : default=50, type=int, help=оценка каждой эпохи для последних таких эпох (можно использовать совместно с — eval-interval)
- — проверять изображения: action=’store_true’, help=check изображения при инициализации наборов данных
- — метки: action=’store_true’, help=check файлы меток при инициализации наборов данных
- — output-dir: default=’./runs/train’, type=str, help=путь для сохранения выходных данных
- — имя : default=’exp’, type=str, help=имя эксперимента, сохранено в output_dir/name
- — dist_url: default=’env://’, type=str, help=url используется для настройки распределенного обучения
- — gpu_count : type=int, default=0
- — local_rank: type=int, default=-1, help=параметр DDP
- — resume : nargs='?', const=True, default=False, help=resume чаще всего недавнее обучение
Давайте попробуем начать обучение пользовательской модели, например, командой в блокноте/терминале jupyter.
!python tools/train.py \ — batch 32 \ — epochs 100 \ — conf configs/yolov6s.py \ — data {ROOT_DATASET}/data.yaml \ — device 0
4. Возобновить поезд
Возобновить обучение модели
OUTPUT_MODEL = '/content/runs/train/exp2/weights/best_ckpt.pt' !python tools/train.py \ — batch 32 \ — epochs 100 \ — conf configs/yolov6s.py \ — data {ROOT_DATASET}/data.yaml \ — device 0 \ - resume {OUTPUT_MODEL}
4. Оценить модель
Как и в случае с аргументом обучения, у нас есть параметры, которые мы можем настроить для оценки модели (например, указать пороги достоверности или изменить место сохранения результатов).
- — данные : type=str, default=’./data/coco.yaml’, help=dataset.yaml path
- — веса : type=str, default=’./weights/yolov6s.pt’, help=model.pt путь
- — размер пакета: type=int, default=32, help=размер пакета
- — img-size: type=int, default=640, help=inference size (в пикселях)
- — conf-thres : type=float, default=0.001, help=порог достоверности
- — iou-thres : type=float, default=0,65, help=NMS порог IoU
- — задача: default=’val’, help=val или скорость
- — устройство : default=’0’, help=’cuda device, т.е. 0 или 0,1,2,3 или процессор
- — половина : default=False, action=’store_true’, help=использовать вывод fp16
- — save_dir : type=str, default=’runs/val/’, help=evaluation сохранить каталог
- — имя : type=str, default=’exp’, help=сохранить результаты оценки в save_dir/name
пример команды в блокноте/терминале jupyter
OUTPUT_MODEL = '/content/runs/train/exp2/weights/best_ckpt.pt' !python tools/train.py \ — batch 32 \ — epochs 100 \ — conf configs/yolov6s.py \ — data {ROOT_DATASET}/data.yaml \ — device 0 \
Исходный код :
https://colab.research.google.com/drive/16wA5sZAD0MUg8Wc0qHIM5H2eRUKf1ynu?usp=sharing