【論文閱讀筆記】Looking Fast and Slow: Memory-Guided Mobile Video Object Detection

未經作者允許,本文禁止轉載

(一)論文地址:

https://arxiv.org/pdf/1903.10172.pdf

(二)核心思想:

本文討論了,在計算機視覺系統中使用記憶模型是否可以提高視頻流中目標檢測的準確性,以及是否可以減少計算時間;

作者通過將傳統的特徵提取器(Slow Network),與只需要識別場景主旨的輕量級特徵提取器(Fast Network)交叉使用,證明了在存在時間記憶模型的情況下,如何實現計算量最少的精確檢測,並在手機等移動設備上實現了實時檢測;

此外,作者還證明記憶模型包含足夠的上下文信息,可以用來部署強化學習演算法來學習自適應推論策略;在這裏插入圖片描述

(三)主要貢獻:

這篇文章的主要貢獻有:

• 提出了一個內存引導的交叉框架,其中多個特徵提取器在不同的幀上運行,以減少冗餘計算,它們的輸出使用一個公共內存模塊進行融合;

• 引入了一個自適應交叉策略,其中執行特徵提取器的順序是使用 Q-learning(強化學習)得到的,這導致了一個非常好的速度/精度權衡;

• 在移動設備上演示了迄今爲止已知的最快的、高精度的視頻檢測模型;

(四)Interleaved Models(交叉模型):

在這裏插入圖片描述

假設輸入視頻爲 V={I0,I1,,In}V=\lbrace I_0,I_1,…,I_n\rbrace,並且當檢測到第 kk 幀時,只有 {I0,I1,,Ik}\lbrace I_0,I_1,…,I_k\rbrace 是已知的;

假設 mm 個特徵提取器爲 fi:RIRFi=0mf_i:R^I\rightarrow R^F\mid_{i=0}^m,代表了從圖像空間到各自的特徵空間 RFR^F 的映射;

假設記憶模型爲 m:RF×RSRR×RSm:R^F×R^S\rightarrow R^R×R^S,代表了從 ff 和內部狀態表示到公共的、細化的特徵空間的映射,同時輸出更新的狀態;

然後使用類似 SSD 風格的檢測器,假設爲 d:RRRDd:R^R\rightarrow R^D,輸出最後的檢測結果;

這樣第 kk 幀圖像 IkI_k 的最終結果 DkD_k 就可以表示爲:

Dk=d(Mk)D_k = d(M_k),其中Mk=m(fi(Ik),sk1)M_k=m(f_i(I_k),s_{k-1})sk1s_{k-1} 是時序模型在 k1k-1 時刻的狀態量;

使用交叉模型的優點是:

  1. 不同的特徵提取器可以對不同的圖像特徵進行專門化處理,從而產生時間上的綜合效果;
  2. 輕量級特徵提取器大大減小了計算成本;

在研究中作者使用了兩個特徵提取器 f0,f1f_0,f_1,即 m=2m=2,其中 f0f_0 致力於提高檢測的精度,而 f1f_1 致力於提高檢測的速度;

兩個特徵提取器的交替策略可以很簡單地用一個參數 τ\tau 表示,即在 f1f_1 運行 τ\tau 次後運行 f0f_0

當然作者還提出了一個更有效的方法,在下面我們會詳細地講一下;

(五)Backbone(主幹網絡):

兩個提取器的 Backbone 作者都採用了標準的 MobileNetV2 網絡,詳解可以看我這一篇博客:
【論文閱讀筆記】:Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classifification, Detection and Segmentation

其中:

f0f_0 的深度乘子爲 1.4、輸入分辨率爲 320×320;

f1f_1 的深度乘子爲 0.35、輸入分辨率爲 160×160;

並且作者將 f1f_1 的最後一個下采樣的步長改爲 1,從而使得輸出的特徵層跟 f0f_0 大小一致;

並且作者也將預選框的比率調整爲 {1,0.5,2.0}\lbrace 1,0.5,2.0\rbrace,從而減小計算量;

(六)Memory Module(記憶模塊):

記憶模塊的作用是跨時間步聚合來自兩個提取器的特性,特別是使用時間上下文信息來增強來自小網絡的特性;

在這裏插入圖片描述

爲了提高傳統 ConvSTLM 的檢測速度,作者主要做了以下改進:

  1. 採用了一種瓶頸結構,在瓶頸和輸出之間增加了一個跳躍連接,使瓶頸成爲輸出的一部分;
  2. 將LSTM狀態分成組,並使用分組的卷積分別處理每個狀態;

假設第 tt 時刻前的狀體量爲 ht1h_{t-1}tt 時刻輸入的特徵圖爲 xtx_t

首先將狀態量按照通道劃分爲 GG 個相等的分區 1ht1,2ht1,,Ght1^1h_{t-1},^2h_{t-1},…,^Gh_{t-1},再將這 GG 個分區分別與 xtx_t 相連接,輸出瓶頸結構 LSTM 的門 bt,ft,it,otb_t,f_t,i_t,o_t

LSTM 的新的狀態量 gct,ght^gc_t,^gh_t 也通過同樣的方法計算(注意這裏沒有聚合,依然是分組的形式);

最後使用一個跳躍連接結構連接生成輸出組:

gMt=[ght,bt]^gM_t=[^gh_t,b_t]

最後在通道維度上將他們鏈接,就得到了 ct,ht,Mtc_t,h_t,M_t

其中分組的卷積通過稀疏化層連接提供了加速,跳躍連接結構允許在輸出中包含較少的臨時相關特徵,而不需要存儲在內存中;

研究中作者採用了 G=4G=4,channels 數爲 320320,帶來的速度提升還是比較明顯的:
在這裏插入圖片描述

作者還發現,LSTM 中的輸入和遺忘門的 sigmoid 激活很少完全飽和,會導致長期依賴項逐漸丟失的緩慢狀態衰減;

爲了解決這個問題,作者提出了一個簡單的方法:運行 f1f_1 時跳過狀態更新,即重複利用 f0f_0 的狀態量;

(七)Training Procedure(訓練過程):

訓練過程包括兩個階段;

首先在 ImageNet 上預訓練交替模型,來爲 LSTM 獲取一個比較好的初始化權重;

由於 ImageNet 是單張圖片的分類任務,這裏作者將每一張圖片複製三次,並將 LSTM 展開爲三個步驟,每一步隨機選取一個特徵提取器;

然後再用 SSD 的目標檢測任務的訓練方法,將 LSTM 展開爲六個步驟,通過裁剪圖片的特定區域來模擬視頻中的平移和縮放;

(八)Adaptive Interleaving Policy(自適應交替策略):

(我沒看懂,,,這裏就簡介一下吧,,,)
在這裏插入圖片描述

這裏作者提供了一個使用強化學習來優化交替策略的方法;

作者構建一個策略網絡 ππ 檢查 LSTM 的運行狀態和輸出下一功能;

然後,利用 DDQN 對策略網絡進行訓練,算法如圖:
在這裏插入圖片描述

(我是看不懂了,,,最近補一下強化學習)

(九)Inference Optimizations(推理優化):

這裏作者探索了兩個針對實際應用的額外優化,這兩個優化使幀率提高了三倍,同時保持了準確性和部署的方便性;

9.1 Asynchronous Inference(異步推理):

基於關鍵幀的檢測方法的一個問題是,它們只考慮平攤運行時,然而由於這些方法在關鍵幀上執行大部分計算,因此幀之間的延遲是極不一致的;

因此作者提出了一個異步推理的策略:

在這裏插入圖片描述
當以同步方式運行交錯模型時,每一步都會運行一個特徵提取器,因此最大潛在延遲取決於 f0f_0;

然而,通過在單獨的線程中運行特性提取器(稱之爲異步模式),這個過程很容易並行化;

在異步模式下,每一步都運行 f1f1,專用於生成檢測,而 f0f_0 則繼續每 ττ 幀運行一次並更新狀態量;

輕量級的特徵提取器在每一步則使用最新可用的內存,不再需要等待更大的特徵提取器運行;

9.2 Quantization(量化):

作者提出,對於 LSTM,在所有數學運算(加法、乘法、sigmoid 和 ReLU6)之後,可以插入僞量化操作;

即將激活後的範圍,對於 sigmoid 固定爲 [0,1],對於 ReLU6 固定爲 [0,6],以確保連接操作的所有輸入的範圍是相同的,以消除重新排序的需要;

(十)實驗結果:

在這裏插入圖片描述
在這裏插入圖片描述

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