本文用到的数据集:http://download.csdn.net/detail/bleakie/9685017
1.选取图片建立训练和测试,这里用的是车轮(正样本)和地面(负样本)
输入命令“dir/s/on/b>d:/train.txt”,则会在D盘生成一个名为train的文本文件,里面存放着“批量名称”中全部图像的路径。
前面的绝对路径我是通过文本编辑器里:编辑-替换-全部替换 如:
(注意!注意!注意!标签必须从0开始 ①索引“C:\Users\LJJ\Desktop\测试图\caffe实验\批量名称\”替换成空。
相当于把这些路径去掉,只保留文件名;
②索引“jpg”替换成“jpg 1”。这里1是label,指代了图像的类别。)消除;
这里有同学可能图片的命名可能是乱序的,可以采用全选+重命名(将会得到所有同名字的图除了()里的标注如:car(1).jpg),为了消除括号(),采用:解决方案是在LossKuoHao.bat文件中用双引号将含空格的car.jpg括起来,即:
rename “src.jpg” dst.jpg
这样就得到了train.txt,test.txt,val.txt;其中test里面把标签去掉
2.将训练集与测试集转成leveldb格式
(1)将任意大小的图像resize成256*256(这里我用的opencv偷懒)
(2)生成convert_imageset.exe,在windows里打开Caffe.sln,生成convert_imageset
(3)生成lmdb格式的文件
创建 comput_image_leveldb.txt,写入如下程序:
SET GLOG_logtostderr=1
Build\x64\Debug\convert_imageset.exe examples/my_car_wheel/NewData/ examples/my_car_wheel/NewData/train.txt examples/my_car_wheel/NewData/mytrainlmdb 0
pause
第二行输入的是4个参数,分别表示:
Build\x64\Debug\convert_imageset.exe :convert_imageset.exe 的路径
examples/my_car_wheel/NewData/ : 图像文件夹路径,注意最后要加 ‘/’
examples/my_car_wheel/NewData/train.txt : 图像名及对应标签txt文件路径
examples/my_car_wheel/NewData/mytrainlmdb : 转化后lmdb数据文件夹名字
如果生成lmdb有错误,可以试着生成leveldb
SET GLOG_logtostderr=1
E:\DeepLearning\caffe-windows\Build\x64\Debug\convert_imageset.exe --backend=leveldb --resize_width=256 --resize_height=256 E:\DeepLearning\caffe-windows\examples\ABCD\ E:\DeepLearning\caffe-windows\examples\ABCD\train.txt E:\DeepLearning\caffe-windows\examples\ABCD\trainldb
pause
(4)lmdb格式的:把 comput_image_lmdb.txt 文件改名为 comput_image_leveldb.bat,放到caffe根目录双击运行,会生成mytrainleveldb文件夹,该文件夹中有两个文件(测试集方法一样):
leveldb格式的生成:
3.计算训练样本均值
(1)编译生成compute_image_mean.exe;
(2)lmdb格式:创建comput_image_mean.txt,添加内容:
SET GLOG_logtostderr=1
D:\caffe\caffe-windows\Build\x64\Debug\compute_image_mean.exe D:/caffe/caffe-windows/examples/my_car_wheel/NewData/mytrainldb D:/caffe/caffe-windows/examples/my_car_wheel/NewData/myimg_mean.binaryproto
pause
leveldb格式的:
SET GLOG_logtostderr=1
E:\DeepLearning\caffe-windows\Build\x64\Debug\compute_image_mean.exe --backend leveldb E:\DeepLearning\caffe-windows\examples\ABCD\trainldb E:\DeepLearning\caffe-windows\examples\ABCD\train_mean.binaryproto
pause
参数解释参照楼上;
4.网络定义及设置
以 imagenet网络为例,网络定义在 caffe-windows\models\bvlc_reference_caffenet
中,用到train_val.prototxt 和 solver.prototxt 两个文件。
4.1 设置train_val.prototxt 文件
更改路径、backend的格式、根据需要修改batch_size
修改分类的样本类别数(全部修改)
4.2 设置 solver.prototxt 文件
4.3 网络训练
(backend记得更改:LMDB或LEVELDB格式)
创建 train_myimg.txt,随后改成bat,运行
SET GLOG_logtostderr=1
D:\caffe\caffe-windows\Build\x64\Debug\caffe.exe train --solver=D:\caffe\caffe-windows\examples\my_car_wheel\NewData\bvlc_reference_caffenet\solver.prototxt
pause
训练结果:
如果你编译好了Caffe,那么在CAFFE_ROOT下运行如下命令(里面的路径是在根目录下,可以根据需要修改):
CPU
SET GLOG_logtostderr=1
D:\caffe\caffe-windows-master\bin\caffe.exe test -model=D:\caffe\caffe-windows-master\examples2\NewData\bvlc_reference_caffenet\train_val.prototxt -weights=D:\caffe\caffe-windows-master\examples2\NewData\result_iter_100.caffemodel
pause