Representation Flow for Action Recognition

这篇是发表在CVPR2019的一篇论文。论文地址 代码地址pytorch 实现

      # Flow-of-flow(可以看到是用3d卷积实现的)
        self.flow_cmp2 = nn.Conv3d(64, 32, kernel_size=1, stride=1, padding=0, bias=False)
        self.flow_layer2 = FlowLayer(channels=32, n_iter=n_iter, params=learnable)
        self.flow_conv2 = nn.Conv3d(64, 128*block.expansion, kernel_size=(1,3,3), stride=1, padding=(0,1,1), bias=False)
        self.bnf = nn.BatchNorm3d(128*block.expansion)

motivation:
1.从传统方法计算光流到用深度学习去学习就算光流,费时耗力,而且一般都是从image开始的,经过一些处理得到了光流,然后用网络再提取光流的特征,这样很繁琐,因此本文提取了不用局限于在image层,在卷积特征层上也可以提取光流(当然也用到了光流算法TV-L1),学习任何表示层的运动信息,而且是完全可微的(fully-differentiable),对于迭代光流的更新的参数是可以和其他CNN模型参数以端到端的方式一起学习。

2.Applying the flow algorithm directly on two flow images means that we are tracking pixels/locations showing similar motion in two consecutive frames.In practice,this typically leads to a worse performance due to inconsistent opticla flow results and non-rigid motion.But our representation flow layer is ‘learn’ from the data,and is able to suppress such inconsistency and better abstract/represent motion by having multiple regular convolutional layers between the flow layers.

In this paper,we propose a CNN layer inspired by optical flow algorithms to learn motion representations for action recognition without having to compute optical flow.

Our contribution is the introduction of a new differentiable CNN layer that unrolls the iterations of the TV-L1 optical flow method.
在这里插入图片描述

文章做了好多实验,细致清晰

在哪一层计算光流呢?(where to compute flow?)
We apply the layer after the 3rd residual block.
在这里插入图片描述
We find that computing the flow on the input provides poor performance ,similar to the performance of the flow-only networks,but there is a significant jump after even 1 layer,suggesting that computing the flow of a feature is beneficial,capturing both the appearance and motion information.
学习哪些参数呢?kernels used to compute image gradients,the kernels for the divergence computation and even …
进行多少次迭代呢?10 or 20 iterations
怎么融合呢?
当直接从RGB 输入计算光流的时候,融合RGB信息是非常重要的,然而当从特征层上计算光流融合是没有多大的意义的,所以本文不融合,用第一种方式。
在这里插入图片描述
同时还做了其他的式样,如:使用了3D CNN从特征层上计算光流,与其他的运动表示做了比较(TVNet,ActionFlowNet),计算了运行时间

关于光流方法的一些概念和方法可以我参考以前的博客,这里就不在赘述(例如基于两张图相应的两点亮度不变假设,两帧之间是小运动,基于当前的流估计捕获两帧之间的motion residual,对偶向量场,多次优化迭代,多个scales,warp等),而我们就是受光流算法的启发,通过扩展普通的算法设计了一个完全可微,可学习的卷积表示流层(仅仅应用在低分辨率的卷积CNN feature maps上,而不是RGB输入上,以端到端的方式训练)。亮度不变性假设也可以相似地应用到CNN feature maps上,我们捕获feature value consistency instead of capturing pixel brightness.(空间不变性)。具体算法如下:
在这里插入图片描述
多次迭代可以描述为共享参数的序列卷积层(每个蓝色的box),flow of flow: by stacking multiple representation flow layers.如下:
在这里插入图片描述
FcF: (效果最好)
在这里插入图片描述
为了减少计算量,我们用一个卷积层降低特征的通道数C->C’->2C’(x and y flows)->C(但降低后的通道数还是高于传统的光流方法,仅仅应用于单通道,也就是灰度图像);为了数值稳定(numerical stability),我们normallize this feature map to be in [0,255],we found this normalization step important.

网络使用的是ResNet-34,输入大小是16x112x112(这里的16代表是16帧)

总结:实验证明迭代优化和可学习的参数是重要的。我们的模型在速度和精度上都超好。提出了概念flow of flow来计算长序的运动表示。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值