YOLOv3
Full implementation of YOLOv3 in PyTorch.
Overview
YOLOv3: An Incremental Improvement
[Paper]
[Original Implementation]
Why this project
- Implement YOLOv3 and darknet53 without original darknet cfg parser.
- It is easy to custom your backbone network. Such as resnet, densenet...
Installation
Environment
- pytorch >= 0.4.0
- python >= 3.6.0
Get code
git clone https://github.com/BobLiu20/YOLOv3_PyTorch.git
cd YOLOv3_PyTorch
pip3 install -r requirements.txt --user
Download COCO dataset
cd data/
bash get_coco_dataset.sh
Training
Download pretrained weights
- See weights readme for detail.
- Download pretrained backbone wegiths from Google Drive or Baidu Drive
- Move downloaded file
darknet53_weights_pytorch.pth
to wegihts
folder in this project.
Modify training parameters
- Review config file
training/params.py
- Replace
YOUR_WORKING_DIR
to your working directory. Use for save model and tmp file.
- Adjust your GPU device. see parallels.
- Adjust other parameters.
Start training
cd training
python training.py params.py
Option: Visualizing training
# please install tensorboard in first
python -m tensorboard.main --logdir=YOUR_WORKING_DIR
Evaluate
Download pretrained weights
- See weights readme for detail.
- Download pretrained yolo3 full wegiths from Google Drive or Baidu Drive
- Move downloaded file
official_yolov3_weights_pytorch.pth
to wegihts
folder in this project.
Start evaluate
cd evaluate
python eval_coco.py params.py
Quick test
pretrained weights
Please download pretrained weights official_yolov3_weights_pytorch.pth
or use yourself checkpoint.
Start test
cd test
python test_images.py params.py
You can got result images in output folder.
Measure FPS
pretrained weights
Please download pretrained weights official_yolov3_weights_pytorch.pth
or use yourself checkpoint.
Start test
cd test
python test_fps.py params.py
Results
- Test in TitanX GPU with different input size and batch size.
- Keep in mind this is a full test in YOLOv3. Not only backbone but also yolo layer and NMS.
Imp. |
Backbone |
Input Size |
Batch Size |
Inference Time |
FPS |
Paper |
Darknet53 |
320 |
1 |
22ms |
45 |
Paper |
Darknet53 |
416 |
1 |
29ms |
34 |
Paper |
Darknet53 |
608 |
1 |
51ms |
19 |
Our |
Darknet53 |
416 |
1 |
28ms |
36 |
Our |
Darknet53 |
416 |
8 |
17ms |
58 |
Credit
@article{yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal = {arXiv},
year={2018}
}
Reference