Новый выпуск YOLOv6 повторяет магистраль и шею YOLO, перерабатывая их с учетом аппаратного обеспечения — представляя то, что они называют EfficientRep Backbone и Rep-PAN Neck.

В моделях YOLO до YOLOv5 включительно заголовки классификации и блочной регрессии имеют одни и те же функции. В YOLOx и YOLOv6 головка отделена, то есть в сети есть дополнительные слои, отделяющие эти функции от конечной головки, что, как было эмпирически показано, повышает производительность.

Как тренировать Yolov6?

  1. Установка зависимостей 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