Awesome
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
towegihts
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
<p><img src="common/demo/loss_curve.png"\></p>
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
towegihts
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.
<p align="center"><img src="common/demo/demo0.jpg"\></p> <p align="center"><img src="common/demo/demo1.jpg"\></p>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
- darknet
- PyTorch-YOLOv3: Thanks for YOLO loss code