視頻目標檢測Temporally-Aware-Feature-Maps

視頻目標檢測

卷積神經網絡在目標檢測中發揮出重要做用[1,2,3,4,5]
近期,新的網絡結構[6,7]使得目標檢測算法能夠運行在計算力更低的硬件平臺,而且性能足夠媲美先進單幅圖像目標檢測算法。
而後,視頻給目標檢測帶來了額外的時空線索,如何利用這一線索設計更好的視頻目標檢測框架稱爲目前的主要挑戰。算法

那麼能夠利用的時空線索有哪些:網絡

  1. 因爲視頻的時間連續性,相鄰幀中的目標在位置上具備類似性,且不會發生實質性變化。
  2. 多幀之間能夠反映目標的不一樣姿態,有利於準肯定位目標。
  3. 時間線可以提高目標檢測的置信度,增長檢測穩定性[8]

<!-- G09Q1J.png -->app

Bottleneck-LSTM 一種快速LSTM

長短時間記憶網絡(LSTM)[9]是一種普遍使用的時序數據處理網絡,結構以下圖所示,其中$\odot$是Hadamard Product,也就是操做矩陣中對應的元素相乘,所以要求兩個相乘矩陣是同型的,$\oplus$表明矩陣加法。框架

長短時間記憶網絡(LSTM)

Convolutional LSTM是LSTM的一個特殊變種,使用3D隱層狀態,並將門(Gate)計算替換爲卷積層(Convolutional Layer),如此使得LSTM可以同時編碼時空信息。ide

直接將Convolutional LSTM嵌入到目標檢測網絡會大幅增長計算量 ,解決這一問題的方式就是使用Bottleneck-LSTM,Bottleneck-LSTM使用深度可分離卷積(Depthwise Separable Convolutions)以及特殊設計的Bottleneck門。函數

咱們將圖像考慮爲連續圖像幀的序列$V=\{I_0,I_1,...,I_n\}$。
視頻檢測的目的是獲得每一幀的檢測結果$\{D_0,D_1,...,D_n\}$,其中$D_k$是$I_k$幀中一系列的預測目標外包矩形框和預測類別。
在線視頻目標檢測認爲$D_k$僅能從$I_k$幀與以前的圖像幀中進行計算。性能

預測模型能夠看做這樣一個函數$F(I_t,s_{t-1})=(D_t,s_t)$,其中$s_k=\{s_k^0,s_k^1,...,s_k^{m-1}\}$是描述$k$幀與以前的特徵圖向量。
$m$層LSTM的神經網絡用來逼近這一函數,$s_{t-1}$的每一個特徵圖做爲LSTM的狀態輸入,LSTM的輸出狀態爲$s_t$的特徵圖。學習

LSTM對特徵的細化

令單幅圖像目標檢測器爲函數$D_t=G(I_t)$。在LSTM視頻檢測器中,$m$個LSTM將$G$劃分爲$m+1$個子網絡${g_0,g_1,...,g_m}$,並知足:ui

$G(I_t)=(g_m \circ \cdots \circ g_1 \circ g_0)(I_t)$編碼

將每個LSTM層$L_0,L1,...,L_{m-1}$定義爲函數$L_k(M,s_{t-1}^k)=(M_+,s_t^k)$,其中$M$和$M+$爲相同維度的特徵圖。則計算過程以下

下圖給出了這一計算過程的可視化:

多個Convolutional LSTM層嵌入到檢測網絡

將LSTM單元嵌入到檢測網絡中的哪些層須要仔細探討,若是嵌入到早期的一些特徵層上,會面臨很大計算壓力。實驗部分也給出了證明,嵌入到SSD網絡的Conv 13以後是一個較好的選擇。SSD網絡結構以下表所示:

LSTM-SSD網絡結構

可是咱們還須要考慮以下的嵌入方式:

  1. 在Conv 13以後嵌入單個LSTM
  2. 在Conv 13以後嵌入堆疊的多個LSTM
  3. 在每一個特徵圖後嵌入1個LSTM

先來解答這個問題吧。

  • 單層LSTM放在哪效果最好?下表展現這一問題的實驗結果,將單個LSTM放在模型的不一樣層,能夠看出單層LSTM嵌入到Conv 13層是效果最好的。

單層LSTM嵌入到不一樣層的表現

  • 多層LSTM如何放置效果最好?因爲同時訓練多個LSTM很是困難,在逐步添加層的同時,對以前的訓練權重進行微調。

因爲高層特徵的維度更低,增長的計算量並很少。堆疊2層LSTM並無得到好的收益。
Conv 13,FM1,FM2,FM3以後嵌入LSTM單元是一個不錯的選擇。

不一樣多層LSTM表現

擴展寬度乘數

LSTM計算複雜度高,由於須要計算一系列門。對此,首先想到通道(Channel)降維,給通道一個乘數因子$\alpha$[6]
定義3個乘數$\alpha_{base},\alpha_{ssd},\alpha_{lstm}$分別控制網絡的不一樣部分。

