这篇文章提出了一种叫做activation motion compensation(AMC)的算法,类似于motion estimation的方式,运用上下帧之间的相似度来减少一些重复的计算,或者说是估计发生移动的物体的位置。

这篇文章不仅提出了软件层的算法,同时也co-design了一个能够有效运行该算法的硬件,但是这篇博客只讨论AMC算法。

说到底,该算法就是两个主要思想的结合体:1. 利用帧之间的temporal redundancy;2. 通过incremental approximation近似CNN的结果。即,AMC捕捉到input stream中的motion并且把它施加在保存好的CNN的activations中,来近似得到物体新的位置。

具体的实现思想非常简单,如下图所示。将CNN拆分成前后两个部分:prefix和suffix。挑选出一些key frames完整的经过CNN得到输出和predictions。随后的一些帧被定义为predicted frames,这些帧都不经过完整的CNN网络,通过使用key frame经过prefix得到的activations以及motion estimation得到的运动信息,整合出估计的activations(代替predicted frames经过prefix得到的activations)放进CNN的suffix得到detection的结果。

EVA2: Exploiting Temporal Redundancy in Live Computer Vision

在获得了motion的信息之后,我们需要将物体进行平移。CNN的连续处理两张照片得到的结果相当于是先将物体平移然后卷积,activate得到结果;那么现在我们可以把顺序反过来,先得到第一张图片的activation的结果,然后讲motion的平移向量放到activation上得到近似的结果。形象的原理如下图所示:

EVA2: Exploiting Temporal Redundancy in Live Computer Vision

至于motion estimation这篇文章提出了一个新颖的算法叫做:receptive field block motion estimation(RFBMM)。RFBMM用来感知整个感受野的motion信息,为了避免冗余的计算,该算法先将每张image划分成EVA2: Exploiting Temporal Redundancy in Live Computer Vision个小方格,称为tile,其中s就是卷积中的stride。然后计算感受野之间的差异的时候,就相当于是计算感受野当中所有这些小方格的大小(单纯地忽略padding中的pixel和不能整除stride的kernel size的部分pixel)。这个时候就有很多的冗余可以被重复利用,如下图所示:

EVA2: Exploiting Temporal Redundancy in Live Computer Vision

其中(0, 0),(0, 1),(1, 0),(1, 1)这些是第一个感受野的差异值,那么(1, 0),(1, 1)这两个tile在计算第二个感受野的时候也可以被用到。

剩下最重要的就是如何选择key frame,最naive的方式就每个多少帧选择一张image作为key frame,但是可以使用自适应的手段,也就是当图片出现了巨大的抖动的时候就更换一张key frame,如何判断发生了巨大的改变呢?

文章定义了两个指标:

1. pixel compensation error:当所有的block累计出来的error超过一定的限度的时候,选择一张新的key frame;

2. total motion magnitude:当图片中的motion非常的大的时候,通常近似会不准,所以选择一张新的key frame。

 

 

 

 

 

相关文章: