標籤:

「不良視頻」如何消滅?她手把手教你走出第一步!

「不良視頻」如何消滅?她手把手教你走出第一步!

不嚴肅的開場白

視頻社交已經成為了時下最 in 的社交方式,相較於傳統的文字、語音聊天,使用親身錄製的短視頻、幽默搞笑的圖片、表情包與好友進行交流,不僅更加風趣且更具人情味。

而隨著視頻社交的流行,每天產生的視頻數據能夠達到數千萬小時,這些數據的質量參差不齊,其中有大量的不良視頻,如涉暴、涉黃、涉政等。在海量數據面前,完全依靠人工審核無法解決內容審核的難題。因此也催生了智能內容審核的誕生。智能內容審核是指藉助於人工智慧技術,對海量視頻進行自動分類,鑒別出其中涉及敏感內容的視頻並予以禁播。

智能內容審核的第一步,是進行視頻分類。今天,我們要聊的就是視頻分類背後的演算法。

嚴肅的開場白

故事要從深度學習說起。(因為從深度學習說起,可以顯出本文是一篇有逼格的演算法總結。)深度學習是一個近幾年來火遍各個領域的辭彙,在語音識別、圖像分類、視頻理解等領域,深度學習的相關演算法在特定任務上已經能夠達到甚至超過人類水平。本文從視頻分類的角度,對深度學習在該方向上的演算法進行總結。

視頻分類是指給定一個視頻片段,對其中包含的內容進行分類。類別通常是動作(如做蛋糕),場景(如海灘),物體(如桌子)等。其中又以視頻動作分類最為熱門,畢竟動作本身就包含「動」態的因素,不是「靜」態的圖像所能描述的,因此也是最體現視頻分類功底的。

數據集

熟悉深度學習的朋友們應該清楚,深度學習是一門數據驅動的技術,因此數據集對於演算法的研究起著非常重要的作用。網路上雖然有大量用戶上傳的視頻數據,但這些數據大多數缺少類目標籤,直接用於演算法的訓練會導致效果欠佳。在學術界,通常有一些公開的、已經經過完整標註的數據集,是演算法訓練的好幫手。具體到視頻分類領域,主要有兩種數據集,trimmed 和 untrimmed。Trimmed 是指視頻經過剪輯,使其只包含待識別類別的內容; untrimmed 是指視頻未經過剪輯,包含了動作/場景/物體之外的很多信息。Untrimmed 通常在視頻分類的演算法之外,還要加上動作檢測演算法。這不在今天的話題當中,有空我們可以再聊聊這一塊的演算法。

那麼 trimmed video 的數據集比較常見的有 UCF101,HMDB51,Kinetics,Moments in time。Untrimmed video 的數據集比較常見的有 ActivityNet,Charades,SLAC。部分數據集的比較見下表:

視頻分類常用數據集

需要指出的是,從上表中我們可以看出視頻分類的數據集實際上比圖像分類的數據集的規模小得多。這是因為在視頻上進行標註遠比對圖像進行標註要費時費力。Trimmed 視頻還好些,基本標註時間等於視頻時長。如果是 untrimmed 視頻,需要在視頻中手工標註動作的起始和結束時間,根據測試,需要花費視頻長度的 4 倍時間。

因此 ladies and 鄉親們,這些數據集,且用且珍惜吧。

研究進展

在視頻分類中,有兩種非常重要的特徵:表觀特徵 (appearance) 和時序特徵 (dynamics)。一個視頻分類系統的性能很大程度上取決於它是否提取並利用好了這兩種特徵。但是提取這兩種特徵並不那麼容易,會遇到諸如形變/視角轉換/運動模糊等因素的影響。因此,設計對雜訊魯棒性強且能保留視頻類別信息的有效特徵至關重要。

根據 ConvNets(深度卷積神經網路)在圖像分類上取得的成功,很自然地,我們會想到把 ConvNets 用到視頻分類中。但是,ConvNets 本身是對二維圖像的表觀特徵的建模,而對於視頻來說,除了表觀特徵,時序特徵也很重要。那麼如果把時序特徵用起來呢?通常有三種思路: LSTM, 3D-ConvNet 和 Two-Stream。

1. LSTM 系列

