關於CNN行為識別演算法的學習記錄
最近需要做一點行為識別相關的專案,於是把行為識別類的演算法(特別是基於CNN的演算法)調研了一遍。
到目前為止,CNN行為識別類的演算法主要都是基於雙流和3D卷積兩種方法,近年來,融合使用光流和C3D的演算法逐漸增多(I3D),也有的演算法使用瞭如RGB Diffierence(TSN)或人體關節點等多模態的資料。
評估行為識別演算法主要使用的資料集包括:
- UCF-101:最通用的資料集,幾乎所有論文都會在UCF-101資料集上進行測試,共有101分類,13320段視訊。
-
Kinetic:Deepmind釋出的資料集,從youtube視訊中擷取得到,分為Kinetic-400和Kinetic-600,其中Kinetic-400包含400分類,約300K段視訊;Kinetic-600包含600分類,約500K段視訊。由於資料規模較大,Kinetic被許多網路選擇作為預訓練資料集(如I3D)。
-
Something-Something、Jester、Charades等...
截至2018.10,基於CNN的行為識別演算法在UCF-101資料集上的準確率可以達到98%(I3D [2017]),速度方面也已經有可以做到實時的演算法出現(如ECO [2017],論文中稱其處理速度可以達到230+fps)。
接下來將介紹一些我調研到的行為識別演算法:
1. 雙流網路 (Two-Stream Convolutional Networks)
主要貢獻:最早的雙流網路行為識別。
備註:
1. 提出了two-stream網路,分為空間流網路 (spatial stream convnet) 和時間流網路 (temporal stream convnet),空間流網路使用靜止幀圖片作為輸入,時間流網路使用連續幀間的稠密光流序列作為輸入。
在測試時,對於一段給定的視訊,取樣一定數量的幀(論文中為25),幀間具有相同的時間間隔;然後對於每一幀,通過隨機裁剪 (crop) 和翻轉 (flip) 得到網路的10個輸入;對於每個網路輸入,採用RGB影象 (3 * 224 * 224) 作為空間流網路輸入,對RGB影象提取後續L個連續幀間的稠密光流序列(2L * 224 * 224)作為時間流網路輸入;最後,計算所有輸入影象所得分類得分的平均值作為整個視訊的分類得分。
如下是作者使用的網路結構:
對於最後的雙流資訊融合,作者嘗試了使用平均值和使用線性SVM分類器的方法。
最終,作者在UCF-101和HMDB-51資料集上得到的結果如下圖所示:
2. Two-Stream Fusion
主要貢獻:在雙流網路的基礎上研究了能夠更好融合時空資訊的方法
備註:
1. Spatial Fusion
在雙流網路中,作者利用平均值或者線性SVM分類器融合空間流網路和時間流網路得到的分類結果(softmax輸出),在本文中,作者認為這樣的方法不能很好地融合時空資訊,於是提出了一些新的fusion策略並測試了不同的fusion策略對網路分類精度的影響:
① Sum:
② Max:
③ Concatenation:
④ Conv:
⑤ Bilinear:
測試結果如下:
2. Where to fuse
作者嘗試了幾種不同的方案以修改融合時空資訊的位置,下圖是其中的兩種網路結構:
不同方案的測試結果如下:
3. Temporal Fusion
在雙流網路中,作者通過以一定時間間隔取樣視訊幀作為網路輸入,最後對所有幀所得的分類結果取平均值的方法融合時間資訊,在本文中,作者嘗試了在Spatial Fusion後使用3D Pool和3D Conv的方法,並得到了如下的測試結果:
4. 最後,作者融合了上述方案,得到了最後的測試結果:
3. TSN (Temporal Segment Networks)
主要貢獻:
1. 港中文湯曉鷗組的論文,在雙流網路的基礎上,採用稀疏時間取樣策略 (Sparse Temporal Sampling Strategy) 和視訊級監督 (Video-Level Supervision),提升了網路處理長時間視訊序列的能力;
2. 在傳統的RGB圖和光流圖以外,嘗試了新的輸入模式,包括RGB、RGB Difference、Optical Flow和Warped Optical Flow;
3. 測試了新的基礎網路,例如VGG-16、GoogleNet和BN-Inception。
備註:
1. 稀疏時間取樣策略
如下圖所示:
將一個視訊分成K段 (segment),從每一段中隨機取樣得到一個片段 (snippet);將片段輸入雙流網路得到對應的class score;最後,對於所有的class score,通過一個segmental consensus function(例如Max、Average和Weight Average)得到最終的分類結果。
2. 多模態輸入
在使用Optical Flow、Warped Optical Flow和RGB三模態輸入時,網路的分類精度最高,如下圖所示:
3. TSN在UCF-101和HMDB-51資料集上的測試結果如下圖所示:
4. TRN (Temporal Relation Network):TSN的改進版本
主要貢獻:
1. 使用MLP來表徵不同temporal segment的relation;
2. 通過時間維度上的multi-scale特徵融合,提高了video-level的魯棒性。
備註:
1. TRN主要在Something-Something、Jester和Charades三個資料集上進行測試。作者認為這些資料集中的動作具有“較強的方向性” (actions with strong directionality and large, one-way movements),受益於時序資訊更加明顯。
5. C3D (3D Convolution)
備註:
1. C3D工程由Facebook維護,2017年3月更新v1.1版本,提供了基於resnet的新模型。
2. 關於3D卷積
對於2D卷積,設輸入影象尺寸為c*w*h,其中c為影象通道數,一般為3;卷積核尺寸為K*3*3*3,stride=1,padding=True,則輸出feature-map的尺寸為K*w*h。
對於3D卷積,設輸入視訊段尺寸為c*l*h*w,其中l為視訊序列的長度;卷積核尺寸為K*3*3*3,stride=1,padding=True,則輸出feature-map的尺寸為K*l*w*h。
3. 以下是C3D的網路結構,所有卷積層濾波器尺寸均為3*3*3,pool1濾波器尺寸為1*2*2,其它所有pool層濾波器尺寸均為2*2*2。
4. 以下是C3D模型在UCF-101資料集上的測試結果:
6. R(2+1)D
主要貢獻:提出使用(2+1)D卷積替代3D卷積,在許多資料集上達到了接近state-of-the-art的效果。
備註:
1. R(2+1)D工程由Facebook維護,主要是對R(2+1)D模型的實現,除此以外,還提供了對C3D以及論文中提到的R2D、R3D、MCx、rMCx等模型的支援。
2. 在本文中,作者提出混合使用2D和3D卷積來提高網路的分類精度;此外,還提出了一種新的卷積結構,將3D卷積操作分解為兩個依次進行的卷積操作:2維空間卷積和1維時間卷積,如下圖所示:
並據此提出了幾種新的模型結構,如下圖所示:
另外,作者還將殘差網路的思想融入到R(2+1)D模型中,最終設計出的網路結構如下圖所示:
3. 以下是使用2D卷積、3D卷積和(2+1)D卷積的各種模型在Kinetic測試結果:
4. 以下是R(2+1)D網路在UCF-101和HMDB-51資料集上的測試結果:
7. I3D (Two-Stream Inflated 3D ConvNet)
主要貢獻:將雙流網路與3D卷積結合,設計了新的網路結構,在UCF-101資料集上達到了98.0%的識別精度。
備註:
1. 作者對比了幾種現有的行為識別框架,並設計了新的方案,如下圖e所示:
然後,作者又基於Inception Module設計了新的Inflated Inception-V1網路,如下圖所示:
在測試時,RGB影象序列和optical flow序列分別輸入兩個Inflated Inception-V1網路中,並對兩個預測結果取平均值作為總的預測結果。
2. 以下是I3D網路在UCF-101和HMDB-51資料集上的測試結果(目前識別精度方面的state-of-the-art):
8. ECO
主要貢獻:
1. 採用離散取樣的方法減少冗餘幀,實現了online video understanding,輕量化網路的處理速度可以達到237幀/秒(ECO Lite-4F,Tesla P100,UCF-101 Accuracy為87.4%)。
2. 使用2D+3D卷積完成幀間資訊融合。
備註:
1. 以下是ECO Lite的網路結構:
首先,將一段視訊分成等長的N段,再從每一段中隨機選取一幀輸入網路(S1~SN);輸入影象首先經過共享的2D卷積子網路得到96*28*28的feature map,然後輸入到一個3D卷積子網路中,得到對應動作類別數目的一維向量。
2. 關於幀間資訊融合的部分,作者還嘗試了使用2D與3D卷積相結合的方案(ECO Full),如下圖所示:
3. 以下是ECO網路在UCF-101和HMDB-51資料集上的測試結果:
以下是網路在執行速度方面的測試結果:
作者還測試了不同版本的ECO模型,結果如下:
參考部落格:[論文筆記] 用於線上視訊理解的高效卷積網路