参考博文:
https://www.cnblogs.com/love6tao/p/5743030.html
http://blog.csdn.net/qq_27923041/article/details/54139887
安装cudnn 时,记得这个cudnn文件三个要拷贝到C盘中,替换掉原来的
1.制作训练集和测试集的标签(done)
见new_setlab.py
注意在同一目录下
要删掉train/
和val/
和文件夹SetLab文件(C++)
见(useful)save_convert.py
Notice:要将图片归一化:256x256
2.格式转换(leveldb只有windows才能编译)
数据格式转换需要以下几个条件:1、由caffe windows编译出的convert_imageset.exe;2、样本图片数据集准备;3、样本图片对应的标签文件;4、确定所要转换的数据格式是leveldb还是lmdb
caffe windows编译convert_imageset.exe方法此处不做赘述,配置caffe windows时即已完成。<<<PS:需要注意的是在编译convert_imageset.exe时,要将参数shuffle设定为true!!!>>>
方法一(done):
由compute_image_leveldb.txt文件另存为compute_image_leveldb.bat
Notice:
.txt文件的写法:
SET GLOG_logtostderr=1
C:\Users\Administrator\Desktop\Caffe_Using\caffe-master\Build\x64\Release\convert_imageset.exe C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself/train/ C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself/train/train.txt C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself/mytrainlmdb 0
pause
train.txt和test.txt文件的名字如下面的格式:
traincar/320.jpg 0
然后执行:
compute_image_leveldb_train.bat
compute_image_leveldb_val.bat
方法二(待定):
改create_imagenet.sh文件中的路径
这里要安装Git软件(windows平台下)
example设定为数据集的路径C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself
data也设定为数据集路径 C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself
tools为convert_imageset.exe的路径 C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/Build/x64/Release
train_data_root 训练数据集路径 C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself/train
val_data_root 测试数据集路径C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself/test
Notice:添加了这一句代码“--backend=leveldb\”
3.计算均值:
方法一(done):
见compute_mean.bat(记得要放在和训练数据集同一文件下)
方法二:
改make_imagenet_mean.sh文件
example是数据集路径 C:/Users/Administrator/Desktop/Caffe_Using/caffe-master/data/myself
data 为数据集路径
tools为compute_image_mean.exe路径
Notice:$DATA/imagenet_mean.binaryproto 后面--backend=leveldb
4.设计网络结构:
两个文件:
my_solver_setup.prototxt
my_train_val.prototxt:若是分类问题要更改最后全连接层的分类数
5.训练测试:
setup_train.bat
setpu_test.bat
6.测试模型分类结果并输出(python):
插入一个train.prototxt 和deploy.prototxt文件的差别:https://www.cnblogs.com/zhonghuasong/p/7353221.html
http://blog.csdn.net/fx409494616/article/details/53008971
7.主要参考:http://blog.csdn.net/koloumi/article/details/57916526(python文件的编写)
https://www.cnblogs.com/Allen-rg/p/5834551.html
deploy.prototxt 中input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }
第一个:对待识别样本图片进行数据增广的数量,一个图片会变成10个,之后输入到网络进行识别。如果不进行数据增广,可以设置成1。
第二个:图片的通道数,一般灰度图片为单通道,则值为1,如果为非灰度图3通道图片则为3。
第三个:图片的高度,单位像素。
第四个:图片的宽度,单位像素。
http://blog.csdn.net/koloumi/article/details/57916526
8.imageData层可以直接读图片的信息
layer {
name: "demo"
type: "ImageData"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
scale: 0.00390625
mean_value: 128
}
image_data_param {
source: "data/hwdb/trainall.txt"
root_folder: "data/hwdb/DstImg/"
new_height: 48
new_width: 48
is_color: false
batch_size: 256
shuffle: true
}
}
9.使用不同的求解器:
http://www.cnblogs.com/denny402/p/5074212.html
#"SGD":0.9
#迭代1000次,测试:
#1.type:"AdaDelta":比2慢:0.83
#delta:1e-6
#momentum:0.95
#base_lr:1.0
#AdaDelta是一种”鲁棒的学习率方法“,是基于梯度的优化方法(like SGD)。
#2.type:"AdaGrad":0.89:很快
#3.type:"Adam":0.88
#4.type:"Nesterov":0.9
#5.type:"RMSProp":0.9
#rms_decay:0.98
10.<21天实战caffe的课后答案>
http://blog.csdn.net/kkk584520/article/details/52748821
11.caffe-python 接口:(博文推荐)
http://blog.csdn.net/langb2014/article/category/5998589
http://blog.csdn.net/u013989576/article/details/70510863
http://blog.csdn.net/cgt19910923/article/details/52911339