使用YOLO框架Darknet进行分类预训练

来源:互联网 发布:知世故而不世故全文 编辑:程序博客网 时间:2024/06/05 09:09

网络上大部分整理的博文都是关于YOLO以及YOLOv2的finetune过程,但由于实际的业务数据的要求,需要得到与之匹配的预训练模型,本文将使用YOLO的网络进行预训练,得到适合自己的分类器。
文章参考链接地址:https://pjreddie.com/darknet/train-cifar/

1、 下载darknet,并进行编译

git clone https://github.com/pjreddie/darknetcd darknetmake

2、获取数据

我使用的是Mnist数据集,由于Mnist数据集是二进制格式的,所以需要先将其转化为.jpg格式的图片,同时将其中的标签数据提取出来。具体提取后的适配于Darknet训练的格式如下:
这里写图片描述
其中test存放测试图片,train存放训练图片,labels存放类别种类。labels中的格式如下:

 0 1 2 3 4 5 6 7 8 9

注意:train文件夹中的每张图片的名字,需要包含label中的标签,比如有张图片属于类别”0”,则这张图片名字可以命名为“0_XXXXX”,其中XXXXX 为任意字符,但不能包含标签中其他类别的字符,否则程序就会当作该图片属于多个类。
将lables.txt改为lables.list,然后还需要train.list文件,这个文件里列出了train文件夹里所有的图片,每一行为一张图片的绝对路径。

/home/yrs/darknet/data/train/0_asdgaega.jpg/home/yrs/darknet/data/train/1_asdgbyel.jpg

3、修改数据配置文件

进入darknet/cfg文件夹,修改imagenet1k.data文件,并保存为mnist.data:

classes=10                              //类别数train  = data/train.list                //训练集列表路径valid  = data/valid.list                //验证集列表路径backup = /home/yrs/backup/              //用来保存训练结果的路径labels = data/labels.list               //标签路径names  = data/shortnames.list           //训练阶段不使用top=5                                   //top5准确率

4、修改网络配置文件

还是上一步的文件夹,打开darknet19.cfg,这里列出了主要需要修改的项,并保存为mnist.cfg

[net]batch=128subdivisions=1height=56width=56max_crop=512channels=3momentum=0.9decay=0.0005learning_rate=0.001policy=polypower=4max_batches=10000angle=7hue = .1saturation=.75exposure=.75aspect=.75[convolutional]batch_normalize=1filters=32size=3stride=1pad=1activation=leaky............[convolutional]filters=10              //一定要修改,否则会出错size=1stride=1pad=1activation=linear[avgpool][softmax]groups=1[cost]type=sse

5、训练模型

进入darknet根目录

./darknet classifier train cfg/mnist.data cfg/mnist.cfg

接下来就看到训练过程啦~
这里写图片描述

2 0