建议使用LabelImage给数据集标框。为了方便大家的下载,这里提供LabelIamge的可执行文件下载地址:
[百度网盘](https://pan.baidu.com/s/1Tp4S6vJbVfld7efTtl0CXA) 提取码:aihc
解压之后里面有一个labelImage.exe,打开即可对数据集标框。
首先点击opendir,选择要打标签的数据集的路径,然后需要选着YOLO模式,这个模式把标签生成txt文件,yolov3需要的就是txt类型的文件。如果是默认的PscalVOC模式,会生成xml格式的标签。
然后点击Create RectBox标框,然后save,再下一张。
完成之后是这样的:
一个txt文件中可能有多行,这取决于你一张图片标了几个框。以dog.txt为例,
第一个数字是classes,接下来依次是x_center、 y_center、 width、height
将做好标签的的数据集train_images和val_images放到…\darknet-master\build\darknet\x64\data下
yolov3是根据读取设置好的txt来读取数据集的,所以接下来需要生成train.txt和val.txt。这两个文件txt每一行都是保存的一张图片的路径。放到…\darknet-master\build\darknet\x64\data下。代码如下:
#此代码和data文件夹同目录
import glob
path = 'data/'
def generate_train_and_val(image_path, txt_file):
with open(txt_file, 'w') as tf:
for jpg_file in glob.glob(image_path + '*.jpg'):
tf.write(jpg_file + '\n')
generate_train_and_val(path + 'train_images/', path + 'train.txt')
generate_train_and_val(path + 'val_images/', path + 'val.txt')
创建一个txt文本,文件放在…\darknet-master\build\darknet\x64\data,文本的每一行是一个类别,这个类别要和你之前做标签的类别对应
如图:dog的classes序列号为0,person的序列号为1…
创建好后重命名为classes.names
新建一个txt,该文件放在…\darknet-master\build\darknet\x64\data,里面包含以下内容:
classes= 2 //类别
train = data/train.txt //训练集
valid = data/val.txt //验证集
names = data/classes.names //类别名对应表
backup = backup/ //训练模型保存的路径
根据上面自己的设置修改
在build\darknet\x64\cfg下创建一个train_cfg2.cfg文件,里面的内容可以复制build\darknet\x64\cfg\yolov3.cfg里面的内容,然后做几处修改即可:
(1)batch=16 //过大会out of memory
subdivisions=16
(2)classes=2
classes是类别数,这里只有两类,所以设置为2,文件里一共有3处需要修改classes,一般大约在文件的第610、696、783行。都在[yolo]下面的classes
(3)filters=21
filters的计算公式为(classes + 5)x3,我们这里有两类,所以是(2+5)*3=21,文件里一共有3处需要修改,这里需要注意,文件里有多处filter,但我们只需要修改[yolo]层之前的[convolutional]层下面的filters,位置一般是文件的第603、696、783行,如下图:
百度网盘,提取码:3a6y
将这个文件放在…build\darknet\x64下
打开cmd,将路径切换到build\darknet\x64下
darknet.exe detector train data/train_cfg1.data cfg/train_cfg2.cfg darknet53.conv.74
打开cmd,将路径切换到build\darknet\x64下
在build\darknet\x64\backup中查看模型的名称
将train_cfg2.cfg中的batch=16 和subdivisions=16改成batch=1 和subdivisions=1
darknet.exe detector test data/train_cfg1.data cfg/train_cfg2.cfg backup/模型名称 data/test1.jpg -thresh 0.5