YOLOv6 - YOLOv6: 産業用アプリケーション専用の単一段階のオブジェクト検出フレームワーク。

(YOLOv6: a single-stage object detection framework dedicated to industrial applications.)

Created at: 2022-06-08 10:44:22
Language: Jupyter Notebook
License: GPL-3.0

YOLOv6

論文の実装 - YOLOv6: 産業用アプリケーション向けの単一段階オブジェクト検出フレームワーク

序章

YOLOv6 は、ハードウェアにやさしい効率的な設計と高性能を備えた、産業用アプリケーション専用の単一段階の物体検出フレームワークです。

YOLOv6 には、N/T/S/M/L を含むさまざまな産業シナリオ向けの一連のモデルがあり、精度と速度のトレードオフを改善するために、モデルのサイズを考慮してアーキテクチャが異なります。また、自己蒸留やより多くのトレーニングエポックなど、パフォーマンスをさらに改善するために、いくつかの無料のバッグメソッドが導入されています。産業用展開では、チャネルごとの蒸留とグラフの最適化を備えた QAT を採用して、究極のパフォーマンスを追求します。

YOLOv6-N は、T4 で 1234 FPS の COCO データセットで 35.9% の AP を達成します。YOLOv6-S は 495 FPS で 43.5% の AP を達成し、量子化された YOLOv6-S モデルは T4 で 869 FPS の加速速度で 43.3% の AP を達成します。YOLOv6-T/M/L は優れた性能も備えており、同様の推論速度を持つ他の検出器よりも高い精度を示しています。

新着情報

  • M/L モデルをリリースし、性能を強化した N/T/S モデルを更新します。⭐️ 基準
  • トレーニング時間が 2 倍速くなります。
  • 640x640 入力で評価するときのパフォーマンスの低下を修正します。
  • カスタマイズされた量子化方法。🚀 量子化のチュートリアル

クイックスタート

インストール

git clone https://github.com/meituan/YOLOv6
cd YOLOv6
pip install -r requirements.txt

推論

まず、YOLOv6リリースから事前トレーニング済みのモデルをダウンロードします。

次に、推論を実行します

tools/infer.py

python tools/infer.py --weights yolov6s.pt --source img.jpg / imgdir / video.mp4

トレーニング

シングル GPU

python tools/train.py --batch 32 --conf configs/yolov6s.py --data data/coco.yaml --device 0

マルチ GPU (DDP モードを推奨)

python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 256 --conf configs/yolov6s.py --data data/coco.yaml --device 0,1,2,3,4,5,6,7
COCOで結果を再現

ナノモデル用

python -m torch.distributed.launch --nproc_per_node 4 tools/train.py \
									--batch 128 \
									--conf configs/yolov6n.py \
									--data data/coco.yaml \
									--epoch 400 \
									--device 0,1,2,3,4,5,6,7 \
									--name yolov6n_coco

s/tinyモデル用

python -m torch.distributed.launch --nproc_per_node 8 tools/train.py \
									--batch 256 \
									--conf configs/yolov6s.py \ # configs/yolov6t.py
									--data data/coco.yaml \
									--epoch 400 \
									--device 0,1,2,3,4,5,6,7 \
									--name yolov6s_coco # yolov6t_coco

m/l モデルの場合

# Step 1: Training a base model
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py \
									--batch 256 \
									--conf configs/yolov6m.py \ # configs/yolov6l.py
									--data data/coco.yaml \
									--epoch 300 \
									--device 0,1,2,3,4,5,6,7 \
									--name yolov6m_coco # yolov6l_coco
									
                                                                                      
# Step 2: Self-distillation training
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py \
									--batch 256 \ # 128 for distillation of yolov6l 
									--conf configs/yolov6m.py \ # configs/yolov6l.py
									--data data/coco.yaml \
									--epoch 300 \
									--device 0,1,2,3,4,5,6,7 \
									--distill \
									--teacher_model_path runs/train/yolov6m_coco/weights/best_ckpt.pt \ # # yolov6l_coco
									--name yolov6m_coco # yolov6l_coco
							
  • conf: 構成ファイルを選択して、ネットワーク/オプティマイザー/ハイパーパラメーターを指定します
  • data: COCOデータセット、YOLO 形式の coco ラベルを準備し、data.yaml でデータセット パスを指定します。
  • 次のようにデータセット構造を確認してください。
├── coco
│   ├── annotations
│   │   ├── instances_train2017.json
│   │   └── instances_val2017.json
│   ├── images
│   │   ├── train2017
│   │   └── val2017
│   ├── labels
│   │   ├── train2017
│   │   ├── val2017
│   ├── LICENSE
│   ├── README.txt

評価

解像度 640×640 の COCO val2017 データセットで mAP を再現

python tools/eval.py --data data/coco.yaml --batch 32 --weights yolov6s.pt --task val --reproduce_640_eval
トレーニングを再開する

トレーニング プロセスが破損している場合は、次の方法でトレーニングを再開できます。

# multi GPU training.
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --resume

--resume
パラメータへのチェックポイントパスを指定することもできます

# remember to replace /path/to/your/checkpoint/path to the checkpoint path which you want to resume training.
--resume /path/to/your/checkpoint/path

展開

チュートリアル

基準

モデル サイズ mAP 値0.5
:0.95
速度T4
trt fp16 b1
(fps)
速度T4
trt fp16 b32
(fps)
パラメータ
(M)
FLOPS
(G)
YOLOv6-N 640 35.9 300e
36.3 400e
802 1234 4.3 11.1
YOLOv6-T 640 40.3 300e
41.1 400e
449 659 15.0 36.7
YOLOv6-S 640 43.5 300e
43.8 400e
358 495 17.2 44.2
YOLOv6-M 640 49.5 179 233 34.3 82.2
YOLOv6-L-ReLU 640 51.7 113 149 58.5 144.0
YOLOv6-L 640 52.5 98 121 58.5 144.0
レガシーモデル
モデル サイズ mAP 値0.5
:0.95
速度V100
fp16 b32
(ミリ秒)
速度V100
fp32 b32
(ミリ秒)
速度T4
trt fp16 b1
(fps)
速度T4
trt fp16 b32
(fps)
パラメータ
(M)
FLOPS
(G)
YOLOv6-N 416
640
30.8
35.0
0.3
0.5
0.4
0.7
1100
788
2716
1242
4.3
4.3
4.7
11.1
YOLOv6-T 640 41.3 0.9 1.5 425 602 15.0 36.7
YOLOv6-S 640 43.1 1.0 1.7 373 520 17.2 44.2
  • mAP と速度の結果は、入力解像度 640×640 のCOCO val2017データセットで評価されます。
  • YOLOv6 の速度結果を再現するには、テスト速度のチュートリアルを参照してください。
  • YOLOv6 のパラメータと FLOP は、デプロイされたモデルで推定されます。
  • N/T/S モデルの場合、より多くのトレーニング エポック戦略を使用します。
  • M/L/L-ReLU モデルについては、自己蒸留法を採用して性能をさらに向上させています。

サードパーティのリソース

FAQ(随時更新)