caffe-windows训练自己的数据(1)

来源:互联网 发布:mac 你的安全设置 编辑:程序博客网 时间:2024/05/16 05:46

收集训练数据和测试数据各100张和20张,其中训练数据中猫和狗的的图片各50张。train.txt和val.txt的制作网上教程有很多问题也不大,不重复介绍。
生成将图片数据转换为leveldb
shell文件用不太来,sleep命令没用每次执行之后不能暂停,导致错误无法查看,最后看到有bat版本的,果断使用bat。

<!--在转换数据时总是出现*.exe已停止工作,查了原因,很可能是空指针(指针没有初始化)和数组溢出。-->

注意train.txt和val.txt中的路径要写对,之前试了N次都不成功,生成的log都是0KB,很可能是路径错了。

set EXAMPLE=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcatset DATA=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcatset TOOLS=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/Build/x64/Releaseset TRAIN_DATA_ROOT=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/train/  set VAL_DATA_ROOT=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/val/  set backend=leveldb  set resize_width=256  set resize_height=256  set GLOG_logtostderr=1  echo "Creating train leveldb..."  "%TOOLS%/convert_imageset.exe" -backend=%backend% -resize_width=%resize_width% -resize_height=%resize_height% %TRAIN_DATA_ROOT% %DATA%/train.txt %EXAMPLE%/dogcat_train_leveldb  echo "Creating test leveldb..."  "%TOOLS%/convert_imageset.exe" -backend=%backend% -resize_width=%resize_width% -resize_height=%resize_height% %VAL_DATA_ROOT% %DATA%/val.txt %EXAMPLE%/dogcat_val_leveldb  echo "Done."  pause

运行结果:

D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set EXAMPLE=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcatD:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set DATA=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcatD:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set TOOLS=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/Build/x64/ReleaseD:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set TRAIN_DATA_ROOT=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/train/D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set VAL_DATA_ROOT=D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/val/D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set backend=leveldbD:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set resize_width=256D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set resize_height=256D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set GLOG_logtostderr=1D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>echo "Creating train leveldb...""Creating train leveldb..."D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>"D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/Build/x64/Release/convert_imageset.exe" -backend=leveldb   -resize_width=256   -resize_height=256   D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/train/   D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/train.txt D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcat/dogcat_train_leveldbI1127 22:09:02.013578 19888 convert_imageset.cpp:86] A total of 100 images.I1127 22:09:02.026579 19888 db_leveldb.cpp:18] Opened leveldb D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcat/dogcat_train_leveldbI1127 22:09:05.144757 19888 convert_imageset.cpp:150] Processed 100 files.D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>echo "Creating test leveldb...""Creating test leveldb..."D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>"D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/Build/x64/Release/convert_imageset.exe" -backend=leveldb   -resize_width=256   -resize_height=256   D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/val/   D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/data/dogcat/val.txt D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcat/dogcat_val_leveldbI1127 22:09:05.269764 20388 convert_imageset.cpp:86] A total of 20 images.I1127 22:09:05.281765 20388 db_leveldb.cpp:18] Opened leveldb D:/360Downloads/NVIDIA/CaffeDev/caffe-windows/examples/dogcat/dogcat_val_leveldbI1127 22:09:05.440774 20388 convert_imageset.cpp:150] Processed 20 files.D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>echo "Done.""Done."D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>pause请按任意键继续. . .

成功生成的leveldb文件夹中应包含以下内容,如果log文件大小只有0KB则说明数据没有转换成功
levledb文件中的内容

计算均值文件时出现如下错误
问题1 caffe-parallel has a bug: Check failed: proto.SerializeToOstream(&output)

问题描述:在运行训练网络一段时间出现

I1127 22:18:49.948206 12116 compute_image_mean.cpp:106] Write to **D:D:**\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat\meanlevel.binaryprotoF1127 22:18:49.994209 12116 io.cpp:78] Check failed: proto.SerializeToOstream(&output)*** Check failure stack trace: ***

解决:一般是没有相应的目录或者权限对这个目录进行写操作而引起的,我这里是meanlevel.binaryproto的路径写错了,从log信息中可以看出写了D:D:,改为正确的目录就好。
执行的bat文件

set GLOG_logtostderr=1D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\Build\x64\Debug\compute_image_mean.exe --backend=leveldb D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\examples\dogcat\dogcat_train_leveldb D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat\meanlevel.binaryprotopause

处理后的结果信息

D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>set GLOG_logtostderr=1D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\Build\x64\Debug\compute_image_mean.exe --backend=leveldb D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\examples\dogcat\dogcat_train_leveldb D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat\meanlevel.binaryprotoI1127 22:31:39.641230 17616 db_leveldb.cpp:18] Opened leveldb D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\examples\dogcat\dogcat_train_leveldbI1127 22:31:39.651231 17616 compute_image_mean.cpp:68] Starting IterationI1127 22:31:42.536396 17616 compute_image_mean.cpp:99] Processed 100 files.I1127 22:31:42.562397 17616 compute_image_mean.cpp:106] Write to D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat\meanlevel.binaryprotoI1127 22:31:42.619400 17616 compute_image_mean.cpp:112] Number of channels: 3I1127 22:31:42.624400 17616 compute_image_mean.cpp:117] mean_value channel [0]:106.604I1127 22:31:42.641402 17616 compute_image_mean.cpp:117] mean_value channel [1]:123.369I1127 22:31:42.647403 17616 compute_image_mean.cpp:117] mean_value channel [2]:136.302D:\360Downloads\NVIDIA\CaffeDev\caffe-windows\data\dogcat>pause请按任意键继续. . .

在dogcat目录中出现相应的均值文件,注意这里如果大小为1KB说明均值文件没有成功生成,很有可能是leveldb数据没有转成功
均值文件

此次训练当迭代20次时train loss=0.145274,迭代500次后train loss=0.671998,不知道为什么loss反而会变大,test accuracy=0.55,??
还有一个问题train_val.prototxt中的train和test阶段的均值文件是使用同一个吗??
下篇博客再想想怎么回事。

0 0