标签:deep learning 机器学习 caffe 图像处理
deep learning实践经验总结2
最近拿caffe来做图片分类,遇到不少问题,同时也吸取不少教训和获得不少经验。
这次拿大摆裙和一步裙做分类,
多次训练效果一直在0.7,后来改动了全链接层的初始化参数。高斯分布的标准差由0.001改为0.0001,就是调小了。
然后效果很明显,准确率高了,权重图画出来后,也看得出是有意义的了,部分权重图是人的轮廓或者裙子的轮廓。
先看看图片:
大摆裙
一步裙
然后找一些响应图看一下,当然我这里展示的是一些效果好的响应图。
大摆裙
一步裙
一些权重图:
这是网络的结构参数:
name: "CIFAR10_full_train"
layers {
layer {
name: "cifar"
type: "data"
#source: "/home/linger/linger/testfile/crop_train_db"
#source: "/home/linger/linger/testfile/collar_train_db"
source: "/home/linger/linger/testfile/skirt_train_db"
#source: "/home/linger/linger/testfile/pattern_train_db"
meanfile: "/home/linger/linger/testfile/skirt_train_mean.binaryproto"
#cropsize: 200
batchsize: 20
}
top: "data"
top: "label"
}
layers {
layer {
name: "conv1"
type: "conv"
num_output: 16
kernelsize: 5
stride:1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "data"
top: "conv1"
}
layers {
layer {
name: "relu1"
type: "relu"
}
bottom: "conv1"
top: "conv1"
}
layers {
layer {
name: "pool1"
type: "pool"
pool: MAX
kernelsize: 2
stride:1
}
bottom: "conv1"
top: "pool1"
}
layers {
layer {
name: "conv2"
type: "conv"
num_output: 16
group: 2
kernelsize: 5
stride:1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "pool1"
top: "conv2"
}
layers {
layer {
name: "relu2"
type: "relu"
}
bottom: "conv2"
top: "conv2"
}
layers {
layer {
name: "pool2"
type: "pool"
pool: MAX
kernelsize: 2
stride: 1
}
bottom: "conv2"
top: "pool2"
}
layers {
layer {
name: "ip1"
type: "innerproduct"
num_output: 100
weight_filler {
type: "gaussian"
std: 0.0001
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "pool2"
top: "ip1"
}
layers {
layer {
name: "ip2"
type: "innerproduct"
num_output: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "ip1"
top: "ip2"
}
#-----------------------output------------------------
layers {
layer {
name: "loss"
type: "softmax_loss"
}
bottom: "ip2"
bottom: "label"
}
name: "CIFAR10_full_test"
layers {
layer {
name: "cifar"
type: "data"
#source: "/home/linger/linger/testfile/collar_test_db"
#source: "/home/linger/linger/testfile/crop_test_db"
source: "/home/linger/linger/testfile/skirt_test_db"
#source: "/home/linger/linger/testfile/pattern_test_db"
meanfile: "/home/linger/linger/testfile/skirt_test_mean.binaryproto"
#cropsize: 200
batchsize: 10
}
top: "data"
top: "label"
}
layers {
layer {
name: "conv1"
type: "conv"
num_output: 16
kernelsize: 5
stride:1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "data"
top: "conv1"
}
layers {
layer {
name: "relu1"
type: "relu"
}
bottom: "conv1"
top: "conv1"
}
layers {
layer {
name: "pool1"
type: "pool"
pool: MAX
kernelsize: 2
stride:1
}
bottom: "conv1"
top: "pool1"
}
layers {
layer {
name: "conv2"
type: "conv"
num_output: 16
group: 2
kernelsize: 5
stride:1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "pool1"
top: "conv2"
}
layers {
layer {
name: "relu2"
type: "relu"
}
bottom: "conv2"
top: "conv2"
}
layers {
layer {
name: "pool2"
type: "pool"
pool: MAX
kernelsize: 2
stride: 1
}
bottom: "conv2"
top: "pool2"
}
layers {
layer {
name: "ip1"
type: "innerproduct"
num_output: 100
weight_filler {
type: "gaussian"
std: 0.0001
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "pool2"
top: "ip1"
}
layers {
layer {
name: "ip2"
type: "innerproduct"
num_output: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0.
}
blobs_lr: 1.
blobs_lr: 1.
weight_decay: 0.001
weight_decay: 0.
}
bottom: "ip1"
top: "ip2"
}
#-----------------------output------------------------
layers {
layer {
name: "prob"
type: "softmax"
}
bottom: "ip2"
top: "prob"
}
layers {
layer {
name: "accuracy"
type: "accuracy"
}
bottom: "prob"
bottom: "label"
top: "accuracy"
}
# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 # then another factor of 10 after 10 more epochs (5000 iters) # The training protocol buffer definition train_net: "cifar10_full_train.prototxt" # The testing protocol buffer definition test_net: "cifar10_full_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of CIFAR10, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 20 # Carry out testing every 1000 training iterations. test_interval: 100 # The base learning rate, momentum and the weight decay of the network. base_lr: 0.00001 momentum: 0.9 weight_decay: 0.004 # The learning rate policy lr_policy: "fixed" # Display every 200 iterations display: 20 # The maximum number of iterations max_iter: 60000 # snapshot intermediate results snapshot: 1000 snapshot_prefix: "cifar10_full" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1
真的是多玩数据,才会对数据形成一种感觉啊。
下次玩3类的。敬请期待!
deep learning实践经验总结2--准确率再次提升,到达0.8,再来总结一下,布布扣,bubuko.com
deep learning实践经验总结2--准确率再次提升,到达0.8,再来总结一下
标签:deep learning 机器学习 caffe 图像处理
原文地址:http://blog.csdn.net/lingerlanlan/article/details/32329761