Learning salient boundary feature for anchor-free temporal action localization AFSD阅读笔记及代码复现
論文地址:Lin_Learning_Salient_Boundary_Feature_for_Anchor-free_Temporal_Action_Localization_CVPR_2021_paper.pdf
該論文的主要貢獻有以下兩點:
1.首次提出了一個純無錨定的時間動作定位模型。該模型不僅具有更少的超參數來調優輸出和更少的處理輸出,而且具有更好的性能,從而兩全其美。
2.為了充分利用無錨框架, 作者討論了邊界特征的影響,并提出了新的邊界池方法,其輸出與粗的建議一起生成細粒度的預測。此外,我們還引入了一種新的邊界一致性學習策略,它可以約束模型學習更好的邊界特征。
代碼復現:使用和作者當時相同的環境10.2的cuda和1.4.0版本的pytorch復現成功
Abstract
雖然目前的大多數TAL模型通過使用預定義的錨和大量的操作性獲得了良好的結果,但這種方法可能會涉及到大量的輸出和與不同錨對應的位置和大小的重量調整。相反,無錨的方法更輕,消除了冗余的超參數,但很少受到關注。在本文中,我們提出了第一種有效的純無錨定時間定位方法。我們的模型包括(i)一個端到端可訓練的基本預測器,(ii)一個基于顯著性的細化模塊,通過一個新的邊界池為每個建議收集更有價值的邊界特征,以及(iii)幾個一致性約束,以確保我們的模型在給定任意建議時能夠找到準確的邊界。
Introduction
目前的TAL模型主要關注學習每幀的動作性或預定義錨的調整,稱為動作引導方法和基于錨的方法。盡管在基準數據集上取得了合理的良好結果,但這些方法仍然局限于以下幾點:(1)這兩種方法都將產生一堆冗余的建議。(2)動作引導方法只能提供時間邊界的預測,而它們必須依賴額外的模型,如S-CNN和P-GCN進行分類。然而,這兩個階段的模型是孤立的,因此無法為端到端更新共享信息。(3)通常,基于錨的方法對一些關鍵的超參數非常敏感,比如預定義錨的數量和大小;在實際應用中調整這些超參數是非常重要的。
與現有的方法相比,無錨模型節省了大量預定義的錨,同時將邊界回歸和分類組合在一個模型中,這樣效率很高。為此,本文提出了一種新的純無錨TAL框架,稱為無錨檢測器(AFSD)。為了學習更準確的邊界,我們參考了以前的TAL方法來表示邊界或上下文特征。這些工作主要是將起止點的鄰居通過卷積或平均池化合并來獲得這些特征。然而,我們認為,事實上,在區分一個動作是開始還是結束方面,時刻級特征比區域級特征更有價值。如下圖所示,在開始時刻和結束時刻附近的背景區域顯示了其他不相關的場景,而動作內部的區域幾乎相同,這不能提供任何判斷動作是開始還是結束的信息。這樣的例子表明了時刻級特性的重要性。
因此,我們提出了一種新的邊界池,它不是聚合整個區域,而是試圖找到起始和結束區域最顯著的時刻級特征。我們進一步用新提出的邊界一致性學習(BCL)策略裝備邊界池來正則化池化操作,為每個動作提供正確的邊界特征。綜上所述,我們的論文有以下貢獻:1.我們首次提出了一個純無錨定的時間動作定位模型。該模型不僅具有更少的超參數來調優輸出和更少的處理輸出,而且具有更好的性能,從而兩全其美。 2.為了充分利用無錨框架,我們討論了邊界特征的影響,并提出了新的邊界池方法,其輸出與粗的建議一起生成細粒度的預測。此外,我們還引入了一種新的邊界一致性學習策略,它可以約束模型學習更好的邊界特征。
Method
Overview
AFSD結構圖如上圖所示。該模型分為 3 個階段,第一個階段為:用一個主干網絡和特征金字塔來處理視頻。以RGB幀為例,對每個視頻X,我們用Kenetics預訓練好的I3D模型來提取3D特征F∈RT′×C′×H′×W′F \in \mathbb{R}^{T^{\prime} \times C^{\prime} \times H^{\prime} \times W^{\prime}}F∈RT′×C′×H′×W′,其中 T′,C′,H′,W′T^{\prime}, C^{\prime}, H^{\prime}, W^{\prime}T′,C′,H′,W′ 時間步長,通道,高度和寬度。這個特征隨后沿著一個三維空間被拉直為一個一維特征序列。這樣的序列可以包含整個視頻的時空信息。第二個階段為:施加一個特征金字塔網絡的時間卷積,將空間維度和時間維度合并在不同的層次。金字塔特征進一步被用來生成一個粗略的proposal序列{(ψ^i,ξ^i,y^iC)}\left\{\left(\hat{\psi}_{i}, \hat{\xi}_{i}, \hat{y}_{i}^{C}\right)\right\}{(ψ^?i?,ξ^?i?,y^?iC?)},并具有一個基本的無錨點預測模塊,其中包括一個簡單的回歸器和分類器。第三個階段為:基于顯著性的細化模塊 (saliency-based refinement module) 將調整動作類別分數、開始和結束邊界,并預測每個粗略 proposal 的相應質量分數。對于每個建議,利用預測的時間區域得到邊界池的顯著邊界特征。邊界特征與特征金字塔一起被利用,輸出一個細粒度的預測{(Δψ^i,Δξ^i,y^iR)}\left\{\left(\Delta \hat{\psi}_{i}, \Delta \hat{\xi}_{i}, \hat{y}_{i}^{R}\right)\right\}{(Δψ^?i?,Δξ^?i?,y^?iR?)},用于時間回歸和動作分類。值得一提的是,該模型是一個完全端到端的方法,輸入是視頻,輸出是動作以及對應的邊界。
代碼的復現中,作者提供了幾個文件,一個是val_video_info.csv,每一行的五個值分別代表video名稱,video每秒幀數,采樣之后的每秒幀數,采樣之前的幀數,采樣之后的幀數。
然后是val_Annotation_ours文件,作者剔除了一些無效的視頻,剩下的視頻列表如下。每行分別代表視頻名稱,視頻類別,開始時間,結束時間,開始的幀,結束的幀。
處理文件的函數如下:
Basic Prediction Module
我們首先建立了一個基本的無錨點預測模塊來獲得粗糙的時間邊界。例如,對于第l個FPN級的特征,我們首先將其投影到嵌入在兩個潛在空間中的特征floc和fcls,分別對應于具有兩個時間卷積的兩個分支的定位和分類。這兩個特征floc和fcls都經過處理,所有FPN層的輸出共享一層時間卷積,以得到每個位置i的粗起始和結束邊界距離和類得分。接下來我們可以得到第l級第i個時間步的開始和結束時間如下:
l層FPN層一共生成了Tl個提議。這個簡單的框架已經可以以無錨定的方式檢測動作,它的優點包括不需要預先定義的錨點,以及較少但更準確的預測。
Saliency-based Refinement Module
由于不同的動作實例可能有不同的長度,由于接受域有限,很難通過幾個簡單的時間卷積來獲得所有建議的邊界信息。因此,我們提出了一個基于顯著性的細化模塊,如上圖所示,在那里我們利用FPN特征和proposal的建議來幫助我們的模型收集邊界特征,以重新細化預測。為簡單起見,我們在以下細節中省略了代表FPN層的下標。以定位特征floc為例,首先我們通過卷積層將其投射到兩個分別對啟動活動和結束活動敏感的潛在空間中:
fs=Re?LU(GN(Conv?1(floc)))∈RTl×Cfe=Re?LU(GN(Conv?2(floc)))∈RTl×C\begin{aligned} &f^{s}=\operatorname{Re} L U\left(G N\left(\operatorname{Conv} 1\left(f_{l o c}\right)\right)\right) \in \mathbb{R}^{T_{l} \times C} \\ &f^{e}=\operatorname{Re} L U\left(G N\left(\operatorname{Conv} 2\left(f_{l o c}\right)\right)\right) \in \mathbb{R}^{T_{l} \times C} \end{aligned} ?fs=ReLU(GN(Conv1(floc?)))∈RTl?×Cfe=ReLU(GN(Conv2(floc?)))∈RTl?×C?
其中 GN 表示 Group Normalization。通過這種投射,該模型可以分別學習開始和結束敏感信號,從而減少對FPN特征的學習負荷,以進行更好的訓練。
之后,給定第 l 層的 FPN粗略的 proposal 的結果{(ψ^,ξ^)}k=1Tl\{(\hat{\psi}, \hat{\xi})\}_{k=1}^{T_{l}}{(ψ^?,ξ^?)}k=1Tl??,第 k 個開始和結束邊界被如下式構造:
Tsk=[ψk?w^kδa,ψk+w^kδb]Tek=[ξk?w^kδb,ξk+w^kδa]\begin{aligned} T_{s}^{k} &=\left[\psi_{k}-\frac{\hat{w}_{k}}{\delta_{a}}, \psi_{k}+\frac{\hat{w}_{k}}{\delta_{b}}\right]\\ T_{e}^{k} &=\left[\xi_{k}-\frac{\hat{w}_{k}}{\delta_{b}}, \xi_{k}+\frac{\hat{w}_{k}}{\delta_{a}}\right] \end{aligned} Tsk?Tek??=[ψk??δa?w^k??,ψk?+δb?w^k??]=[ξk??δb?w^k??,ξk?+δa?w^k??]?
其中 w^k=ψk?ξk\hat{w}_{k}=\psi_{k}-\xi_{k}w^k?=ψk??ξk? 表示 proposal 的長度, δa,δb\delta_{a}, \delta_{b}δa?,δb? 為超參數。然后,分別對起始區域和結束區域的fsf^sfs和fef^efe應用聚合函數A來收集相關的邊界特征。盡管在以前的作品中有很多聚合函數A的實例化,如平均池、高斯加權平均和直接收集和連接,這些方法將從和動作邊界無關的視頻幀中引入無用的知識,從而影響模型的精確預測。
因此,我們提出了一種新的邊界池化方法來得到時刻級別的邊界特征 f^s,f^e∈RTl×C\hat{f}^{s}, \hat{f}^{e} \in \mathbb{R}^{T_{l} \times C}f^?s,f^?e∈RTl?×C, 如上圖(b)。Boundary Pooling 的工作方式如下:
f^s(k,i)=max?j∈Tskfs(j,i)i=1,…,C,f^e(k,i)=max?j∈Tekfe(j,i)i=1,…,C,\begin{array}{ll} \hat{f}^{s}(k, i)=\max _{j \in T_{s}^{k}} f^{s}(j, i)\quad i=1, \ldots, C, \\ \hat{f}^{e}(k, i)=\max _{j \in T_{e}^{k}} f^{e}(j, i) \quad i=1, \ldots, C, \end{array} f^?s(k,i)=maxj∈Tsk??fs(j,i)i=1,…,C,f^?e(k,i)=maxj∈Tek??fe(j,i)i=1,…,C,?
其中 f~s,f~e\tilde{f}^{s}, \tilde{f}^{e}f~?s,f~?e 為圖像幀特征通過與上述 FPN 特征的一系列相同的特征提取操作得到的特征。最大化的目的是為沿時間區域的每個通道選擇最大的激活細胞,即最顯著的時刻。隨著FPN越來越深,時間維度減小到太小,以至于邊界池無法找到合適的邊界。因此,我們通過對底部FPN特征應用上采樣和多個卷積,添加了一個共享的幀級特征,從這些特征中提取起始和結束幀級特征,為每個提議使用與等式相同的投影和池化過程.
經過邊界池化后,通過將原始特征和所有邊界特征連接起來,構建細化后的特征。應用時間卷積來減少通道:
其中,·||·表示通道級連接。最后, 上述操作得到的這些特征被送到時序卷積來預測邊界的偏移量 (Δψ^,Δξ^)(\Delta \hat{\psi}, \Delta \hat{\xi})(Δψ^?,Δξ^?), 并且得到的邊界的偏移量還可以被送到粗略 proposal 提出階段的網絡來得到一個調整后的邊界值 (ψ~,ξ~)(\tilde{\psi}, \tilde{\xi})(ψ~?,ξ~?), 以及動作類別分數 y^R\hat{y}^{R}y^?R 。
Boundary Consistency Learning
雖然邊界池可以提取最顯著的特征,但不能保證池化后的特征代表真實的動作邊界。這樣的特性是關鍵的,因為如果邊界池集中在一個背景框架上,模型就不能有足夠的有用信息,從而被誤導到錯誤的結果。為了規范我們的邊界池,我們進一步提出了邊界一致性學習(BCL),它有兩個組成部分:激活引導學習和邊界對比學習。
Activation Guided Learning:具體來說,我們重新縮放敏感特征fs和fe,并取通道級的平均值:
這兩個特征可以看作是揭示開始或結束時刻發生概率的置信度。我們可以通過以下定義得到GT:
式中,B(·)表示鄰居,I(·)為指標函數。然后,我們就可以計算出交叉熵了:
其中,BCE表示二進制交叉熵。以gs和ge為指導,我們可以限制該特征在每個動作的發生和關閉時具有高激活度。
Boundary Contrastive Learning:考慮一個包含動作實例a和其他背景的視頻X。如果我們分割動作并填充背景的隨機部分,我們將有兩個不完整的動作片段A1,A2和背景Bg。將這三個區域應用邊界池會得到三對特征。一般來說,由于A1和A2是連續的,敏感特性應該彼此相似。然而,當模型在背景上學習采用高激活時,這一特性可能會被打破。因此,對這些特征應用對比學習,擴大動作片段的敏感特征與背景之間的距離,是保證特征合適的一個好方法。在形式上,它可以通過利用以下三重目標函數來實現:
總之, AFSD 是第一個 anchor-free 的單階段時序動作定位方法。其中, AFSD 模型包括一個端到端 basic 預測器和一個 saliency-based Refinement Module。而在 saliency-based Refinement Module 中提出了一個新 Boundary Pooling 方法以及一個保持邊界一致性模型訓練技巧。且該模 型在 THUMOS14 上取得了顯著的結果, 在 ActivityNet1.3 上也取得了較好的結果。這些結果表 明, anchor-free模型是解決 TAL 的一個好方法。
實驗細節
數據預處理。以每秒 10 幀 (10 fps) 的幀率對 THUMOS14 的 RGB 幀和光流幀進行采樣,并
將視頻分割成片段。每個片段 T 的長度被設置為 256 幀。相鄰片段有 m 幀的時間重疊,在訓練中 m 設置為 30,在測試中 m 設置為 128。幀的長、寬被設置為 96。訓練中使用隨機裁剪、水平翻轉作為數據增廣。為了提取視頻片段的特征,本實驗中對一個經過 Kinetics數據集預訓練的 I3D模型進行了微調。
實驗參數設置及細節。訓練。使用 Adam[13] 優化器,進行了 16 個 epoches 的訓練,learning rate(學習率) 為 10?5,weight decay(重量衰減) 為 10?3、batch size(批量大小) 被設置為 1。其余有關損失函數的參數設置與 AFSD原文一致。測試。模型的輸出為 RGB 幀和光流幀的模型預測結果的平均。也即是需要分別將 RGB 幀和光流幀作為輸入訓練得到兩個不同的模型,再在測試階段對進行兩者的輸出進行取平均操作來綜合結果,以獲得最終的動作類別以及起止時間。soft-NMS 中的 t-IoU 閾值設置為 0.5。
實驗結果及分析。以 mAP 為指標的實驗結果如下表。由表可以看出,作為第一個 TAL 任務下
的 anchor-free 模型的 AFSD 在只用 RGB 幀或者光流幀時,mAP 較低,但是也幾乎與 GTAN
持平。而使用 RGB 幀加光流幀的綜合模型時,mAP 大幅度提升,達到了 52.0,超過了之前的
模型。分析原因,可能是 RGB 幀主要提供原始圖像數據,而光流幀側重于兩幀之間的變化,兩者結合更利于 TAL 任務。由此可見,anchor-free 的模型也是一種很好的模型,它在沒有大量的anchor 的情況下,性能甚至超過了 anchor-base 的方法。
結果可視化分析。如下圖,左上角的圖為一段較長動作,約 40 秒,模型對結束時刻預測較
好,但對開始時刻預測不準確;其余圖動作時間約 10 秒,模型對右上角的動作開始和結束預測
較好,而對下方圖都較差。
總結
以上是生活随笔為你收集整理的Learning salient boundary feature for anchor-free temporal action localization AFSD阅读笔记及代码复现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity手势插件FingerGestu
- 下一篇: android学习之展示图片资源