train dataset: VOC 2012 + VOC 2007
test dataset: VOC 2007
test size: 544
test code: mAP (not use 07 metric)
test score threshold: 0.01
model | mAP | delta | release |
baseline | 84.3 | 0.0 | yes |
data agumentation | 85.8 | +1.5 | yes |
multi scale train | 86.3 | +0.5 | yes |
focal loss | 88.3 | +2.0 | yes |
des | xxx | +1.0 | no |
group normalization | xxx | xxx | yes |
soft nms | xxx | -0.6 | yes |
label smooth | 88.6 | +0.3 | yes |
cosine learning rate | 88.6 | 0.0 | yes |
GIOU | 88.8 | +0.2 | yes |
multi scale test | 90.7 | +1.9 | yes |
-
clone YOLO_v3 repository
git clone https://github.com/Stinky-Tofu/Stronger-yolo.git
-
prepare data
(1) download datasets
Create a new folder nameddata
in the directory where theStronger-yolo
folder is located, and then create a new folder namedVOC
in thedata/
.
Download VOC 2012_trainval 、VOC 2007_trainval 、VOC 2007_test, and put datasets intodata/VOC
, name as2012_trainval
、2007_trainval
、2007_test
separately.
The file structure is as follows:
|--stronger-yolo
|--|--v1
|--|--v2
|--|--v3
|--data
|--|--VOC
|--|--|--2012_trainval
|--|--|--2007_trainval
|--|--|--2007_test
(2) convert data format
You should alterDATASET_PATH
inconfig.py
, for example:
DATASET_PATH = /home/wz/doc/code/python_code/data/VOC
cd Stronger-yolo/v1 python voc_annotation.py
-
prepare initial weights
Download YOLOv3-608.weights firstly, put the yolov3.weights intoyolov3_to_tf/
, and thencd yolov3_to_tf python3 convert_weights.py --weights_file=yolov3.weights --data_format=NHWC --ckpt_file=./saved_model/yolov3_608_coco_pretrained.ckpt cd .. python rename.py
-
train
python train.py
-
test
Download weight file stronger-yolo-v1-test.ckpt
If you want to get a higher mAP, you can set the score threshold to 0.01、use multi scale test、flip test.
If you want to use it in actual projects, or if you want speed, you can set the score threshold to 0.2.python test.py --gpu=0 --map_calc=True --weights_file=model_path.ckpt cd mAP python main.py -na -np
paper:
- YOLOv3: An Incremental Improvement
- Foca Loss for Dense Object Detection
- Group Normalization
- Single-Shot Object Detection with Enriched Semantics
- An Analysis of Scale Invariance in Object Detection - SNIP
- Deformable convolutional networks
- Scale-Aware Trident Networks for Object Detection
- Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
- Bag of Freebies for Training Object Detection Neural Networks
- Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
software
- Python2.7.12
- Numpy1.14.5
- Tensorflow.1.8.0
- Opencv3.4.1
hardware
- 12G 1080Ti