《Video Action Transformer Network》

這周閱讀了《Video Action Transformer Network》這篇文章,發表於2019年度的CVPR,並且做了oral talk,作者是卡內基梅隆和Google的研究人員,代碼開源在:http://rohitgirdhar.github.io/ActionTransformer

模型的目標是針對視頻中的某一幀進行動作的檢測和分類(此幀中包含多個人物和不同的動作,類似於目標檢測),主要的思路是借鑑transformer結構將視頻中前後的信息加入最終進行分類和定位的向量。優勢在於使模型能夠考慮到目標之外的相關物體帶來的語義信息,這對於動作的識別是十分重要的。行爲識別和定位的難點通常在於推斷一個人的行爲時不僅需要考慮目標本身的動作,其周圍的物體對於推斷同樣重要。同樣在視頻中同樣的需要考慮時序上的上下文關係,例如對“watch a person”進行識別,當人從幀中消失之後,同樣需要進行推理來判斷到底看的是人還是其他什麼東西。


作者提出了改進的action transformer結構用於視頻中的動作定位,其結構如下:其結合了I3D模型和RPN模型,分別提供基礎的特徵和採樣機制。模型的訓練和測試均在AVA數據集進行,最終性能在25%的mAP值

我們將一步步的介紹上圖中的數據流程:

  • Input clip的生成:以keyframe爲中心,從原始的視頻中前後共抽取64幀作爲I3D模型輸入,生成一個clip,對其前後大約3秒的信息進行編碼
  • Trunk部分:此部分是模型的基礎部分,用於對clip部分進行編碼,生成原始特徵(藍色部分的向量),以及供後續的模型結構使用的Q、K、V向量。首先使用I3D模型(在Kinetics-400上預訓練,使用mixed4f層上的輸出,特徵下采樣維度變爲原來的1/4,1/16,1/16)提取基礎特徵,包括圖像特徵和位置編碼;基於此特徵,在每一幀的特徵上使用RPN網絡生成對應的region proposal,只針對key frame生成。(生成多個帶有評分的潛在的目標框,選擇前300分數最高的框生成最終的bounding box)
  • Action transformer network(右下的tx unit):使用RPN網絡生成的person box作爲q向量(每個proposal對應一個q)和memory特徵(person周圍的信息),將memory的每一幀映射爲一組K和V向量(共64組)。此處就可以將其視爲一個300頭的self attention。Transformer單元使用一個Q向量分別和前後所有的K向量計算出注意力係數,然後和V向量加權得到一組全局信息,然後和原始的Q向量加和得到包含了全局信息的Q向量(300個q向量重複次運算,當然是同步進行的),後續的FFN和layer norm和原始的transformer相同。整個模型堆疊三層,每層包括兩個這樣的單元,(同樣是爲了獲得不同的注意力模式下的向量)兩個單元的特徵使用拼接操作進行連接,得到下一步的Q向量。最終得到最右的藍色向量。
  • Q、K、V向量的生成:類似於原生transformer,此處同樣使用線性映射生成K、V向量,Q向量則是將POI pooling之後的向量(center frame person box)先後通過Query preprocessor(先1*1卷積後拼接)和linear layer得到一個(1,1,D)維的向量。此爲一種方式,另一種方式是直接進行平均池化,但是會損失所有的空間信息。作者對這兩種方式進行了對比:
  • Q向量的更新過程的形式化描述:
  • I3D head對比:做着同樣進行了對比試驗,使用I3D head代替transformer。這是一種簡單的頭部,不再抽取上下文信息。其計算過程如下:先對RPN生成的某個proposal進行拉伸得到新的向量;然後從memory中抽取對應的特徵表示,每個對應的幀使用不同的ROI pooling抽取,最後將得到的所有向量進行stack得到新的向量輸入I3D network得到最終的logits進行定位和分類。

  • 最終的實驗結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章