YOLO version3 in Pytorch

Full implementation of YOLO version3 in PyTorch, including training, evaluation, simple deployment(developing).

Overview

YOLOv3: An Incremental Improvement

[Paper]
[Original Implementation]

Motivation

Implement YOLOv3 and darknet53 without original darknet cfg parser.
It is easy to custom your backbone network. Such as resnet, densenet...

Also decide to develop custom structure (like grayscale pretrained model)

Installation

Environment
  • pytorch >= 0.4.0
  • python >= 3.6.0
Get code
git clone https://github.com/zhanghanduo/yolo3_pytorch.git
cd YOLOv3_PyTorch
pip3 install -r requirements.txt --user
Download COCO dataset
cd data/
bash get_coco_dataset.sh
Download BDD dataset

Please visit BDD100K for details.

Training

Download pretrained weights
  1. See weights readme for detail.
  2. Download pretrained backbone wegiths from Google Drive or Baidu Drive
  3. Move downloaded file darknet53_weights_pytorch.pth to wegihts folder in this project.
Modify training parameters
  1. Review config file training/params.py
  2. Replace YOUR_WORKING_DIR to your working directory. Use for save model and tmp file.
  3. Adjust your GPU device. See parallels.
  4. 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
  1. See weights readme for detail.
  2. Download pretrained yolo3 full wegiths from Google Drive or Baidu Drive
  3. Move downloaded file yolov3_weights_pytorch.pth to wegihts folder in this project.
Start evaluate
cd evaluate
python eval.py params.py
Results
Model mAP (min. 50 IoU) weights file
YOLOv3 (paper) 57.9
YOLOv3 (convert from paper) 58.18 official_yolov3_weights_pytorch.pth
YOLOv3 (train best model) 59.66 yolov3_weights_pytorch.pth

Roadmap

  • Yolov3 training
  • Yolov3 evaluation
  • Add backbone network other than Darknet
  • Able to adapt 3-channel image to 1-channel input

Credit

@article{yolov3,
	title={YOLOv3: An Incremental Improvement},
	author={Redmon, Joseph and Farhadi, Ali},
	journal = {arXiv},
	year={2018}
}

Reference