yolov3训练自己的数据集(darknet)+visdrone数据集

上篇链接:https://blog.csdn.net/daisy_d_/article/details/105748051

全部完成分为下面几个步骤
1.制作自己的数据集-将visdrone转化为yolo所需的格式
2.配置yolov3 (下面完成这部分
3.测试及计算map

下载darknet并编译

git clone https://github.com/pjreddie/darknet
cd darknet

修改makfile文件

GPU=1 #如果使用GPU设置为1,CPU设置为0
CUDNN=1  #如果使用CUDNN设置为1,否则为0
OPENCV=0 #如果调用摄像头,还需要设置OPENCV为1,否则为0
OPENMP=0  
DEBUG=0  

编译

make

下载权重并修改相关配置信息

下载权重,我用的是darknet53.conv.74
我放在了scripts文件夹下

wget https://pjreddie.com/media/files/darknet53.conv.74 

修改cfg/voc.data

classes= 10
train  = /home/mist/darknet/scripts/VOCdevkit/VOC2018/train.txt
 #路径根据自己需要修改,注意使用绝对路径,这个代码相对路径我试的行不通
valid  = /home/mist/darknet/scripts/VOCdevkit/VOC2018/val.txt
names = data/voc.names
backup = backup

修改data/voc.name

pedestrian
people
bicycle
car
van
truck
tricycle
awning-tricycle
bus
motor

修改cfg/yolov3-voc.cfg,我使用的这个网络
修改的地方:
第一处

[convolutional]
size=1
stride=1
pad=1
filters=45        #修改为3*(classes+5)即3*(10+5)=45
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=10        #修改类别个数,10类
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0    

第二处

[convolutional]
size=1
stride=1
pad=1
filters=45        #修改
activation=linear
 
[yolo]
mask = 3,4,5
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=10        #修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0       

第三处

[convolutional]
size=1
stride=1
pad=1
filters=45        #修改
activation=linear
 
[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=10        #修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0      

训练

接下来就可以训练啦,训练可能时间比较长一定要用耐心~

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 

如果训练中断了可以从最后一次保存的权重开始

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_51000.weights

训练时需要注意的参数

learning_rate=0.001    #初始学习率。学习率设置可以参考https://blog.csdn.net/qq_33485434/article/details/80452941
....
max_batches = 50200     #迭代max_batches后停止训练
....
steps=40000,45000  #steps和scale可以设置学习率的变化,迭代到40000次和45000次时,学习率衰减
scales=.1,.1       #.1就是衰减十倍

训练时保存权重的频率
前一千次每100保存一次,大于1000每10000保存一次权重
可以修改detector.c中,选择合适的频率

 if(i%10000==0 || (i < 1000 && i%100 == 0))

你可能感兴趣的:(yolov3,visdrone)