視頻相較於圖像,具有額外的時間維度信息,因此如何更好地利用視頻中的時序信息是視頻領域研究的重點。目前常用的方法有三類:使用RNN對視頻特徵做時序建模,如AttentionLSTM模型。這類模型的輸入是視頻特徵,而不是原始視頻,因此往往用作後處理模塊。
使用3D網絡提取時序信息。如SlowFast模型,創新性的使用Slow和Fast兩個網絡分支分別捕獲視頻中的表觀信息和運動信息。這一方法在很大程度上是受到靈長類視覺系統中視網膜神經節細胞的生物學研究所啟發。研究發現,在靈長類的視覺系統中,約80%是P細胞,15-20%是M細胞。M細胞以較高的頻率工作,對時間變化更加敏感;P細胞則提供良好的空間細節和顏色感知。相應的,SlowFast模型的Slow分支類似於P細胞,感知空間信息;Fast分支類似於M細胞,對時間變化敏感。該模型在視頻分類任務上取得了SOTA的效果,同時也是AVA 視頻檢測挑戰賽的冠軍模型。3D網絡儘管在精度方面很有優勢,但由於3D卷積計算量大,訓練和推理耗時較長,難以用於產業實踐。
使用2D網絡提取時序信息,如經典的TSN模型。TSN模型採用「段共識」的操作融合多幀圖像的特徵信息,能將絕大部分原本用於圖像分類的網絡模型進行擴展,通過簡單地修改輸入形式,就能直接用於下遊的視頻分類任務上。給後續許多模型提供了一種通用的思路。
依託豐富的視頻模型優化經驗,飛槳PaddleVideo團隊總結並完善了一套通用的視頻模型優化策略,在提出PP-TSM之後,研發團隊將這套策略應用於TSN模型並取得顯著收益,研發出PP-TSN模型。在基本不增加計算量的前提下,PP-TSN使用Kinetics-400數據集訓練的精度可以提升到75.06%,達到同等Backbone下的3D模型SlowFast的精度區間,且推理速度快5.6倍,在精度和性能的平衡上具有顯著的優勢。1.模型精度以實際測試為準,所有模型採用同一份數據進行訓練測試。2.PP-TSN的Top1精度介於SlowFast的兩個版本之間,即達到同等Backbone下的3D模型SlowFast的精度區間。https://github.com/PaddlePaddle/PaddleVideo那PP-TSN到底採用了哪些優化策略呢?下面咱們帶領大家一起來深入剖析一下飛槳團隊算法優化的 「內功心法」。眾所周知Mix-up是圖像領域常用的數據增強方法,它將兩幅圖像以一定的權值疊加構成新的輸入圖像。PaddleVideo團隊通過合理擴展圖像Mix-up,將其引入到視頻數據增強中,讓兩個視頻以一定的權值疊加構成新的輸入視頻。實際操作中,我們首先要從一個視頻抽取固定數量的幀,並給每一幀賦予相同的權重,然後與另一個視頻抽出來幀按一定比例進行疊加作為新的輸入視頻。結果表明,Mix-up能有效提升網絡在時空上的魯棒性,增強模型的泛化能力。另外,相較於圖像,視頻由於多了時間維度,混合的方式可以有更多的選擇。Better Backbone:骨幹網絡可以說是一個模型的基礎,它決定了一個網絡是否能提取有效的特徵供後續任務使用,一個優秀的骨幹網絡會給模型的性能帶來極大的提升。針對PP-TSN,飛槳研發人員使用更加優異的ResNet50_vd作為模型的骨幹網絡,在保持原有參數量的同時提升了模型精度。ResNet50_vd是指擁有50個卷積層的ResNet-D網絡。如下圖所示,ResNet系列網絡在被提出後經過了B、C、D三個版本的改進。其中ResNet-B將Path A中1x1卷積的stride由2改為1,避免了信息丟失;ResNet-C將第一個7x7的卷積核調整為3個3x3卷積核,減少計算量的同時增加了網絡非線性;ResNet-D進一步將Path B中1x1卷積的stride由2改為1,並在其後添加了平均池化層,保留了更多的信息。Feature aggregation:對PP-TSN模型,在骨幹網絡提取特徵後,還需要使用分類器做特徵分類。實驗表明,在特徵平均之後分類,可以減少frame-level特徵的幹擾,獲得更高的精度。假設輸入視頻抽取的幀數為N,則經過骨幹網絡後,可以得到N個frame-level的特徵。分類器有兩種實現方式:第一種是先對N個frame-level特徵進行平均,得到video-level特徵後,再經過全連接層得到logits;另一種方式是先經過全連接層,得到N個frame-level的logits,再求平均。飛槳開發人員經過大量實驗驗證發現,採用第1種方式有更好的精度收益。Scale fc learning rate:在訓練過程中,我們給全連接層設置的學習率為其它層的5倍。實驗結果表明,通過給分類器層設置更大的學習率,有助於網絡更好的學習收斂,提升模型精度。標籤平滑是一種對分類器層進行正則化的機制,通過在真實的分類標籤one-hot編碼中真實類別的1上減去一個小量,非真實標籤的0上加上一個小量,將硬標籤變成一個軟標籤,達到正則化的作用,防止過擬合,提升模型泛化能力。假定訓練數據的分布和測試數據的分布是一致的,對於Batch Normalization層,通常在訓練過程中會計算滑動均值和滑動方差,供測試時使用。滑動均值的計算方式如下:但滑動均值並不等於真實的均值,尤其是在batchsize比較小的時候容易受到單次統計量不穩定的影響。因此為了獲取更加精確的均值和方差供BN層在測試時使用,在實驗中,我們會在網絡訓練完一個epoch後,固定住網絡中的參數不動,然後將訓練數據輸入網絡僅做前向計算,根據每個step的均值和方差計算出整體訓練樣本的平均均值和方差,代替原本的指數滑動均值和方差,以此提升測試時的精度。知識蒸餾方案:Two Stages Knowledge Distillation
我們使用兩階段知識蒸餾方案提升模型精度。第一階段使用半監督標籤知識蒸餾方法對圖像分類模型進行蒸餾,以獲得具有更好分類效果的預訓練模型。第二階段使用更高精度的視頻分類模型作為教師模型進行蒸餾,以進一步提升模型精度。實驗中,將以ResNet152為backbone的CSN模型作為第二階段蒸餾的教師模型,在8 frame的訓練策略下,精度可以提升約1.3個點。最終PP-TSN精度達到75.06,超過同等backbone下的SlowFast模型。PaddleVideo團隊將一整套優化策略在PP-TSN、PP-TSM等模型上進行了多次成功實踐,歡迎廣大產業開發者或者科研人員展開進一步的探索。如果您覺得PP-TSN對您帶來了一些啟發或者確實實用的話,歡迎您在Github上給PaddleVideo項目Star一下,以便關注後續更多優秀的PP系列優化模型發布。
飛槳PaddleVideo項目二維碼
https://github.com/PaddlePaddle/PaddleVideo
https://gitee.com/paddlepaddle/PaddleVideo飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務應用為基礎,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件於一體,是中國首個自主研發、功能豐富、開源開放的產業級深度學習平臺。飛槳企業版針對企業級需求增強了相應特性,包含零門檻AI開發平臺EasyDL和全功能AI開發平臺BML。EasyDL主要面向中小企業,提供零門檻、預置豐富網絡和模型、便捷高效的開發平臺;BML是為大型企業提供的功能全面、可靈活定製和被深度集成的開發平臺。