如何将多维数据输入到caffe lmdb?

时间:2016-05-25 16:48:03

标签: python machine-learning classification deep-learning caffe

我想重现Two-Stream Convolutional Networks for Action Recognition in Videos

但感觉就像在向咖啡馆提供多帧输入时,我碰壁了。

单帧网络提供50%的准确度。 但是当我通过LMDB输入30 * 227 * 227时。 20(每帧10个,有3个通道)。 accuracy barely reaches 4%

这让我相信我给caffe的输入不是所需的格式或模型是错误的(不太可能)。

我想以3 x 10 x 227 x 227的样式进行输入。 但是caffe LMDB只有一些变量作为输入。亦即 高度,widhth,信道,数据,标签

这让我只能在3个维度上写入数据,然后不能进行第4帧维度。

有没有人知道这方面的工作?

或者您知道在哪里可以找到任何使用多帧数据进行分类的caffe示例。

据我所知,Caffe使用4D blob处理数据,因此即使我开始工作也无法处理批次。因此,它一次只能使用一个样本。这也取决于滤波器的设计方式以及它们是否可以处理帧的相关性,因为它们位于第4维,通常用作批处理。

有关于此的任何想法吗?

P.s我也试过HDF5 similar results

    datum = caffe.proto.caffe_pb2.Datum()
    datum.channels =3 #3 for a single image/ 30 for stacking them which I tried and get accuracy of 5%
    datum.height = 227
    datum.width = 227
    datum.data = X[i].tostring()  # or .tostring() if numpy < 1.9
    datum.label = classlabel
    str_id = '{:10}'.format(i+(counter))

1 个答案:

答案 0 :(得分:0)

根据上述文章,RGB图像是空间流的输入和时间流的堆叠光流帧。因此,您应首先为时间流提取光流帧。光流框架的每个点对应于具有可以看到的x和y分量的矢量 作为图像渠道。通过堆叠L光学帧,您将获得具有2 * L通道的图像,并且您对caffe的输入将是标准的batch_sizex2LxHxW。另请查看此repocode以获取更多帮助。