LRCNs[1] 是 LSTM 和 ConvNet 結合進行視頻分類的方法。這種結合很自然,已經在圖像分類任務上訓練好的 ConvNet 分類器,可以很好地提取視頻幀的表觀特徵;而對於時序特徵的提取,則可以通過直接增加 LSTM 層來實現,因為 LSTM 能夠將多個時刻的狀態作為當前時刻的輸入,從而允許時間維度上的信息得以保留。

視頻分類任務是變長輸入定長輸出的。文章另外還介紹了 LRCNs 用於圖像描述(定長輸入變長輸出)和視頻描述(變長輸入變長輸出)的方案,感興趣的同學可以自行查看。

2. 3D-ConvNet 及其衍生系列

C3D[2] 是 Facebook 的一個工作,它主要是把 2D Convolution 擴展到 3D。其原理如下圖,我們知道 2D 的卷積操作是將卷積核在輸入圖像或特徵圖(feature map)上進行滑窗,得到下一層的特徵圖。例如,圖 (a) 是在一個單通道的圖像上做卷積,圖 (b) 是在一個多通道的圖像上做卷積(這裡的多通道圖像可以指同一張圖片的 3 個顏色通道,也指多張堆疊在一起的幀,即一小段視頻),最終的輸出都是一張二維的特徵圖,也就是說,多通道的信息被完全壓縮了。而在 3D 卷積中,為了保留時序的信息,對卷積核進行了調整,增加了一維時域深度。如圖 (c) 所示,3D 卷積的輸出仍是一個三維的特徵圖。因此通過 3D 卷積,C3D 可以直接處理視頻,同時利用表觀特徵和時序特徵。

關於實驗效果,C3D 在 UCF101 上的精度為 82.3%,並不高,其原因在於 C3D 的網路結果是自己設計的簡單結構(只有 11 層),而沒有借鑒或預訓練於其他成熟的 ConvNets 結構。

因此針對這一點,有很多學者提出了改進。

? I3D[3] 是 DeepMind 基於 C3D 作出的改進,值得一提的是 I3D 這篇文章也是發布 Kinetics數據集的文章。其創新點在於模型的權重初始化,如何將預訓練好的 2D ConvNets 的權重賦值給 3D ConvNets。具體地,將一張圖像在時間維度上重複 T 次可以看作是一個(非常無聊的)T 幀的視頻,那麼為了使該視頻在 3D 結構上的輸出和單幀圖像在 2D 結構的輸出相等,可以使 3D 卷積的權重等於 2D 卷積的權重重複 T 次,再將權重縮小 T 倍以保證輸出一致。 I3D 在 Kinetics 數據集上進行預訓練然後用於 UCF101,其精度可達到 98.0%。

? P3D[4] 是 MSRA 基於 C3D 作出的改進,基本結構是把 ResNet 擴展為「偽」3D 卷積,「偽」 3D 卷積的意思是利用一個 1*3*3 的 2D 空間卷積和 3*1*1 的 1D 時域卷積來模擬常用的 3*3*3 的 3D 卷積,如下圖所示。P3D 在參數數量、運行速度等方面對 C3D 作出了優化。

3. Two-Stream Network 及其衍生系列

Two Stream[5] 是 VGG 組的工作(不是 UGG 哦),其基本原理是訓練兩個 ConvNets,分別對視頻幀圖像(spatial)和密集光流(temporal)進行建模,兩個網路的結構是一樣的,都是 2D ConvNets,見下圖。兩個 stream 的網路分別對視頻的類別進行判斷,得到 class score,然後進行分數的融合,得到最終的分類結果。

可以看出 Two-Stream 和 C3D 是不同的思路,它所用的 ConvNets 都是 2D ConvNets,對時序特徵的建模體現在兩個分支網路的其中一支上。Two-Stream 的實驗結果,在 UCF101 上達到 88.0% 的準確率。

在 spatial stream 和 temporal stream 如何融合的問題上,有很多學者作出了改進。

? [6] 在 two stream network 的基礎上,利用 3DConv 和 3DPooling 進行 spatial 和 temporal 的融合,有點 two stream + C3D 的意思。另外,文章將兩個分支的網路結構都換成了 VGG-16。在 UCF101 的精度為 92.5%。

