基于Darknet框架训练分类器

原文来源:https://pjreddie.com/darknet/train-cifar/

第一步:安装Darknet

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

cd darknet

make

第二步:下载数据集(这里用的是Cifar数据集)

cd data 

wget https://pjreddie.com/media/files/cifar.tgz

tar xzf cifar.tgz

解压以后目录下包含了test和train文件夹,还有一个labels.txt文件

第三步:将train和test文件夹下的图片名称生成对应的列表文件

cd cifar

find `pwd`/train -name \*.png > train.list           (注:此处图片为.png格式)

find `pwd`/test -name \*.png > test.list

cd ../..

第四步:制作数据集配置文件

在 darknet/cfg 目录下新建一个cifar.data文件,文件内容如下:

classes=10          
train  = data/cifar/train.list
valid  = data/cifar/test.list
labels = data/cifar/labels.txt
backup = backup/
top=2

对应的注释:

基于Darknet框架训练分类器_第1张图片

第五步:制作一个训练网络

在 darknet/cfg 目录下新建一个cifar_small.cfg文件,文件内容如下:

[net]
batch=128
subdivisions=1
height=28
width=28
channels=3
max_crop=32
min_crop=32

hue=.1
saturation=.75
exposure=.75

learning_rate=0.1
policy=poly
power=4
max_batches = 5000
momentum=0.9
decay=0.0005

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

[convolutional]
filters=10
size=1
stride=1
pad=1
activation=leaky

[avgpool]

[softmax]
groups=1

[cost]

type=sse

注:这个网络只有四个卷积层和两个池化层,是个很小的训练网络,所以效果一般,但是训练速度很快。

最后一层卷积层有10个卷积核,因为这个数据集包含了10个类别。

第六步:开始训练

./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg

训练完成以后:


这个cifar_small.weights文件就是最终训练好的分类器

第七步:测试(输入一张猫的图片)

./darknet classifier predict cfg/cifar.data cfg/cifar_small.cfg backup/cifar_small.weights 0_cat.png

测试结果显示有62.91%的概率是猫

基于Darknet框架训练分类器_第2张图片

第八步:重新开始训练

如果你停止训练,你可以随时使用它保存的一个模型检查点重新启动它:

./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg backup/cifar_small.backup

你可能感兴趣的:(深度学习,卷积神经网络,darknet,分类器)