windows caffe 跑自己的数据遇到的问题
2016-03-28 13:55
211 查看
花了一个多星期准备的数据终于要在caffe上跑,选择了imagenet,用的工具为convert_imageset.exe(要自己先编译),搭环境太复杂太辛苦就不说了。
1.
准备数据,在你的caffe文件夹下新建文件目录,在目录下新建两个文件train和val
train和val里面分别放准备好的jpg训练集和验证集,还有分别有train.txt和val.txt
可以写批处理文件将train和val里面的图片数据读到这两个txt文件里面,同时加上标签,如果是两类的,可以在一类后标上1,一类标上2。
2.
编译转换工具convert_imageset.exe,写批处理文件
我这里是
SET GLOG_logtostderr=1
bin\convert_image.exe data/train/ data/train/train.txt data/trainlmdb 0
pause
然后双击,数据就转好了
3
计算均值
编译计算图像均值的工具compute_image_mean.cpp
再写一个批处理文件
SET GLOG_logtostderr=1
bin\compute_image_mean.exe data/trainlmdb data/image_mean.binaryproto
pause
4.
imagenet_solver.prototxt,imagenet_train.prototxt和imagenet_val.prototxt文件修改
首先是imagenet_solver,prototxt
改train_net和test_net的路径
然后imagenet_train.prototxt里面source改为数据的路径,mean_file改为图像均值路径
imagenet_val.prototxt也一样。
5.
训练
前提是已经编译好caffe.exe
写一个批处理文件
.\bin\caffe.exe train --solver=data/image_solver.prototxt --gpu=all
pause
前提是imagenet_solver.prototxt,imagenet_train.prototxt和imagenet_val.prototxt都已经修改好。
6.
遇到的问题
failed to open leveldb 问题
准备好数据之后就是转成leveldb或者lmdb,在这里我遇到了一个问题,当你出现failed to open leveldb ...的时候,有可能是你想用leveldb,可是你转换的数据却是lmdb,这个时候应该在网络文件imagenet_train.prototxt里面的数据结构里改成backend:lmdb,如果没有的话就加上这一行。那么实际上你的网络用的是你默认转的lmdb格式。
数据转换后大小1TB或者提示磁盘不足的问题
数据转好了,却遇到另一个头疼的问题,就是数据占用了1TB,试了其它的不同大小的数据依然是1TB,而且是标准的1TB,所以怀疑在程序里面设定了开辟1TB的磁盘来存储,因为自己用的服务器有1.9TB所以开辟第一次的时候成功了,第二次说磁盘不足,所以问题还是在程序里面。在github上有人也出现了这样的情况,但是他们很多是在convert_mnist.cpp文件里出现的,
CHECK_EQ(mdb_env_set_mapsize(mdb_env,1099511627776),MDB_SUCCESS) //1TB
改成
CHECK_EQ(mdb_env_set_mapsize(mdb_env,1073741824),MDB_SUCCESS) //1GB
但是我在convert_imageset.cpp里面没有找到相关代码,最后发现是在db_lmdb.cpp里面namespace caffe{
namespace db{
const size_t LMDB_MAP_SIZE = 1099511627776; 改成
const size_t LMDB_MAP_SIZE = 1073741824; //1GB
}
}
然后编译
好了,执行批处理文件,转出来的数据就是1GB啦!
转载:http://blog.sina.com.cn/s/blog_721a75e50102w5kq.html
1.
准备数据,在你的caffe文件夹下新建文件目录,在目录下新建两个文件train和val
train和val里面分别放准备好的jpg训练集和验证集,还有分别有train.txt和val.txt
可以写批处理文件将train和val里面的图片数据读到这两个txt文件里面,同时加上标签,如果是两类的,可以在一类后标上1,一类标上2。
2.
编译转换工具convert_imageset.exe,写批处理文件
我这里是
SET GLOG_logtostderr=1
bin\convert_image.exe data/train/ data/train/train.txt data/trainlmdb 0
pause
然后双击,数据就转好了
3
计算均值
编译计算图像均值的工具compute_image_mean.cpp
再写一个批处理文件
SET GLOG_logtostderr=1
bin\compute_image_mean.exe data/trainlmdb data/image_mean.binaryproto
pause
4.
imagenet_solver.prototxt,imagenet_train.prototxt和imagenet_val.prototxt文件修改
首先是imagenet_solver,prototxt
改train_net和test_net的路径
然后imagenet_train.prototxt里面source改为数据的路径,mean_file改为图像均值路径
imagenet_val.prototxt也一样。
5.
训练
前提是已经编译好caffe.exe
写一个批处理文件
.\bin\caffe.exe train --solver=data/image_solver.prototxt --gpu=all
pause
前提是imagenet_solver.prototxt,imagenet_train.prototxt和imagenet_val.prototxt都已经修改好。
6.
遇到的问题
failed to open leveldb 问题
准备好数据之后就是转成leveldb或者lmdb,在这里我遇到了一个问题,当你出现failed to open leveldb ...的时候,有可能是你想用leveldb,可是你转换的数据却是lmdb,这个时候应该在网络文件imagenet_train.prototxt里面的数据结构里改成backend:lmdb,如果没有的话就加上这一行。那么实际上你的网络用的是你默认转的lmdb格式。
数据转换后大小1TB或者提示磁盘不足的问题
数据转好了,却遇到另一个头疼的问题,就是数据占用了1TB,试了其它的不同大小的数据依然是1TB,而且是标准的1TB,所以怀疑在程序里面设定了开辟1TB的磁盘来存储,因为自己用的服务器有1.9TB所以开辟第一次的时候成功了,第二次说磁盘不足,所以问题还是在程序里面。在github上有人也出现了这样的情况,但是他们很多是在convert_mnist.cpp文件里出现的,
CHECK_EQ(mdb_env_set_mapsize(mdb_env,1099511627776),MDB_SUCCESS) //1TB
改成
CHECK_EQ(mdb_env_set_mapsize(mdb_env,1073741824),MDB_SUCCESS) //1GB
但是我在convert_imageset.cpp里面没有找到相关代码,最后发现是在db_lmdb.cpp里面namespace caffe{
namespace db{
const size_t LMDB_MAP_SIZE = 1099511627776; 改成
const size_t LMDB_MAP_SIZE = 1073741824; //1GB
}
}
然后编译
好了,执行批处理文件,转出来的数据就是1GB啦!
转载:http://blog.sina.com.cn/s/blog_721a75e50102w5kq.html
相关文章推荐
- extjs入门
- jquery inArray的使用 减少了js的for循环
- jquery bind event, use on. $(document).on("click","#a",function(){alert(1)}) [#document]
- 简单易用的 nodejs 服务器imitator
- USACO-Section 3.3 Shopping Offers (DP)
- 提升HTML5的性能体验系列之一 避免切页白屏
- Extjs4.0版控件属性配置详细讲解。
- jsp中的锚点效果
- js搞定两个网页之间值的传递
- Caffe代码导读(1):Protobuf例子
- 在Ubuntu上安装NPM(Node Package Manger)
- 通过PPA安装Node.js
- Bootstrap中的两个容器class
- 使用Volley提交Json数据post
- DOM与jquery的区分(一:元素节点与属性)
- bootstrapValidator如何重新初始化
- 各种caffe版本的网址及配置资料
- 小试牛刀——JS闭包
- css中的选择器
- webvr技术之three.js