? TSN[7] 是 CUHK 的工作,對進一步提高 two stream network 的性能進行了詳盡的討論。Two stream 在這裡被用在視頻片段(snippets)的分類上。關於 two stream 的輸入數據類型,除去原有的視頻幀圖像和密集光流這兩種輸入外,文章發現加入 warped optical flow 也能對性能有所提高。在分支網路結構上嘗試了 GoogLeNet,VGG-16 及 BN-Inception 三種網路結構,其中 BN-Inception的效果最好。在訓練策略上採用了跨模態預訓練,正則化,數據增強等方法。在 UCF101 上達到 94.2% 的精度。

4. 其他

除了以上兩種常見的思路以外,也有學者另闢蹊徑,嘗試與眾不同的方法。

? TDD[8] 是對傳統的 iDT[9] 演算法的改進(iDT 演算法是深度學習以前最好的行為識別演算法),它將軌跡特徵和 two-stream network 結合使用,以 two-stream network 作為特徵提取器,同時利用軌跡對特徵進行選擇,獲得軌跡的深度卷積描述符,最後使用線性 SVM 進行視頻分類。TDD 是一個比較成功的傳統方法與深度學習演算法相結合的例子,在 UCF 上達到 90.3% 的精度。

? ActionVLAD[10] 是一種特徵融合的方式,它可以融合 two stream 的特徵,C3D 的特徵以及其他網路結構的特徵。其思想是對原有的特徵計算殘差並聚類,對不同時刻的幀進行融合,得到新的特徵。ActionVLAD 是對視頻空間維度和時間維度的特徵融合,使得特徵的表達更全面。

? Non-local Network [11] 是 Facebook 何愷明和 RBG 兩位大神近期的工作,非局部操作(non-local operations)為解決視頻處理中時空域的長距離依賴打開了新的方向。我們知道,卷積結構只能捕捉數據的局部信息,它對於非局部特徵的信息傳遞不夠靈活。Non-local Network 則根據所有幀所有位置的信息對某個位置進行調整。文章把這個 block 加在 I3D 上做了實驗,在 Charades 上精度提升 2%。

總結

以上所有的視頻分類演算法都是在近幾年提出的,可以看出這一領域的發展之快。從學術角度,視頻分類是開啟視頻理解這個領域的金鑰匙,對它的研究可以為相關領域的研究打下堅實的基礎,包括視頻動作檢測,視頻結構化分析等,都用到了視頻分類的技術。從我們實際生活的角度,視頻分類已經在默默地做著很多事情,例如在文章一開始提到的智能內容審核,再例如視頻檢索、視頻監控、視頻廣告投放、自動駕駛、體育賽事分析等。在不久的將來,相信視頻分類以及其他的 AI 演算法將為我們帶來更多驚喜的變革。AI 讓生活更美好。

牛人說

牛人說專欄致力於技術人思想的發現,其中包括技術實踐、技術乾貨、技術見解、成長心得,還有一切值得被發現的技術內容。我們希望集合最優秀的技術人,挖掘獨到、犀利、具有時代感的聲音。

參考文獻

[1] J. Donahue, et al. Long-term recurrent convolutional networks for visual recognition and description. CVPR, 2015.

[2] D. Tran, et al. Learning Spatiotemporal Features with 3D Convolutional Networks. ICCV, 2015.

[3] J. Carreira, et al. Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset. CVPR, 2017.

[4] Z. Qiu, et al. Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks. ICCV, 2017.

[5] K. Simonyan, et al. Two-Stream Convolutional Networks for Action Recognition in Videos. NIPS, 2014.

[6] C. Feichtenhofer, et al. Convolutional Two-Stream Network Fusion for Video Action Recognition. CVPR, 2016.

[7] L. Wang, et al. Temporal Segment Networks: Towards Good Practices for Deep Action Recognition. ECCV, 2016.

[8] L. Wang, et al. Action Recognition with Trajectory-Pooled Deep-Convolutional Descriptors. CVPR, 2015.

[9] H. Wang, et al. Action Recognition with Improved Trajectories. ICCV, 2013.

[10] R. Girdhar, et al. ActionVLAD: Learning spatio-temporal aggregation for action classification. CVPR, 2017.

[11] X. Wang, et al. Non-local Neural Networks. arxiv 1711, 2017.


推薦閱讀:

唐唐big笑工坊為什麼叫唐唐?
一個用十年時間解決的問題
雷政富不雅視頻事件?
如何將視頻轉化為mp4格式?
短視頻包裝記住這2點!瞬間讓視頻高大上!

TAG:視頻 |