I'm solving scale invariant. If you have a good paper, you can email me by [email protected]. Thanks!
- Data augmentation(release)
- Multi-scale training(release)
- Focal loss(increase 2 mAP, release)
- Single-Shot Object Detection with Enriched Semantics(incrase 1 mAP, not release)
- Soft-NMS(drop 0.5 mAP, release)
- Group Normalization(didn't use it in project, release)
- Recently updated: Modified the assign method of positive and negative samples(increase 0.6 mAP, release)
- Recently updated: Multi-scale testing(increase 2 mAP, release)
- Deformable convolutional networks
- Scale-Aware Trident Networks for Object Detection
- Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
(score_threshold=0.01, iou_threshold=0.45, test_input_size=544)
If you want to get a higher mAP, you can set the score threshold to 0.01.
If you want to apply it, you can set the score threshold to 0.2.
-
initial with yolov3-608.weights
size mAP 544 88.91 multi scale 90.52
2. initial with darknet53.weights
The same performance as Tencent's reimplementation
| size | mAP |
| :--: | :---: |
| 544 | 79.32 |
| multi scale | 81.89 |
-
clone YOLO_v3 repository
git clone https://github.com/Stinky-Tofu/YOLO_v3.git
-
prepare data
(1) download datasets
Create a new folder nameddata
in the directory where theYOLO_V3
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:
|--YOLO_V3
|--data
|--|--VOC
|--|--|--2012_trainval
|--|--|--2007_trainval
|--|--|--2007_test(2) convert data format
You should setDATASET_PATH
inconfig.py
to the path of the VOC dataset, for example:DATASET_PATH = '/home/xzh/doc/code/python_code/data/VOC'
,and thenpython 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 --dara_format=NHWC --ckpt_file=./saved_model/yolov3_608_coco_pretrained.ckpt cd .. python rename.py
-
Train
python train.py
-
Test
Download weight file yolo_test.ckptpython test.py --gpu=0 --map_calc=True --weights_file=model_path.ckpt cd mAP python main.py -na -np
- Generate your own annotation file
train_annotation.txt
andtest_annotation.txt
, one row for one image.
Row format: image_path bbox0 bbox1 ...
Bbox format: xmin,ymin,xmax,ymax,class_id(no space), for example:
/home/xzh/doc/code/python_code/data/VOC/2007_test/JPEGImages/000001.jpg 48,240,195,371,11 8,12,352,498,14
- Put the
train_annotation.txt
andtest_annotation.txt
intoYOLO_V3/data/
. - Configure config.py for your dataset.
- Start training.
python train.py
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
mAP calculate: mean Average Precision
- Python2.7.12
- Numpy1.14.5
- Tensorflow.1.8.0
- Opencv3.4.1