Machine learning 修改Caffe以接受lmdb内的16位数据

Machine learning 修改Caffe以接受lmdb内的16位数据,machine-learning,neural-network,deep-learning,caffe,lmdb,Machine Learning,Neural Network,Deep Learning,Caffe,Lmdb,我正在尝试对Caffe进行一些修改,以便接受我的16位数据。 我成功地创建了一个lmdb数据集,其中填充了16位无符号、未编码的256x256图像,而不是通常的caffe 8位无符号数据,保存为“字符串”,就像通常的8位lmdb一样,可以使用image\u convert或DIGITS实用程序创建。 我已将io.py函数array\u更改为\u datum并将datum\u更改为\u array,以便在16位“字符串”数据上创建此lmdb。 现在,如果我在caffe上使用这个lmdb(只有4个类

我正在尝试对Caffe进行一些修改,以便接受我的16位数据。
我成功地创建了一个lmdb数据集,其中填充了16位无符号、未编码的256x256图像,而不是通常的caffe 8位无符号数据,保存为“字符串”,就像通常的8位lmdb一样,可以使用
image\u convert
或DIGITS实用程序创建。
我已将
io.py
函数
array\u更改为\u datum
并将
datum\u更改为\u array
,以便在16位“字符串”数据上创建此lmdb。 现在,如果我在caffe上使用这个lmdb(只有4个类),网络运行但不收敛。我强烈怀疑我没有正确读取数据。 问题是,
io.py
函数
array_to_blobproto
blobproto_to_array
似乎对内部数据内容没有任何区别,我找不到应该修改以处理16位的代码。
谁能给我一个提示,在哪里工作

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

我对转换和调整caffe/lmdb接口知之甚少,但如果您对自己正在做的事情没有100%的把握,那么这似乎是一条非常危险的道路。
例如,您更改了python接口中的io函数,但我认为caffe在从命令行运行时没有使用此接口(例如,
$caffe\u ROOT/build/tools/caffe train…
)。您查看过文件中的cpp io函数吗

我强烈建议另一种方法:使用hdf5二进制输入而不是lmdb。
您可以将16位图像转换为float32并存储在hdf5文件中,然后通过
“HDF5Data”
层将其输入caffe

了解更多有关hdf5和caffe的信息