YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集

注:版权所有,转载请注明出处。

更新(Mobilenet-YOLOv4)

目前更新了mobilenet-yolov4的代码,MAP值和FPS相比于mobilenet-yolov3有较大提高。各位客官请移步到github上查看

最新

结合注意力模型(SEnet、CBAM)的YOLOv4模型。
YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集_第1张图片
YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集_第2张图片

环境

  • Nvida GeForce RTX 2080TI
  • CUDA10.0
  • CUDNN7.0
  • Windows and Linux
  • Python 3.6

代码地址:YOLOv4

测试结果

  • Pascal VOC2007测试集上结果:
    YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集_第3张图片
  • Pascal VOC2007 P-R曲线:
    YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集_第4张图片

新特性

  • Mish
  • Data Augment (RandomHorizontalFlip, RandomCrop, RandomAffine, Resize)
  • Custom data
  • Step lr Schedule
  • Multi-scale Training (320 to 640)
  • focal loss
  • GIOU
  • Label smooth
  • Mixup
  • cosine lr
  • Multi-scale Test and Flip

安装依赖库

pip install -r requirements.txt --user

下载数据集

  • Pascal VOC数据集:
    VOC 2012_trainval 、VOC 2007_trainval、VOC2007_test
  • COCO2017数据集 :
    train2017_img
    train2017_ann
    val2017_img
    val2017_ann
    test2017_img
    test2017_list

准备工作

1.将自己的数据集转换成pascal_voc和COCO数据集格式
PascalVOC
# 下载数据集
cd $HOME/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# 解压
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

结构如下:
voc
├── trainval.txt
├── test.txt
├── label_list.txt (optional)
├── VOCdevkit/VOC2007
│ ├── Annotations
│ ├── 001789.xml
│ | …
│ ├── JPEGImages
│ ├── 001789.jpg
│ | …
│ ├── ImageSets
│ | …
├── VOCdevkit/VOC2012
│ ├── Annotations
│ ├── 2011_003876.xml
│ | …
│ ├── JPEGImages
│ ├── 2011_003876.jpg
│ | …
│ ├── ImageSets
│ | …
| …

  • 下载链接:{VOC 2012_trainval 、VOC 2007_trainval、VOC2007_test}、
MSCOCO 2017
#step1: 下载数据集
2017 Train images [118K/18GB]
2017 Val images [5K/1GB]
2017 Test images [41K/6GB]
2017 Train/Val annotations [241MB]

#step2: 按照下面结构存放文件夹
coco
  ├── annotations
  │   ├── instances_train2014.json
  │   ├── instances_train2017.json
  │   ├── instances_val2014.json
  │   ├── instances_val2017.json
  │   |   ...
  ├── train2017
  │   ├── 000000000009.jpg
  │   ├── 000000580008.jpg
  │   |   ...
  ├── val2017
  │   ├── 000000000139.jpg
  │   ├── 000000000285.jpg
  │   |   ...
  |   ...
  ```
  • 下载链接:{train2017_img
    、train2017_ann
    、val2017_img
    、val2017_ann
    、test2017_img
    、test2017_list
    }
2.更新config/yolov4_config.py中“DATA_PATH”参数(“VOC"或者"COCO”)
3.(对于COCO数据集)使用coco_to_voc.py将COCO数据类型转换为VOC数据类型。
4.使用utils/voc.py或utils/coco.py转换成pascal voc *.xml格式(或COCO *.json格式)到.txt格式(img_path xmin0 ymin0 xmax0 ymax0 class0, xmin1 ymin1 xmax1 ymax1 class1,……)。
5.对于自己的数据集

1)将数据集的图片放入JPEGImages文件夹,将注释文件放入Annotations文件夹。
2)使用xml_to_txt.py文件将训练和测试文件列表写入ImageSets/Main/*.txt文件中。
3)使用utils/voc.py或utils/coco.py转换成pascal voc *.xml格式(或COCO *.json格式)到txt格式(img_path xmin0 ymin0 xmax0 ymax0 class0, xmin1 ymin1 xmax1 ymax1 class1,……)。

下载预训练模型

  • 在根目录下创建weight文件夹;
  • 将下载好的预训练模型放到weight/目录下
  • Darknet pre-trained weight :
    (google)(https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT)
    (baiduyun)(https://pan.baidu.com/s/1amusMu_JKz9_AHXr7xWM7A 提取码 args)

训练

对于VOC数据集:在config/yolov4_config.py中将DATA_TYPE设置为VOC,
对于COCO数据集:在config/yolov4_config.py中将DATA_TYPE设置为COCO,
然后运行python -u train.py  --gpu_id 0

测试

对于VOC数据集:
python eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det
对于COCO数据集:
python eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det

验证结果(mAP值,P-R曲线)

(VOC dataset):
python get_gt_txt.py #得到ground truth
python get_map.py #得到mAP,P-R曲线图
(COCO dataset):
python eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode val

计算模型大小,参数

python modelsize.py

你可能感兴趣的:(YOLOv4-pytorch(attentive YOLOv4)(Mobilenet-YOLOv4) 训练PASCAL VOC、COCO和自己的数据集)