【发布时间】:2016-09-23 10:01:26
【问题描述】:
我想复制Two-Stream Convolutional Networks for Action Recognition in Videos。
但在为 caffe 提供多帧输入时,感觉就像我碰壁了。
由于单帧网络提供 50% 的准确率。 但是当我通过 LMDB 输入 30*227*227 时。 20(10 帧,每帧 3 个通道)。 accuracy barely reaches 4%。
这让我相信我提供给 caffe 的输入不是所需的格式或模型是错误的(不太可能)。
我想输入 3 x 10 x 227 x 227 的样式。 但是 caffe LMDB 只有几个变量作为输入。即 高度、宽度、通道、数据、标签。
这让我只能在 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))
【问题讨论】:
-
改用 hdf5 输入
-
也试过了.. 也附上结果
-
查看您的 HDF5 结果:输入大小为 50x48x58x58。和这个问题有关系吗?准确率从 ~3% 开始,但随后稳步上升......
-
@Shai 不是真的这是另一个实验,会用 HDF5 再试一次......但我刚刚再次浏览了Two stream paper,发现他们实际上给出了 w×h×2L 的输入L 是帧数。但通常 caffe 接受 channelswh 的输入。而且我不确定他们是如何堆叠 2l 的,例如所有 Rs,然后是 B 和 G。 {R1,R2,... B1,B2...G1,G2....} 或 {R1, B1,G1,R1,G2,B2 .....} ...有什么想法吗?
-
恐怕我对这个工作不熟悉,所以无法真正回答。这取决于您希望处理数据的方式
标签: python machine-learning classification deep-learning caffe