/PPYOLOE_pytorch

An unofficial implementation of Pytorch version PP-YOLOE,based on Megvii YOLOX training code.

Primary LanguagePythonApache License 2.0Apache-2.0

warning

!!!Now, the code cannot reproduce the mAp result on coco.Please don`t use it.

Introduction

An unofficial implementation of Pytorch version PP-YOLOE,based on Megvii YOLOX training code. Many codes references from PP-YOLOE Official implementation and YOLOX. Report on Arxiv

Updates

  • 【2022/04/15】 Initial commit support training, eval, demo for ppyoloe-s/m/l/x.

Comming soon

  • PP-YOLOE model deploy.
  • More pretrained model.
  • More experiments results.
  • Code to convert PP-YOLOE model from PaddlePaddle to Pytorch.

Model

Model size mAPval
0.5:0.95
mAPtest
0.5:0.95
Speed V100
(ms)
Params
(M)
FLOPs
(G)
weights
PP-YOLOE-s 640 Training... Training... Training... 7.93 17.36 Coming soon...
PP-YOLOE-m 640 Training... Training... Training... 23.43 49.91 Coming soon...
PP-YOLOE-l 640 Training... Training... Training... 52.20 110.07 Coming soon...
PP-YOLOE-x 640 Training... Training... Training... 98.42 206.59 Coming soon...

Quick Start

Now, there are some differences between this code and the official version. I will explain it in detail in zhihu later.

Installation

Step1. Install from source.(No difference from the Megvii YOLOX)

git clone git@github.com:Nioolek/PPYOLOE_pytorch.git
cd PPYOLOE_pytorch
pip3 install -v -e .  # or  python3 setup.py develop

Demo

Step1. Download a pretrained model from the benchmark table.

Step2. Run demo.py

python tools/demo.py image -f exps/ppyoloe/default/ppyoloe_l.py -c /path/to/your/ppyoloe_l.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu] --ppyoloe --legacy

Because of the difference in preprocess, you must use the args '--ppyoloe' and '--legacy' while inference and eval.

Train

Step1. Prepare COCO dataset

cd <PPYOLOE_pytorch_HOME>
ln -s /path/to/your/COCO ./datasets/COCO

Step2. Reproduce our results on COCO by specifying -f:

python -m yolox.tools.train -f exps/ppyoloe/default/ppyoloe_l.py -d 8 -b 64 --fp16 -o [--cache]

Evaluation

python -m yolox.tools.eval -f  exps/ppyoloe/default/ppyoloe_l.py -c ppyoloe_l.pth -b 64 -d 8 --conf 0.001 --legacy --ppyoloe [--fp16] [--fuse]

Because of the difference in preprocess, you must use the args '--ppyoloe' and '--legacy' while inference and eval.

More details can find from the docs of YOLOX.

More information

  • Because of lack of GPUs,I am now training the model.I hope the code can reproduce the PP-YOLOE results on COCO.
  • You are welcome to report bugs.

Reference

https://github.com/Megvii-BaseDetection/YOLOX

 @article{yolox2021,
  title={YOLOX: Exceeding YOLO Series in 2021},
  author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal={arXiv preprint arXiv:2107.08430},
  year={2021}
}

https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4/configs/ppyoloe