【論文筆記,action recognition,動作識別】

“Two-Stream Convolutional Networks for Action Recognition in Videos”(2014NIPS)
Two Stream方法最初在這篇文章中被提出,基本原理爲對視頻序列中每兩幀計算密集光流,得到密集光流的序列(即temporal信息)。然後對於視頻圖像(spatial)和密集光流(temporal)分別訓練CNN模型,兩個分支的網絡分別對動作的類別進行判斷,最後直接對兩個網絡的class score進行fusion(包括直接平均和svm兩種方法),得到最終的分類結果。兩個分支使用了相同的2D CNN網絡結構。與3D卷積希望自動提取時空信息不同光,這裏直接顯示的輸入了運動信息,說明3D卷積提取時間信息的能力還比較差。

Q1:提取光流只使用的原視頻中一小段連續的幀,這樣做會不會損失掉關鍵信息?
Q2:對於兩個流的卷積網絡都是各自訓練,然後直接把得到的結果聯合,完全獨立地得到時間和空間特徵會不會忽略了時空之間的聯繫?(2016CVPR有一篇論文好像是針對這一點的改進,還沒看。”Convolutional Two-Stream Network Fusion for Video Action Recognition“(2016CVPR))

”Temporal Segment Networks: Towards Good Practices for Deep Action Recognition”(2016ECCV)
這篇文章主要是對Two-tream結構的改進,
1、 之前的做法是連續密集採樣,這樣採集的信息可能冗餘,也可能損失有用的信息,也不能得到整個視頻完整的時序特徵。TSN在時間流採用稀疏採樣從而在不增加太多計算量的情況下能夠得到一個比較完正的整個視頻的時序特徵。
具體做法:

把原視頻分成k段,從每段從隨機的截取一小段,相當於k個原始two-tream網絡,但是這k個網絡共享參數,實際上也就是一個網絡,然後把得到的k個特徵向量取平均值。
Q:雖然因爲snippet計算時共享參數,每個小段都會對W的更新貢獻梯度,但是隻能整個視頻都會對分類有影響,但是沒有證據能說明這樣做能融合得到時序信息,這更像是增加了採樣的密度而已。
2、另一個改進就是數據規模過小導致太複雜的深度網絡過擬合的問題。
1)cross-modality pre-trainning:把光流矩陣放縮到【0-255】的範圍,網絡採用imageNet上預訓練的參數,把第一個卷積層的3通道的卷積核取平均變成單通道,然後重複k次,k爲堆疊的時序信息通道數。
2)正則約束:採用BN層來防止變量偏移,加速收斂。但是因爲數據量小,初始階段可能造成錯誤的分佈函數的估計,所以作者提出凍結除了第一層以外的BN層的平均數和標準差。此外,採用dropout層防止過擬合,空間流0.8,時間流0.7
3)數據增強:原two-tream採用隨機裁剪和水平反轉。這裏直接在4個角落和中心裁剪,防止中心部分在隨機裁剪中出現的可能性比較大的問題,原數據大小被放縮成256340.
裁剪的寬高從4個之中隨機選取,然後被放縮到224
224。
2、 此外,還研究了RGB difference 、optical flow 、warped optical flow哪個能比較好的提取時序信息並被網絡學習。 RGB difference能夠體現變化顯著的區域,warped optical flow能夠修正相機移動的影響。

"Learning spatiotemporal features with 3d convolutional networks"
提出了3D卷積的概念

UCF101-85.2% 可以看出其在UCF101上的效果距離two stream方法還有不小差距。我認爲這主要是網絡結構造成的,C3D中的網絡結構爲自己設計的簡單結構

“A Closer Look at Spatiotemporal Convolutions for Action Recognition“CVPR2018對結構做了改進,還沒看。

另外一個很大的原因就是數據集不夠大,因爲根據後面更大的數據集Kinetic的測試情況來看,在小數據集UCF101上C3D和two-tream的差距比較大,但是在該數據集上,差距在迅速的縮小。

C3D的最大優勢在於其速度,但從網絡來說,C3D的處理速度與two-tream相差無幾,但是two-tream中需要提取光流,這是一個比較耗時的工作。

“Revisiting the Effectiveness of Off-the-shelf Temporal Modeling Approaches for Large-scale Video Classification”
這篇論文的主要思想是用卷積網絡提取特徵,然後把特徵送入設計的分類器中分類,而不是直接進行端到端的訓練。文中主要提到了2中分類器:
1、 Multi-Group Shifting Attention Network

這些操作就是類似提取特徵中的關鍵信息,去除噪聲。

2、 Temporal Xception Network

這裏的操作我沒看太懂,論文沒有細節描述。不知道這裏的序列化特徵是怎麼得到的。
這裏提出的一個思想就是,空間卷積和時序卷積完全分開。

最終論文也沒有對比實驗,不知道論文中設計的這裏分類器對比傳統的SVM之類的分類器效果有沒有提升,提升了多少。

Non-local Neural Networks
卷積層的堆疊可以增大感受野,但是如果看特定層的卷積核在原圖上的感受野,它畢竟是有限的。這是local運算不能避免的。然而有些任務,它們可能需要原圖上更多的信息,比如attention。如果在某些層能夠引入全局的信息,就能很好地解決local操作無法看清全局的情況,爲後面的層帶去更豐富的信息。
爲了能夠當作一個組件接入到以前的神經網絡中,作者設計的non-local操作的輸出跟原圖大小一致,具體來說,是下面這個公式:


上面的公式中,輸入是x,輸出是y,i和j分別代表輸入的某個空間位置,x_i是一個向量,維數跟x的channel數一樣,f是一個計算任意兩點相似關係的函數,g是一個映射函數,將一個點映射成一個向量,可以看成是計算一個點的特徵。也就是說,爲了計算輸出層的一個點,需要將輸入的每個點都考慮一遍。
一個non-local block的輸出如下:

將整個non-local化爲矩陣乘法運算+卷積運算

總結:視頻分類中很重要的就是利用好時序信息,主流方法主要有2類,一種是顯示的提取時序信息(optical flow),另一種是自動學習提取時序信息(3D conv),還有一種用RNN處理時序的,但是這方面的效果不太好,論文也不多。two-tream方面的工作主要還是在想辦法解決缺少處理long-term時序信息的問題。3Dconv 主要是精心設計網絡結構去解決自動學習捕獲時序信息的能力,同時減少網絡參數。最近的一些文章在試圖在常規的2Dconv網絡中增加模塊去解決2Dconv不能很好利用時序信息的問題(基本上都是把以前提出的很好的傳統方法稍作改造,做成一個模塊插入到2Dconv網絡中)。

轉自:https://www.cnblogs.com/super-JJboom/p/9847526.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章