原文来源: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/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 classifier train cfg/cifar.data cfg/cifar_small.cfg backup/cifar_small.backup