DeepCache: Principled Cache for Mobile Deep Vision (MobiCom2018)

 

URL: https://dl.acm.org/doi/abs/10.1145/3241539.3241563

 

TL;DR

DeepCache提出一种CNN在视频处理时中间feature region重用的方法。将输入帧内容作为缓存键keys,并将推理结果用作缓存value,来在移动视频上执行CNN时缓存结果,达到减少计算资源消耗的目的。

该方法主要有以下三个主要贡献:

1)提出一种在移动视频上执行CNN原则性缓存的方法DeepCache。DeepCache利用经过验证的视频启发式方法在输入的移动视频中利用时间局部性在input上直接搜索可缓存区域,然后在CNN上逐层传播可缓存区域。

2)我们在商品引擎中实现DeepCache。 该方法可直接运行未经修改的CNN模型,即插即用,并可立即在现成的Android设备上进行部署。

3)在两个大型的实际数据集上测试多个经典CNN模型,结果显示deepcache可以有效减少inference时间以及资源损耗。

 

Method

DeepCache的核心idea有两点: 1)它利用输入视频的内部结构发现可重复使用的图像区域。2)通过利用CNN的内部结构在CNN内传播发现的可重用区域。

如图1所示,Deepcache将输入视频帧作为key,将各层中feature map的可重用区域作为values。

文章提出了两种机制来管理缓存:

1)在引擎的视频帧输入处,DeepCache执行缓存keys查找:它将每个视频帧划分为细粒度区域,并在(缓存的)最近输入帧中搜索相似区域。 它通过运行其区域匹配器来实现。 受视频压缩技术的启发,匹配器以视频运动启发法指导的特定模式搜索相邻区域。 DeepCache会不断合并相邻的发现区域,以解决缓存侵蚀问题,即降低更深层的可重用性。

2)在CNN实际执行过程中,Deepcache将输入图像中的匹配区域映射到各层feature map的可重用区域。它用缓存的可重用feature map区域来代替CNN计算。

基于以上两种机制,DeepCache只需要在每个视频帧的输入位置运行一次区域匹配器,然后在CNN所有的层加载缓存的可重用feature map区域.

作者只匹配input frame而不是feature map,给出的理由是:人们对图像内容的相似性具有可靠的启发式方法(这使DeepCache可以评估缓存键的相似性),但他们仍然缺乏评估不同尺寸的CNN内部特征图的相似性的知识。通过始终将要素映射视为缓存值而不是键,DeepCache避开了对它们的高成本,低回报搜索,同时仍收获了巨大的缓存优势。

另外,一个有意思的测试结果,作者给出了CNN中常用层的耗时对比,证明了convolution层对网络总耗时起到了主导作用。

 

Experiments

 

Thoughts

一种新颖的feature map缓存方法,直接在input frame中进行相似性匹配,然后重用CNN各层的计算结果。该方法的加速效果得益于直接进行input frame的匹配,但是也受限于input frame, 除非整个视频各帧中完全相同的区域较多,否则该方法所带来的实际效益不会太大。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章