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, 除非整個視頻各幀中完全相同的區域較多,否則該方法所帶來的實際效益不會太大。

 

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