【论文复现】ECO_Efficient Convolutional Network for Online Video Understandin

论文链接:https://arxiv.org/abs/1804.09066

代码链接:https://github.com/mzolfaghari/ECO-pytorch

该篇论文是百度paddlepaddle线上训练营推荐的论文,适合有一定基础的初学者阅读,有感兴趣的可以去训练营查看所有推荐的9篇顶会论文~

内容梗概: 作者提出了一种新的视频分类模型ECO,创新在于将 2D卷积(提取图像特征)和3D卷积(提取时间上的特征)相结合。

具体的网络结构:作者提出了两种模型ECO Lite和ECO Full。ECO Lite是结构上较为简单的一种模型,它比ECO Full少了一个2D的卷积处理。二者的区别是:ECO Lite运行速度快,精确度较低;ECO Full运行速度较慢,但是精确度较高(因为它设计的2DNets能更好地得到图片特征,同时又可以和时序特征相融合得到最终的判断结果)

两个模型的结构见下图:

1)首先是数据处理。将一个视频分成N段,从每段中随机地取一帧图片,这样一个video对应N帧图片,将其作为输入放入2D卷积层中。

2)2DNet结构。使用了BN-Inception结构中前面的一部分(inception-3a, inception-3b, inception-3c)

具体结构图可以参考下图(原图链接:https://blog.csdn.net/stesha_chen/article/details/81662405

 我们再对照论文中给出的表格看结构图会更加清晰:

 我们可以看到2DNet在表格中的结构完全对应上面给出的BN-inception结构图。只是最后的inception-3c选择了中间输出96个通道分支的第一个卷积作为整个2DNet的输出。(针对一些这样的细节想研究更明白的话可以看官方github中给出的网络结构文件:https://github.com/mzolfaghari/ECO-pytorch/blob/master/tf_model_zoo/ECOfull/ECOfull.yaml

3)3DNet结构。在将2DNet输出作为3DNet的输入前,要对2DNet的输出做处理。具体处理见下图。

简单解释一下上面这个图:

左边的S1, S2, ..., SN指的是将一个video划分成N段,每段随机地取一帧图像送入2DNet中(weight shared指的是共用一个2DNet网络)。从2DNet得到的输出是每一帧都对应K个通道、size=28*28的特征图。在这里重组这些特征图,将对应通道的图片放在一组中。比如我将每帧第一个通道的图片放在一组,将每帧第二个通道的图片放在第二组,依此类推,每一组中有N张28*28大小的图片。这样我们得到的数据shape就变成了[K, N, 28, 28](如上图中的蓝色小字所示),这里对应代码的处理就是transpose将维度变换一下即可。我们这样处理主要是为了通过3DNet得到时序关系(因为是由同一个通道不同时间帧组成的)。接下来只要处理成3DNet模型可以接受的输入shape即可,比如我用paddlepaddle的话3DNet模型需要5个维度的输入,那么我需要对数据做np.newaxis添加一个数值为1的维度即可。

4)如果是ECO Lite的话,接下来对3DNet的输出做一个Pool3D+reshape就可以得到一维的张量,输入fc层,得到的fc结果做一个softmax就可以得到视频分类了。

如果是ECO Full的话,需要将之前2DNet没做的BN-Inception余下部分接着做完,最后也像上面提到的transpose改变维度的顺序,做Pool3D+reshape后得到一个一维的输出。将2DNets的输出和3DNet的输出结合(Concatenate),作为一个整体输入fc,再做sofmax进行分类。

 

注意事项:

①场景:在用paddlepaddle进行论文复现的时候,有时会在命令行打印出张量结构,因为篇幅过大有时不知道问题出在哪里

原因:其实是因为在复现过程中有时候会将张量转变为numpy,作为input输入模型就会出现这样的问题。

解决方法:把numpy再转为张量即可(fluid.dygraph.to_variable(...))

②场景:在将2DNet输出数据输入到3DNet之前,需要做一些处理,例如transpose。发现transpose后数据维度并没有变化

原因:调用该函数不会改变张量本身的维度,必须重新赋给新的对象

解决方法:inception_3c_c3d = fluid.layers.transpose(inception_3c_c3d, [1, 0, 2, 3])

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值