darknet训练alexnet分类器
创建配置文件
darknet目录文件下cfg目录中包含了网络.cfg
,.name
文件表示训练时模型需要查找的文件。name文件如下
# 分类类别数
classes=5
# 训练图像数据的完整路径列表,如/media/liushuai/新加卷/pocamen/dataset/bulbasaur/00000000.jpg
train=/media/liushuai/新加卷/pocamen/darknet_file/train.list
# 验证文件的完整路径列表
valid=/media/liushuai/新加卷/pocamen/darknet_file/val.list
# 标签文件的名称如:bulbasaur(多目标则分行显示)
labels=/media/liushuai/新加卷/pocamen/darknet_file/labels.txt
# 权重文件的存储路径
backup=/media/liushuai/新加卷/pocamen/darknet_file/backup
# top2损失
top=2
cfg文件是网络结构文件,通常需要修改原来的网络结构的输出和添加损失函数:
[net]
# Training
batch=128
subdivisions=1
# Testing
# batch=1
# subdivisions=1
height=227
width=227
channels=3
momentum=0.9
decay=0.0005
max_crop=256
learning_rate=0.01
policy=poly
power=4
max_batches=800000
angle=7
hue = .1
saturation=.75
exposure=.75
aspect=.75
[convolutional]
filters=96
size=11
stride=4
pad=0
activation=relu
[maxpool]
size=3
stride=2
padding=0
[convolutional] #自带的alaxnet这里的pad=1,按照pad=1计算输出结果应该输出错误,但是pad=2输出和pad=1输出一样,
filters=256
size=5
stride=1
pad=2
activation=relu
[maxpool]
size=3
stride=2
padding=0
[convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu
[convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu
[convolutional]
filters=256
size=3
stride=1
pad=1
activation=relu
[maxpool]
size=3
stride=2
padding=0
[connected]
output=4096
activation=relu
[dropout]
probability=.5
[connected]
output=4096
activation=relu
[dropout]
probability=.5
[connected]
output=5
activation=linear
[softmax]
groups=1
[cost]
type=sse #原始的alexnet网络结构没有定义这里
AlexNet网络结构如下:
训练过程如下:
./darknet classifier train cfg/pocman.data cfg/alexnet_pocaman.cfg
预测过程:
./darknet classifier predict cfg/pocman.data cfg/alexnet_pocaman.cfg /media/liushuai/新加卷/pocamen/darknet_file/backup/alexnet_pocaman_64.weights /media/liushuai/新加卷/pocamen/dataset/bulbasaur/00000000.png