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

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

Как се тренира Йолов6?

  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. Модел на влака

Има няколко аргумента, преди да тренирате.

  • — data-path : default=’./data/coco.yaml’, type=str, help=path на набора от данни
  • — conf-файл: default=’./configs/yolov6s.py’, type=str, help=файл с описание на експерименти
  • — img-size : default=640, type=int, help=train, val размер на изображението (пиксели)
  • — размер на партида : по подразбиране=32, тип=int, помощ=общ размер на партида за всички GPU
  • — епохи : по подразбиране=400, тип=int, помощ=брой общи епохи за изпълнение
  • — работници : по подразбиране=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=оценка само в последната епоха
  • — тежък-оценъчен диапазон : по подразбиране=50, тип=int, помощ=оценяване на всяка епоха за последните такива епохи (може да се използва съвместно с — eval-interval)
  • — проверка на изображения: действие=’store_true’, помощ=проверка на изображения при инициализиране на набори от данни
  • — проверете етикети: action=’store_true’, help=проверете файлове с етикети при инициализиране на набори от данни
  • — изходна директория: default=’./runs/train’, type=str, help=path за запазване на изходите
  • — име : 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 параметър
  • възобновяване : nargs='?', const=True, default=False, помощ=възобновяване най-много скорошно обучение

Нека се опитаме да започнем да обучаваме персонализиран модел, например команда в jupyter notebook/terminal

!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 път
  • — тегла : type=str, default=’./weights/yolov6s.pt’, help=model.pt път
  • — партиден размер: type=int, default=32, help=batch size
  • — img-size: type=int, default=640, help=inference size (пиксели)
  • — conf-thres : type=float, default=0.001, help=confidence threshold
  • — iou-thres : type=float, default=0,65, help=NMS IoU праг
  • — задача: default=’val’, help=val или скорост
  • — устройство : по подразбиране=’0', помощ=’cuda устройство, т.е. 0 или 0,1,2,3 или процесор
  • — половина : default=False, action=’store_true’, help=дали да се използва fp16 infer
  • — save_dir : type=str, default=’runs/val/’, help=evaluation save dir
  • — име : type=str, default=’exp’, help=запазване на резултатите от оценката в save_dir/name

примерна команда в jupyter notebook / терминал

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