语言:
🇨🇳
🇺🇸
«YOLOv2» 复现了论文 "YOLO9000: Better, Faster, Stronger"
- 使用
VOC07+12 trainval
数据集进行训练,使用VOC2007 Test
进行测试,输入大小为640x640
。测试结果如下:
Original (darknet) | tztztztztz/yolov2.pytorch | zjykzj/YOLOv2(This) | zjykzj/YOLOv2(This) | |
---|---|---|---|---|
ARCH | YOLOv2 | YOLOv2 | YOLOv2 | YOLOv2-Fast |
GFLOPs | / | / | 69.5 | 48.5 |
DATASET(TRAIN) | VOC TRAINVAL 2007+2012 | VOC TRAINVAL 2007+2012 | VOC TRAINVAL 2007+2012 | VOC TRAINVAL 2007+2012 |
DATASET(VAL) | VOC TEST 2007 | VOC TEST 2007 | VOC TEST 2007 | VOC TEST 2007 |
INPUT_SIZE | 416x416 | 416x416 | 640x640 | 640x640 |
PRETRAINED | TRUE | TRUE | FALSE | FALSE |
VOC AP[IoU=0.50:0.95] | / | / | 44.3 | 29.8 |
VOC AP[IoU=0.50] | 76.8 | 72.7 | 75.1 | 62.6 |
- 使用
COCO train2017
数据集进行训练,使用COCO val2017
数据集进行测试,输入大小为640x640
。测试结果如下:(注意:原始论文使用COCO test-dev2015
的评估结果)
Original (darknet) | zjykzj/YOLOv2(This) | zjykzj/YOLOv2(This) | |
---|---|---|---|
ARCH | YOLOv2 | YOLOv2 | YOLOv2-Fast |
GFLOPs | / | 69.7 | 48.8 |
DATASET(TRAIN) | / | COCO TRAIN2017 | COCO TRAIN2017 |
DATASET(VAL) | / | COCO VAL2017 | COCO VAL2017 |
INPUT_SIZE | 416x416 | 640x640 | 640x640 |
PRETRAINED | TRUE | FALSE | FALSE |
COCO AP[IoU=0.50:0.95] | 21.6 | 28.6 | 20.1 |
COCO AP[IoU=0.50] | 44.0 | 50.7 | 41.2 |
- [2024/05/04]v1.0.0. 重构YOLOv2工程,集成yolov5-v7.0,重新实现YOLOv2/YOLOv2-fast以及YOLOv2Loss。
- [2023/07/16]v0.3.0. 添加ultralytics/yolov5(485da42) 预处理实现。
- [2023/06/28]v0.2.1. 重构数据模块。
- [2023/05/21]v0.2.0. 重构损失函数,并且增加了Darknet-53作为Backbone。
- [2023/05/09]v0.1.2. 更新COCO数据集和VOC数据集的训练结果。
- [2023/05/03]v0.1.1. 修复转换函数,并且更新了
yolov2_voc.cfg
和yolov2-tiny_voc.cfg
在VOC2007 Test上的训练结果。 - [2023/05/02]v0.1.0. 完成了YOLOv2的训练/评估/预测功能,同时提供了VOC2007 Test的测试结果。
YOLOv2在YOLOv1的基础上增加了很多的创新。对于网络结构,它创建了Darknet-19;对于损失函数,他设置锚点框来帮助网络更好的训练。相比于YOLOv1,YOLOv2拥有更好的性能。
本仓库参考了很多的实现,包括tztztztztz/yolov2.pytorch、yjh0410/yolov2-yolov3_PyTorch和zjykzj/YOLOv3。
注意:当前本仓库最新的实现完全基于ultralytics/yolov5 v7.0
pip3 install -r requirements.txt
或者使用Docker Container
docker run -it --runtime nvidia --gpus=all --shm-size=16g -v /etc/localtime:/etc/localtime -v $(pwd):/workdir --workdir=/workdir --name yolov2 ultralytics/yolov5:v7.0
python3 train.py --data VOC.yaml --weights "" --cfg yolov2_voc.yaml --img 640 --device 0 --yolov2loss
python3 train.py --data VOC.yaml --weights "" --cfg yolov2-fast_voc.yaml --img 640 --device 0 --yolov2loss
python3 train.py --data coco.yaml --weights "" --cfg yolov2.yaml --img 640 --device 0 --yolov2loss
python3 train.py --data coco.yaml --weights "" --cfg yolov2-fast.yaml --img 640 --device 0 --yolov2loss
# python3 val.py --weights runs/train/voc/exp/weights/best.pt --data VOC.yaml --img 640 --device 0
yolov2_voc summary: 53 layers, 50645053 parameters, 0 gradients, 69.5 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 155/155 00:41
all 4952 12032 0.735 0.711 0.751 0.443
Speed: 0.1ms pre-process, 3.1ms inference, 1.3ms NMS per image at shape (32, 3, 640, 640)
# python3 val.py --weights runs/train/voc/exp3/weights/best.pt --data VOC.yaml --img 640 --device 0
yolov2-fast_voc summary: 33 layers, 42367485 parameters, 0 gradients, 48.5 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 155/155 00:37
all 4952 12032 0.626 0.612 0.626 0.298
Speed: 0.1ms pre-process, 2.3ms inference, 1.5ms NMS per image at shape (32, 3, 640, 640)
# python3 val.py --weights runs/train/coco/exp/weights/best.pt --data coco.yaml --img 640 --device 0
yolov2 summary: 53 layers, 50952553 parameters, 0 gradients, 69.7 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 157/157 00:57
all 5000 36335 0.627 0.48 0.507 0.286
Speed: 0.1ms pre-process, 3.1ms inference, 2.0ms NMS per image at shape (32, 3, 640, 640)
# python3 val.py --weights runs/train/coco/exp2/weights/best.pt --data coco.yaml --img 640 --device 0
yolov2-fast summary: 33 layers, 42674985 parameters, 0 gradients, 48.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 157/157 00:53
all 5000 36335 0.549 0.402 0.412 0.201
Speed: 0.1ms pre-process, 2.4ms inference, 2.1ms NMS per image at shape (32, 3, 640, 640)
python3 detect.py --weights runs/yolov2_voc.pt --source ./assets/voc2007-test/
python3 detect.py --weights runs/yolov2_coco.pt --source ./assets/coco/
- zhujian - Initial work - zjykzj
- zjykzj/vocdev
- zjykzj/YOLOv3
- zjykzj/anchor-boxes
- ultralytics/yolov5
- AlexeyAB/darknet
- tztztztztz/yolov2.pytorch
- yjh0410/yolov2-yolov3_PyTorch
欢迎任何人的参与!打开issue或提交合并请求。
注意:
GIT
提交,请遵守Conventional Commits规范- 语义版本化,请遵守Semantic Versioning 2.0.0规范
README
编写,请遵守standard-readme规范
Apache License 2.0 © 2023 zjykzj