YOLOV4训练ImageNet数据集


环境

Ubuntu16.04
Python3.6
Cuda10


一、代码下载

代码下载址:https://github.com/AlexeyAB/darknet
或者使用命令行下载:

git clone https://github.com/AlexeyAB/darknet.git

另外需要自行下载权值文件yolov4.weights和预训练模型yolov.conv.137
下载链接:https://pan.baidu.com/s/1wike19jsm-C6WFWdG8amJQ,提取码:agir

二、编译

如果使用GPU训练,需要改Makefile文件的一些参数

GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=0 #如果需要使用opencv,把该参数改为1
AVX=0
OPENMP=0
LIBSO=0

然后编译,在命令行输入:

# 在darknet-master目录下
make
或者 make -j8

编译完成后输入./darknet, 如果出现usage:./darknet说明编译成功。
测试:
用训练好的权值文件yolov4.weights测试一下

# 测试图片,结果保存在darknet-master/predictions.jpg
./darknet detect cfg/yolov4.cfg yolov4.weights data/horses.jpg

在这里插入图片描述

二、训练ImageNet数据集

在网上大部分yolov4训练的教程使用的都是PASCAL VOC数据集,在这里介绍使用yolov4训练ImageNet数据集的教程

1.ImageNet数据集

将ImageNet数据集以下述格式存放:

ImageNet
  Annotations
    train
    val
  ImageSets
    Main
      test.txt
      train.txt
      val.txt
  JPEGImages
    test
    train
    val
  labels

Annotations是存放标签xml文件
JPEGImage存放图片
ImageSets里面txt按行存放着图片名字(需要自行准备)
labels里面的文件由下述教程生成

2.生成darknet需要的label文件

darknet-master/scripts目录下的voc_label.py文件就是作者已经写好的生成label的代码,但是由于作者是在PASCAL VOC数据集训练的,而ImageNet数据集和PASCAL VOC数据集存在一些不同,需要自己对voc_label.py的代码修改。运行voc_label.py会生成五个新的文件:2007_train.txt, 2007_test.txt, 2007_val.txt, train.all.txt, train.txt。

1.voc.data

在cfg目录下内复制voc.data文件,粘贴到data目录下,并重命名为obj.data,修改里面的内容为:

classes= 30  #检测类别数量
train  = data/2007_train.txt   #训练集路径
valid  = data/2007_val.txt    #测试集路径
names = data/voc.names     #类别名,下面有介绍
backup = backup    #权重保存文件夹
2.voc.names

在cfg目录下内复制voc.names文件,粘贴到data目录下,并重命名为obj.names,修改里面的内容为:

n02691156
n02419796
n02131653
n02834778
n01503061
n02924116
n02958343
n02402425
n02084071
n02121808
n02503517
n02118333
n02510455
n02342885
n02374451
n02129165
n01674464
n02484322
n03790512
n02324045
n02509815
n02411705
n01726692
n02355227
n02129604
n04468005
n01662784
n04530566
n02062744
n02391049
3.cfg/yolo-obj.cfg

将cfg/yolov4-custom.cfg复制,并将复制后的文件命名为yolo-obj.cfg,然后修改yolo-obj.cfg:
第一处:

[net]
# Testing
#batch=1
#subdivisions=1
# Training
batch=64
subdivisions=16
width=608    #改为416
height=608    #改为416
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 500500    #修改为类别数*2000(这里是30*2000)
policy=steps
steps=400000,450000    #修改为max_batches*0.8, max_batches*0.9
scales=.1,.1

#cutmix=1
mosaic=1    #如果不使用opencv,需要修改为0

第二处:
使用快捷键ctrl+f,查找yolo,一共有3处:

[convolutional]
size=1
stride=1
pad=1
filters=255     #修改为(类别数 + 5) * 3
activation=linear


[yolo]
mask = 6,7,8
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80    #修改为类别数
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
scale_x_y = 1.05
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6
max_delta=5

3.训练ImageNet数据集

./darknet detector train data/obj.data cfg/yolo-obj.cfg yolov4.conv.137

如果要打印loss曲线,同时打印map值,在后面加-map:

./darknet detector train data/obj.data cfg/yolo-obj.cfg yolov4.conv.137 -map

在backup目录下生成多个权值文件,需要在darknet-master目录下自己创建backup文件夹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值