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 |
下载 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 | FLOPs (G) | Params (M) | Weight |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv1 | ResNet-18 | 640 | √ | 150 | 76.7 | 37.8 | 21.3 | ckpt | |
| YOLOv2 | DarkNet-19 | 640 | √ | 150 | 79.8 | 53.9 | 30.9 | ckpt | |
| YOLOv3 | DarkNet-53 | 640 | √ | 150 | 82.0 | 167.4 | 54.9 | ckpt | |
| YOLOv4 | CSPDarkNet-53 | 640 | √ | 150 | 83.6 | 162.7 | 61.5 | ckpt | |
| YOLOv5 | CSPDarkNet-L | 640 | √ | 150 | 83.8 | 155.6 | 54.2 | ckpt | |
| YOLOX | CSPDarkNet-L | 640 | √ | 150 | 84.6 | 155.4 | 54.2 | ckpt | |
| YOLOv7 | ELANNet | 640 | √ | 150 | 85.5 | 144.6 | 44.0 | ckpt |
| Model | Backbone | Scale | IP | Epoch | FPS | APval 0.5:0.95 | APval 0.5 | Weight |
|---|---|---|---|---|---|---|---|---|
| YOLOv1 | ResNet-18 | 640 | √ | 150 | 27.9 | 47.5 | ckpt | |
| YOLOv2 | DarkNet-19 | 640 | √ | 150 | 32.7 | 50.9 | ckpt | |
| YOLOv3 | DarkNet-53 | 640 | √ | 250 | 42.9 | 63.5 | ckpt | |
| YOLOv4 | CSPDarkNet-53 | 640 | √ | 250 | ||||
| YOLOv5 | CSPDarkNet-L | 640 | √ | 250 | 46.6 | 65.8 | ckpt | |
| YOLOX | CSPDarkNet-L | 640 | √ | 300 | 46.6 | 66.1 | ckpt | |
| YOLOv7-Nano | ELANNet-Nano | 640 | √ | 300 | ||||
| YOLOv7-Tiny | ELANNet-Tiny | 640 | √ | 300 | ||||
| YOLOv7-Large | ELANNet-Large | 640 | √ | 300 | ||||
| YOLOv7-Huge | ELANNet-Huge | 640 | √ | 300 |