修改Caffe以接受lmdb

时间:2016-03-26 11:52:08

标签: machine-learning neural-network deep-learning caffe lmdb

我正在尝试对Caffe进行一些修改以接受我的16位数据 我成功创建了一个lmdb数据集,其中填充了16位无符号,未编码的256x256图像,而不是通常的caffe 8位无符号数据,保存为“字符串”,可以使用image_convert或DIGITS创建通常的8位lmdb公用事业。
我已更改io.py函数array_to_datumdatum_to_array,以便以16位“字符串”数据创建此lmdb。 现在,如果我在caffe上使用这个lmdb(只有4个类),网络会运行但不会收敛。我强烈怀疑这不是正确读取我的数据。 问题是,io.py函数array_to_blobprotoblobproto_to_array似乎没有区分内部数据内容,我找不到我应该修改处理16位的代码。登记/> 任何人都可以给我一个暗示在哪里工作?

编辑: 在代码中乱搞,我认为如果我想直接在png上工作而不需要通过lmdb,那么可能应该创建一个新的数据层或一个新的图像数据层。但是尝试修改C ++代码对我来说并不是一项微不足道的任务,尤其是。我无法轻松跟踪代码中的数据流。我看到新层可以用python编写。您认为新的输入数据层可以很好地工作还是会降低cnn的性能?

1 个答案:

答案 0 :(得分:0)

我对转换和改编caffe / lmdb界面了解不多,但如果你不是100%肯定你正在做的事情,这似乎是一条非常冒险的道路。
例如,您在python界面中更改了io函数,但我不认为caffe在从命令行运行时使用此界面(例如,$CAFFE_ROOT/build/tools/caffe train ...)。您是否查看了io.cpp文件中的cpp io函数?

我强烈建议使用替代路径:使用hdf5二进制输入而不是lmdb 您可以将您拥有的16位图像转换为float32并将其存储在hdf5文件中,然后通过"HDF5Data"图层将它们输入到caffe。

详细了解hdf5和caffe in this thread