YOLO 教程
这是一个讲解YOLO的入门教程的代码。在这个项目中,我们继承了YOLOv1~v4、YOLOX以及YOLOv7的中心思想,并在此基础上做了适当的修改来实现了结构较为简洁的YOLO检测器。我们希望通过初学者可以通过学习流行的YOLO检测器顺利入门目标检测领域。
书籍链接:与本项目代码配套的技术书籍正在被校阅中,请耐心等待。
首先,我们建议使用Anaconda来创建一个conda的虚拟环境
conda create -n yolo python=3.6
然后, 请激活已创建的虚拟环境
conda activate yolo
接着,配置环境:
pip install -r requirements.txt
项目作者所使用的环境配置:
为了能够正常运行该项目的代码,请确保您的torch版本为1.x系列。
| 配置 | |
|---|---|
| 单个GPU上的batch size | 16 |
| 初始学习率 | 0.01 |
| Warnmup策略 | 线性warmup策略 |
| 学习率策略 | 线性学习了衰减策略 |
| 训练优化器 | SGD |
| 多尺度训练 | True (320 ~ 640) |
受限于我贫瘠的计算资源,我无法使用更大的多尺度范围,如320~960。
下载 VOC.
cd <PyTorch_YOLO_Tutorial>
cd dataset/scripts/
sh VOC2007.sh
sh VOC2012.sh
检查 VOC
cd <PyTorch_YOLO_Tutorial>
python dataset/voc.py
使用 VOC 训练模型
For example:
python train.py --cuda -d voc --root path/to/VOC -v yolov1 -bs 16 --max_epoch 150 --wp_epoch 1 --eval_epoch 10 --fp16 --ema --multi_scale
P5-Model on COCO:
| Model | Backbone | Scale | IP | Epoch | APval 0.5 | FPS3090 FP32-bs1 | Weight | ||
|---|---|---|---|---|---|---|---|---|---|
| YOLOv1 | ResNet-18 | 640 | √ | 150 | 76.7 | ckpt | |||
| YOLOv2 | DarkNet-19 | 640 | √ | 150 | 79.8 | ckpt | |||
| YOLOv3 | DarkNet-53 | 640 | √ | 150 | 82.0 | ckpt | |||
| YOLOv4 | CSPDarkNet-53 | 640 | √ | 150 | 83.6 | ckpt | |||
| YOLOX | CSPDarkNet-L | 640 | √ | 150 | 84.6 | ckpt | |||
| YOLOv7-Large | ELANNet-Large | 640 | √ | 150 | 86.0 | ckpt |
| Model | Backbone | Scale | Epoch | FPS | APval 0.5:0.95 | APval 0.5 | FLOPs (G) | Params (M) | Weight |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv1 | ResNet-18 | 640 | 150 | 27.9 | 47.5 | 37.8 | 21.3 | ckpt | |
| YOLOv2 | DarkNet-19 | 640 | 150 | 32.7 | 50.9 | 53.9 | 30.9 | ckpt | |
| YOLOv3 | DarkNet-53 | 640 | 250 | 42.9 | 63.5 | 167.4 | 54.9 | ckpt | |
| YOLOv4 | CSPDarkNet-53 | 640 | 250 | 46.6 | 65.8 | 162.7 | 61.5 | ckpt | |
| YOLOX-L | CSPDarkNet-L | 640 | 300 | 46.6 | 66.1 | 155.4 | 54.2 | ckpt | |
| YOLOv7-T | ELANNet-Tiny | 640 | 300 | 22.9 | 8.1 | ||||
| YOLOv7-L | ELANNet-Large | 640 | 300 | 144.6 | 44.0 |
| Model | Backbone | Scale | Epoch | FPS | APval 0.5:0.95 | APval 0.5 | FLOPs (G) | Params (M) | Weight |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5-N | CSPDarkNet-N | 640 | 250 | 7.7 | 2.4 | ||||
| YOLOv5-S | CSPDarkNet-S | 640 | 250 | 27.1 | 9.0 | ||||
| YOLOv5-M | CSPDarkNet-M | 640 | 250 | 74.3 | 25.4 | ||||
| YOLOv5-L | CSPDarkNet-L | 640 | 250 | 155.6 | 54.2 |