2022-07-06 23:14:07 +08:00
|
|
|
# yolov7
|
2022-07-07 00:02:25 +08:00
|
|
|
|
|
|
|
Implementation of paper - [YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors]()
|
|
|
|
|
|
|
|
<img src="./figure/performance.png" height="480">
|
|
|
|
|
|
|
|
## Performance
|
|
|
|
|
|
|
|
MS COCO
|
|
|
|
<details><summary> <b>Expand</b> </summary>
|
|
|
|
|
|
|
|
| Model | Test Size | AP<sup>test</sup> | AP<sub>50</sub><sup>test</sup> | AP<sub>75</sub><sup>test</sup> | batch 1 fps | batch 32 average time |
|
|
|
|
| :-- | :-: | :-: | :-: | :-: | :-: | :-: |
|
|
|
|
| **YOLOv7** | 640 | **51.4%** | **69.7%** | **55.9%** | 161 *fps* | 2.8 *ms* |
|
|
|
|
| **YOLOv7-X** | 640 | **53.1%** | **71.2%** | **57.8%** | 114 *fps* | 4.3 *ms* |
|
|
|
|
| | | | | | | |
|
|
|
|
| **YOLOv7-W6** | 1280 | **54.9%** | **72.6%** | **60.1%** | 84 *fps* | 7.6 *ms* |
|
|
|
|
| **YOLOv7-E6** | 1280 | **56.0%** | **73.5%** | **61.2%** | 56 *fps* | 12.3 *ms* |
|
|
|
|
| **YOLOv7-D6** | 1280 | **56.6%** | **74.0%** | **61.8%** | 44 *fps* | 15.0 *ms* |
|
|
|
|
| **YOLOv7-E6E** | 1280 | **56.8%** | **74.4%** | **62.1%** | 36 *fps* | 18.7 *ms* |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
Docker environment (recommended)
|
|
|
|
<details><summary> <b>Expand</b> </summary>
|
|
|
|
|
|
|
|
```
|
|
|
|
# create the docker container, you can change the share memory size if you have more.
|
|
|
|
nvidia-docker run --name yolov7 -it -v your_coco_path/:/coco/ -v your_code_path/:/yolov7 --shm-size=64g nvcr.io/nvidia/pytorch:21.08-py3
|
|
|
|
|
|
|
|
# apt install required packages
|
|
|
|
apt update
|
|
|
|
apt install -y zip htop screen libgl1-mesa-glx
|
|
|
|
|
|
|
|
# pip install required packages
|
|
|
|
pip install seaborn thop
|
|
|
|
|
|
|
|
# go to code folder
|
|
|
|
cd /yolov7
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Testing
|
|
|
|
|
|
|
|
[`yolov7.pt`]()
|
|
|
|
|
|
|
|
```
|
|
|
|
python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val
|
|
|
|
```
|
|
|
|
|
|
|
|
You will get the results:
|
|
|
|
|
|
|
|
```
|
|
|
|
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51206
|
|
|
|
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69730
|
|
|
|
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.55521
|
|
|
|
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35247
|
|
|
|
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.55937
|
|
|
|
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66693
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38453
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.63765
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.68772
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.53766
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.73549
|
|
|
|
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.83868
|
|
|
|
```
|
|
|
|
|
|
|
|
## Citation
|
|
|
|
|
|
|
|
```
|
|
|
|
@article{wang2022yolov7,
|
|
|
|
title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
|
|
|
|
author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
|
|
|
|
journal={arXiv preprint},
|
|
|
|
year={2022}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Acknowledgements
|
|
|
|
|
|
|
|
<details><summary> <b>Expand</b> </summary>
|
|
|
|
|
|
|
|
* [https://github.com/AlexeyAB/darknet](https://github.com/AlexeyAB/darknet)
|
|
|
|
* [https://github.com/WongKinYiu/yolor](https://github.com/WongKinYiu/yolor)
|
|
|
|
* [https://github.com/WongKinYiu/PyTorch_YOLOv4](https://github.com/WongKinYiu/PyTorch_YOLOv4)
|
|
|
|
* [https://github.com/WongKinYiu/ScaledYOLOv4](https://github.com/WongKinYiu/ScaledYOLOv4)
|
|
|
|
* [https://github.com/Megvii-BaseDetection/YOLOX](https://github.com/Megvii-BaseDetection/YOLOX)
|
|
|
|
* [https://github.com/ultralytics/yolov3](https://github.com/ultralytics/yolov3)
|
|
|
|
* [https://github.com/ultralytics/yolov5](https://github.com/ultralytics/yolov5)
|
|
|
|
|
|
|
|
</details>
|