1. 程式人生 > >SCNN-用於時序動作定位的多階段3D卷積網路

SCNN-用於時序動作定位的多階段3D卷積網路

注:本文首發在微信公眾號-極市平臺。如需轉載,請聯絡微信Extreme-Vision

這篇文章主要介紹Zheng Shou在CVPR2016上的工作”Temporal action localization in untrimmed videos via multi-stage cnns”[1]。之後會再介紹他在CVPR2017 上的新工作。

首先介紹一下這篇文章要解決的問題。視訊中的人體行為識別主要包括兩個方向:Action Recognition 以及 Temporal Action Localization, 分別進行簡單的介紹:

  1. Action Recognition的目的為判斷一個已經分割好的短視訊片段的類別。特點是簡化了問題,一般使用的資料庫都先將動作分割好了,一個視訊片斷中包含一段明確的動作,時間較短(幾秒鐘)且有唯一確定的label。所以也可以看作是輸入為視訊,輸出為動作標籤的多分類問題。常用資料庫包括UCF101,HMDB51等。
  2. Temporal Action Localization 則不僅要知道一個動作在視訊中是否發生,還需要知道動作發生在視訊的哪段時間(包括開始和結束時間)。特點是需要處理較長的,未分割的視訊。且視訊通常有較多幹擾,目標動作一般只佔視訊的一小部分。常用資料庫包括THUMOS2014/2015, ActivityNet等。

這篇文章主要解決Temporal Action Localization的問題。SCNN指segment based CNN,即基於視訊片段的CNN網路。文章的程式碼見SCNN github地址

模型介紹

模型框架

如圖所示即為SCNN的整體模型框架。主要包括三個部分,1)多尺度視訊片段的生成;2)多階段SCNN;3)後處理。下面分別進行介紹

  1. 多尺度視訊片段生成

SCNN模型框架的第一步就是生成候選的視訊片段,之後拿這些片段作為下一步的輸入。在SCNN中採用了劃窗方法產生視訊片段,包括多個大小的視窗:16,32,64,128,256,512, 劃窗的重疊為75%。在得到視訊片段後,對其進行平均取樣16幀視訊,從而使得輸出的segment的長度均為16。在生成訓練資料時,同時還記錄和segment和ground truth instance之間的最大重疊度(IoU)以及類別(即如果存在多個重疊的ground truth,取重疊度最大的那個)。

  1. 多階段SCNN

SCNN 共有3個階段:proposal, classification and localization network。三者均為結構相同的C3D network[2],只有最後一層全連線層根據任務不同而有不同的長度。三者的輸入均為上一步得到的segment。

  • Proposal Network: 輸出為兩類,即預測該segment是動作的概率及是背景的概率(action or not)。訓練時將IoU大於0.7的作為正樣本(動作),小於0.3的作為負樣本(背景),對負樣本進行取樣使得正負樣本比例均衡。採用softmax loss進行訓練。

  • classification Network: 輸出為K+1個類別(包括背景類)的分數, 這個網路被用來初始化localization network, 僅在訓練階段使用,在測試階段不使用。訓練時同樣將IoU大於0.7的作為正樣本(K類動作),小於0.3的作為背景類,對背景類動作進行取樣使得背景類動作的數量和K類動作數量的平均值相近。訓練時同樣採用softmax loss。

  • Localization Network:輸出為K+1個類別(包括背景類)的分數,這個分數應該算做是該segment是某類動作的置信度分數。在訓練時localization network用訓練好的classification network做初始化,使用與classification network 相同的資料集,但增加了基於IoU分數的overlap Loss.其loss function為:

L=Lsoftmax+λLoverlap

    λ為比例係數,SCNN中設為1。overlap loss為:

Loverlap=1Nn0.5(P(kn)n)2(vn)α1[kn>0]

    其中kn為該segment的真實類別,vn為其IoU, Pn為localization network 的輸出分數。α 為超引數。 這個loss的作用是根據IoU的分數調整預測結果,使得輸出的分數不僅能對動作的類別進行分類,還能夠估計其與ground truth的重疊程度。有利於後續的NMS。

  • 測試時的計算流程: 在測試時,只使用proposal 及 localization network。對於每個segment,先用proposal network計算它是動作的概率,若這個概率高於閾值(0.7),則作為一個候選segment進入下一個階段用localization network計算置信度分數,低於閾值的segment都會被捨棄。

    1. 後處理

後處理是在測試階段進行的。使用的方法是基於 Pl(localization network的輸出分數)進行非極大化抑制(NMS)來移除重疊,在SCNN中,NMS的閾值被設定為0.1。下圖就是NMS的一個例子,對於時序上重疊的動作,通過NMS去除分數低的,保留分數高的。

實驗結果

在測評結果時,temporal action localization 問題一般使用的是mAP指標,即各個動作類別的Average Precision(AP)的平均。當一個動作例項與ground truth的重疊度IoU大於閾值,且類別正確時,被視為正確的預測。常用的閾值為0.5,或者同時用多個閾值來進行比較。SCNN分別在MEXaction2以及THUMOS 2014上進行了實驗,其結果如下表所示。

可以看出SCNN均獲得了不錯的效果,是當時state-of-the-art的結果。

個人討論

在SCNN中,劃窗+Proposal Network 構成了演算法的proposal部分,這裡如果不用Proposal network,直接用劃窗結果進行預測的話mAP會下降大概2個百分點(論文實驗中給出),proposal network的主要作用是去除一些背景片段。

實際上,proposal的生成也是temporal action localization問題中的難點,這點與Object Detection中的Proposal 生成(R-CNN中的region proposal)類似。一個好的proposal 演算法能夠大大提高模型的效果。有論文專門討論這個問題,比如Deep Action Proposal [3]等。

此外,SCNN中segment的大小是通過劃窗確定的,很可能不夠準確。目前CVPR2017上出現的幾篇新的論文[4,5]都對這方面有所討論,並採用了不同的方法提高segment proposal的邊界精度。目前在THUMOS資料集上最好的精度大概比SCNN高十個百分點[4].

參考文獻

[1] Shou Z, Wang D, Chang S F. Temporal action localization in untrimmed videos via multi-stage cnns[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1049-1058.

[2] Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional networks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 4489-4497.

[3] Escorcia V, Heilbron F C, Niebles J C, et al. Daps: Deep action proposals for action understanding[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 768-784.

[4] Xiong Y, Zhao Y, Wang L, et al. A Pursuit of Temporal Accuracy in General Activity Detection[J]. arXiv preprint arXiv:1703.02716, 2017.

[5] Shou Z, Chan J, Zareian A, et al. CDC: Convolutional-De-Convolutional Networks for Precise Temporal Action Localization in Untrimmed Videos[J]. arXiv preprint arXiv:1703.01515, 2017.