Inflated 3D ConvNet 【I3D】


Two-Stream Inflated 3D ConvNet (I3D)
HMDB-51: 80.9% and UCF-101: 98.0% 在Inception-v1 Kinetics上預訓練

ConvNet+LSTM:每一幀都提feature后整視頻pooling,或者每一幀提feature+LSTM。缺點,忽略了時間信息,open和close door會分錯。

改進C3D:比二維卷積網絡有更多的參數,缺點參數量大,不能imagenet pretrain,從頭訓難訓。input 16幀 輸入112*112,本文實現了C3D的一個變種,在最頂層有8個卷積層,5個pooling層和2個全聯接層。模型的輸入是16幀每幀112x112的片段。不同於論文中的實現是,作者在所有的卷積層和全聯接層后面加入了BN層,同時將第一個pooling層的temporal stride由1變為2,來減小內存使用,增加batch的大小,這對batch normalization很重要。

雙流網絡:LSTM只抓住高層的卷積后的信息,底層的信息在某些例子上也非常重要,LSTM train 消耗很大。RGB幀和10個堆疊的光流幀,光流輸入是2倍的光流幀(x,y水平垂直的channel),可以有效train

新雙流:后面的融合部分改為3D卷積,3D pooling

雙流 inflated 3D卷積:擴展2D卷積basemodel為3D basemodel卷積,卷積核和pooling增加時間維,盡管3D卷積可以直接學習時間特征,但是將光流加進來后會提高性能。

如果2D的濾波器為N*N的,那么3D的則為N*N*N的。具體做法是沿着時間維度重復2D濾波器權重N次,並且通過除以N進行歸一化。可以類比TSN光流網絡的第一個卷積層的初始化方式。

對於3D來說,時間維度不能縮減地過快或過慢。如果時間維度的感受野尺寸比空間維度的大,將會合並不同物體的邊緣信息。反之,將捕捉不到動態場景。因此改進了BN-Inception的網絡結構。在前兩個池化層上將時間維度的步長設為了1,空間還是2*2。最后的池化層是2*7*7。訓練的時候將每一條視頻采樣64幀作為一個樣本,測試時將全部的視頻幀放進去最后average_score。除最后一個卷積層之外,在每一個卷積后面都加上BN和relu。一塊K40 GPU上,一個batch內跑15個視頻片段

I3D雙流網絡:rgb和光流是分開訓練的,測試時將它們預測的結果進行平均 


在訓練期間,spatial上是先將原始幀resize成256*256的,然后隨機剪裁成224*224的。在temporal上,盡量選擇前面的幀以保證足夠光流幀的數目足夠多。短的視頻循環輸入以保證符合網絡的input_size。在訓練中還用到了隨機的左右翻轉。

測試的時候選用中心剪裁224*224,將整條視頻的所有幀輸入進去,之后average_score

實驗測試256x256的視頻並沒有提高,測試時左右翻轉video,訓練時增加額外的augmentation,如phonemetric,可能有更好的效果。

Kinectics:人類動作
1. Person Actions(singular): (畫畫,喝東西,笑,擊打)
2. Person-Person Actions: (擁抱,親吻,握手)
3. Persion-Object Actions: (打開禮物,修剪草坪,洗碟子)
4. 細粒度需要時間推理來區分: 游泳的不同泳姿。有的需要着重於物體來區分,玩不同的樂器。

400類共計24萬個視頻,視頻時長約為10s,trimmed 視頻,測試集每類100個clip

Kinetics 數據集介紹

分類結果:

 參考自:知乎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM