開源代碼:https://github.com/facebookresearch/SlowFast
核心思想:
論文的核心思想是在考慮計算量和準确率的折中前提下,隻沿着時間次元進行擴充并不一定比沿着其他次元擴充模型效果更好,尤其在低計算量的限制下,沿着其他次元進行擴充可能準确率提升更快。
X3D方法嘗試從不從的次元對2D卷積進行擴充,使其适用于3D時空資料處理,擴充的次元包括時間次元大小

、采樣幀率
、輸入的分辨率大小
、卷積核的數量
、時間次元的卷積設定
以及網絡的深度
。
坐标下降方法參考:https://zhuanlan.zhihu.com/p/129279351
借鑒機器學習中的特征選擇方法:
1、前向特征選擇:不斷加入新特征直至性能不在提升
2、後向特征選擇:不斷移除無關特征直至性能出現明顯下降
對于将2D網絡擴充到3D網絡,作者提出以下問題:
1、3D網絡的最佳采樣政策是什麼?是長視訊的稀疏采樣,還是短視訊的密集采樣?
2、對于視訊分類任務,是否需要細粒度的空間分辨率特征?當空間分辨率達到一定條件時,視訊分類的性能會不會達到飽和?
3、是采用高幀率(時間次元長)低通道數(width小)還是采用低幀率(時間次元短)高通道數(width大)的模型性能更好?
4、當增加網絡寬度時,是增加ResBlock的寬度還是增加ResBlock的bottleneck層的寬度?
5、為了保證具有足夠的感受野大小,在增加網絡深度的同時要不要增加輸入的圖像分辨率大小?
X2D網絡:
各個次元的擴充參數
、
、
、
、
、
全都為1.
X2D網絡特性:
- 殘差子產品中的3D卷積子產品3x3x3采用了與MobileNetV1使用的深度可分離卷積來降低卷積子產品的參數量和計算量pytorch卷積操作nn.Conv中的groups參數用法解釋
- 上圖中的第一個卷積層conv1是對RGB圖像進行逐個通道卷積,那麼對于RGB三通道圖像,卷積之後輸出24個通道,是不是隻需要8組3x1的卷積核就可以,這點沒太了解???
- X2D在時間次元上與SlowFast網絡保持一緻,網絡的每一步中不會改變時間次元的大小,也就是說不會在時間次元上使用pooling池化或者conv卷積操作
X3D網絡(對X2D進行次元擴充):
各個擴充次元解釋:
X-Fast:在保證采樣視訊片段長度的情況下,增加采樣頻率,進而增加時間次元的分辨率,也就是增加輸入到網絡的時間次元大小。
X-Temporal:同時增加采樣的視訊片段長度和采樣頻率,進而增加輸入到網絡的時間次元大小。
X-Spatial:增加輸入到網絡的圖像分辨率大小
X-Depth:通過增加ResNet每個ResBlock層數來增加網絡深度
X-Width:統一的增加各卷積層的輸出通道數,來增加網絡的寬度
X-Bottleneck:增加每個殘差子產品bottleneck卷積層的輸出通道數
模型擴充後的評價名額:
J名額度量網絡性能,如準确率
C名額度量網絡的計算量,如浮點運算次數
前向擴充:每次隻改變一個參數,保持其餘參數不變,逐漸增加模型的計算量和模型複雜度
後向壓縮:如果模型正向擴充之後的計算量超過了限制,則反向壓縮再次對擴充的參數進行修正以降低模型的計算量
擴充網絡參數實驗結果:
1、擴充任何次元和X2D對比都能帶來性能的提升
2、首先帶來性能提升的并不是直覺上以為的temporal時間次元,而是擴充ResBlock殘差子產品的輸出通道數帶來的提升更大
3、之後才是擴充輸入網絡的幀數,也就是擴充時間次元大小帶來的提升更大
4、然後是擴充輸入網絡的圖像分辨率大小
5、X3D和SlowFast網絡的Fast分支類似,采用了更高的時間次元分辨率(輸入的時間次元大小)和更低的網絡寬度(輸出通道數)