對於任何MobileNet的輸出通道$N$,使其輸出爲$N\times \alpha_{base}$。
$\alpha_{ssd}$控制全部SSD特徵圖的通道數,$\alpha_{lstm}$控制LSTM層的特徵數。
在實驗部分,令$\alpha_{base}=\alpha$,$\alpha_{ssd}=0.5\alpha$,$\alpha_{lstm}=0.25\alpha$。

Bottleneck-LSTM詳解

令$M$和$N$分別表明LSTM的輸入與輸出通道數。因爲Convolutional LSTM的具體實現有不一樣版本[10,11],定義標準Convolutional LSTM以下:

Convolutional LSTM計算過程

$x_t$和$h_{t-1}$是3D特徵圖,並將它們按通道鏈接。$h_t$和$c_t$爲輸出特徵圖。
$^jW^k\star X$表示輸入爲$X$,參數爲$W$的深度可分離卷積(Depthwise Separable Convolution),輸入通道數爲$j$,輸出通道數爲$k$,$\phi(x)=ReLU(x)$爲激活函數,$\circ$表示逐元素乘(Hadamard product)。

注意:使用深度可分離卷積可以有效減小8-9倍計算量,ReLU雖然不經常使用於LSTM,咱們發現不改變映射的邊界很重要,由於這裏的LSTM是夾在卷積層中間的。

此外,這裏的LSTM輸出通道數小於輸入通道數,咱們修改以下公式以壓縮特徵通道數:

$b_t=\phi(^{(M+N)}W_b^N\star [x_t,h_{t-1}])$

如此$b_t$替換了全部其餘門的輸入,以下圖所示,這被稱爲Bottleneck-LSTM。有效下降計算量,實際表現效果更好。

Bottleneck-LSTM

令輸入特徵圖空間分辨率爲$D_F\times D_F$,深度可分離卷積核大小爲$D_K\times D_K$,咱們對比一下標準Convolutional LSTM與Bottleneck-LSTM的計算量:

  • Convolutional LSTM(GRU是其計算量的3/4)

$4(D_K^2\cdot (M+N)\cdot D_F^2+(M+N)\cdot N\cdot D_F^2)$

  • Bottleneck-LSTM

$D_K^2\cdot (M+N)\cdot D_F^2+(M+N)\cdot N\cdot D_F^2+4(D_K^2\cdot N\cdot D_F^2+N^2\cdot D_F^2)$

設$D_K=3$,令$k=\frac{M}{N}$。$k>\frac{1}{3}$時,Bottleneck-LSTM就能夠超過Convolutional LSTM,$k=4$時,Bottleneck-LSTM成爲不二之選。

算法實現細節

訓練與評估的數據集是ImageNet VID 2015。LSTM按時序展開10步,即10幀圖像參與LSTM時序建模。
訓練兩種乘數模型,分別是$\alpha=1$和$\alpha=0.5$。
$\alpha=1$時,輸入圖像分辨率爲$320\times 320$,學習率爲0.003;$\alpha=0.5$時,輸入圖像分辨率爲$256\times 256$,學習率爲0.002。

困難負樣本挖掘與數據加強策略參考文獻[4]。10個負樣本對應1個正樣本,且負樣本損失乘以0.3。

爲了應對過擬合,訓練網絡時採用兩個階段步驟。
首先,不嵌入LSTM網絡,微調SSD網絡。而後凍結主幹網絡參數,直到Conv 13層,且包括Conv 13層,接着,嵌入LSTM網絡,完成以後的訓練過程。

最後,給出一張與單幅圖像目標檢測器的對比結果,進步仍是比較可觀,固然,也並無質的飛躍==。

ImageNet VID 2015上的實驗對比結果

參考

[1] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 1, 2

[2] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014. 1

[3] J. Dai, Y. Li, K. He, and J. Sun. R-fcn: Object detection via region-based fully convolutional networks. In NIPS, 2016. 1, 2

[4] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y. Fu, and A. C. Berg. Ssd: Single shot multibox detector. In ECCV, 2016. 1, 2, 5

[5] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. In NIPS, 2015. 1, 2

[6] A. Howard, M. Zhu, B. Chen, D. Kalenichenko, W. Wang, T. Weyand, M. Andreetto, and H. Adam. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017. 1, 3, 4

[7] X. Zhang, X. Zhou, M. Lin, and J. Sun. Shufflenet: An extremely efficient convolutional neural network for mobile devices. arXiv preprint arXiv:1707.01083, 2017. 1, 3

[8] C. Szegedy, W. Zaremba, I. Sutskever, J. Bruna, D. Erhan, I. Goodfellow, and R. Fergus. Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199, 2013. 1

[9] S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural Computation, 9(8):1735–1780, 1997. 3

[10] V. Patraucean, A. Handa, and R. Cipolla. Spatio-temporal video autoencoder with differentiable memory. arXiv preprint arXiv:1511.06309, 2015. 3, 4

[11] X. Shi, Z. Chen, H. Wang, D. Yeung, W. Wong, and W. Woo. Convolutional lstm network: A machine learning approach for precipitation nowcasting. In NIPS, 2015. 3, 4

相關文章
相關標籤/搜索