孪生网络系列学习
論文
1.SiamFC.
2. SiamRPN.
3.SiamRPN++.
4.DaSiamRPN.
SiamFC
網絡結構
所謂孿生結構,即為成對的結構,具體來說就是該結構有兩個輸入,一個是作為基準的模板,另一個則是要選擇的候選樣本。而在單目標跟蹤任務中,作為基準的模板則是我們要跟蹤的對象,通常選取的是視頻序列第一幀中的目標對象,而候選樣本則是之后每一幀中的圖像搜索區域(search image),而孿生網絡要做的就是找到之后每一幀中與第一幀中的范本最相似的候選區域,即為這一幀中的目標,這樣就可以實現對一個目標的跟蹤。孿生網絡基本結構如下:
??將第一幀圖像目標作為模板圖像z ,將后續個幀圖像作為搜索圖像x,通過一個學習好的相似性對比函數f(z,x)在x上找到和z最為相像的備選區域作為預測的目標位置。相似度對比函數f將會用一個標記好的數據集進行訓練。作者用深度網絡作為相似度對比函數f,將網絡作為一種變換φ,首先將這種變換分別應用到模板和搜索圖像上,產生模板和搜索區域的特征φ(z),φ(x),然后用另外一個相似度測量函數g將他們結合起f(z,x)=g(φ(z),φ(x))。
??為了給出更精確的定義,給定Lτ是一種轉換操作(Lτx)[u]=x[u?τ],函數h作為全卷積網絡變換函數,k是全卷積網絡變換的比例因子,則h(Lkτx)=Lτh(x),表示的含義是:先對x進行有比例因子的轉換操作再進行全卷積操作等同于先對x進行全卷積操作再進行轉換操作。給定每個位置的偏置參數b1,相似度對比函數還可以表示為f(z,x)=φ(z)?φ(x)+b1,表示的含義是:模板區域z和搜索區域x經過相同的卷積操作φ()后,用?操作并加上一定的偏置b1得到響應圖。
??在跟蹤過程中,搜索圖像是以上一幀目標為中心的,響應圖由特征圖進行互相關操作(等價于響應圖的內積)生成,響應圖最大的位置乘以網絡的比例因子才是目標的最終位置。另外,作者使用不同尺度的圖片作為一個mini-batch進行檢測。
??注意:SiamFC設計的網絡結構將原始圖像縮小了8倍,即k=8,并且,該網絡沒有padding。
訓練過程
損失函數:
其中v是對一個樣本候選區的打分值,y是此樣本候選區的真實標簽y∈{+1,?1}。響應圖的損失被定義為響應圖中每個位置損失的平均值。
??最后,給定x和z是樣本對,θ是參數,f是對樣本對的打分,用SGD最小化如下損失函數來獲得最佳的跟蹤模型。
??訓練數據:作者用大規模搜索圖像訓練模型,訓練數據是由樣本對組成的,視頻中的第一幀圖像中的目標和該視頻中的其他相差不超過T幀的圖像組成了若干樣本對(目標圖像和后續幀都組成一個樣本對)。每個樣本對經過孿生網絡生成響應圖v[u]后,u∈D(u表示響應圖中的每個位置),響應圖每個位置對應的標簽為y[u],y[u]的定義遵循如下規定,表示當響應圖中某位置u和響應圖中目標位置c的距離乘以比例因子k后小于R則為正樣本。
??數據處理:模板圖像大小是127×127,搜索區域圖像是255×255,給定目標尺寸(w,h),目標周圍擴增p,其中p=(w+h)/4,對于模板圖像A=1272,利用尺度變換s使得新的區域面積等于模板圖像面積(s的變換方式是在原有尺寸不變的前提下填充原圖RGB各通道均值像素),在預訓練之前,將訓練數據組織好以便提高訓練速度。
??訓練細節:模型初始化參數用高斯分布初始化,共迭代50次,每次迭代包含50000個樣本對,mini-batch為8,學習率每次迭代從10(?2)到10(?5)。
跟蹤過程
只在大約四倍于先前大小的區域內搜索對象,并且在得分圖中添加一個cos窗口來懲罰較大的位移。通過處理多個縮放版本的搜索圖像,可以實現對縮放空間的跟蹤。任何規模的變化都將受到懲罰,并對當前規模的更新進行阻尼。
結合時域信息約束;搜索目標在四倍目標區域;余弦窗口加在打分映射懲罰大的偏移。多尺度跟蹤,增強尺度估計的準確性。
在跟蹤過程中,初始幀目標的特征圖只計算一次,然后它用來和后續幀的特征圖進行比較,得到的響應圖(得分圖)。作者利用雙三次插值將17×17的矩陣轉換為272×272的矩陣,從而定位目標區域。另外,針對搜索圖像,還用了5種尺度1.025({?2,?1,0,1,2}),這些尺度采用了以0.35為步長的線性函數作為抑制。
實驗結果
SiamRPN
網絡結構
在 CVPR18 的論文中(SiamRPN),商湯智能視頻團隊發現孿生網絡無法對跟蹤目標的形狀進行調節。之前的跟蹤算法更多的將跟蹤問題抽象成比對問題,但是跟蹤問題其實和檢測問題也非常類似,對目標的定位與對目標框的回歸預測一樣重要。 研究人員分析了以往跟蹤算法的缺陷并對其進行改進:
??大多數的跟蹤算法把跟蹤考慮成定位問題,但它和檢測問題也比較類似,對目標的定位和對目標邊界框的回歸預測一樣重要。為此,SiamRPN 將跟蹤問題抽象成單樣本檢測問題,即需要設計一個算法,使其能夠通過第一幀的信息來初始化的一個局部檢測器。為此,SiamRPN 結合了跟蹤中的孿生網絡和檢測中的區域推薦網絡:孿生網絡實現對跟蹤目標的適應,讓算法可以利用被跟蹤目標的信息,完成檢測器的初始化;區域推薦網絡可以讓算法可以對目標位置進行更精準的預測。經過兩者的結合,SiamRPN 可以進行端到端的訓練。
??以往的濾波類的方法,沒辦法通過數據驅動的形式提升跟蹤的性能。而 SiamRPN 可以端到端訓練,所以更大規模的數據集 Youtube-BB 也被引入到了訓練中,通過數據驅動的形式提升最終的性能。
??SiamRPN網絡由Siamese Network和Region Proposal Network兩部分組成。前者用來提取特征,后者用來產生候選區域。其中,RPN子網絡由兩個分支組成,一個是用來區分目標和背景的分類分支,另外一個是微調候選區域的回歸分支。整個網絡實現了端到端的訓練。
RPN網絡:
??RPN網絡由兩部分組成,一部分是分類分支,用于區分目標和背景,另一部分是回歸分支,它將候選區域進行微調。對于分類分支,它將給出每個樣本被預測為目標和背景的打分。網絡將用Siam網絡提取到的模板和檢測幀的特征用一個新的卷積核進行卷積,在縮小了特征圖的同時,產生了如圖大小為4×4×(2k×256)的模板幀特征[φ(z)]cls和大小為20×20×256的檢測幀特征[φ(x)]cls,他們分別表示的含義是:模板幀特征大小是4×4,而且它在k種不同的anchors有k中變化,對每種變化的模板都產生一個特征;檢測幀特征大小是20×20×256。然后,以模板幀的特征作為卷積核(2k個4×4×256)去卷積檢測幀的特征從而產生響應圖Aclsw×h。 回歸分支和分類分支類似,不過它給出的是每個樣本的位置回歸值,這個位置回歸值包含dx, dy, dw, dh四個值。
跟蹤過程
??檢測幀在對每一幀目標進行檢測時就是對proposals進行分類,即相當于一個分類器。該分類器進行分類時需要一個響應得分圖,該響應圖是由檢測幀特征圖用模板幀特征圖作為卷積核進行卷積得到的。如上圖灰色的方塊,標識有weight for regression和weight for classification即為模板幀特征圖,它用第一幀圖像信息進行訓練(即one-shot檢測,只用第一幀圖像信息訓練出一層網絡的參數),然后將訓練好的參數作為卷積核用到檢測支中,對檢測幀特征進行卷積得到響應圖,作者將模板支的輸出作為本地檢測的卷積核,在整個跟蹤過程中,卷積核參數都是用第一幀信息提前計算好的,當前幀跟蹤可以看做如上圖所示的one-shot檢測,提取出檢測支中得分前M的樣本的分類輸出信息和回歸輸出信息。根據輸出信息,可以得到前M個proposals的位置信息。
實驗結果
SiamRPN++
網絡結構
SiamFC, 通過相關操作,可以考慮成滑窗的形式計算每個位置的相似度。但帶來了兩個限制:
1.網絡需要滿足嚴格的平移不變性。如SiamFC中介紹的,padding會破壞這種性質。
2.網絡有對稱性,即如果將搜索區域圖像和模板區域圖像對調,輸出的結果應該不變。(因為是相似度,所以應該有對稱性)
因此認為,現代化網絡破壞嚴格平移不變性以后,帶來的弊端就是會學習到位置偏見:按照SiamFC的訓練方法,正樣本都在正中心,網絡會學到這種統計特性,學到樣本中正樣本分布的情況。按照這個思想進行了實際的實驗驗證,在訓練過程中,不再把正樣本放在中心,而是以均勻分布的采樣方式讓目標在中心點附近進行偏移。
由上圖可以看出,隨著偏移的范圍增大,深度網絡的效果逐漸變好。所以說,通過均勻分布的采樣方式讓目標在中心點附近進行偏移,可以緩解網絡因為破壞了嚴格平移不變性帶來的影響,即消除了位置偏見,讓現代化網絡可以應用于跟蹤中。
互相關的區別
Cross Correlation:用于SiamFC,模版特征在搜索區域上以滑窗的方式獲取不同位置的響應。
Up-Channel Cross Correlation:用于SiamRPN,于Cross Correlation不同的是在做correlation前多了兩個卷積層,一個提升維度(通道數),另一個保持不變。之后通過卷積的方式,得到最終的輸出。通過控制升維的卷積來實現最終輸出特征圖的通道數。
Depthwise Cross Correlation:和UpChannel一樣,在做correlation操作以前,模版和搜索分支會分別過一個卷積,但不需要提升維度,這里只是為了提供一個非Siamese的特征(SiamRPN中與SiamFC不同,比如回歸分支,是非對稱的,因為輸出不是一個響應值;需要模版分支和搜索分支關注不同的內容)。在這之后,通過類似depthwise卷積的方法,逐通道計算correlation結果,這樣的好處是可以得到一個通道數非1的輸出,可以在后面添加一個普通的卷積就可以得到分類和回歸的結果。
SiamRPN++的改進主要源自于upchannel的方法中,升維卷積參數量極大, 分類分支參數就有接近6M的參數,回歸分支12M。其次升維造成了兩支參數量的極度不平衡,模版分支是搜索支參數量的2k~4k倍,也造成整體難以優化,訓練困難。改為Depthwise版本以后,參數量能夠急劇下降;同時整體訓練也更為穩定,整體性能也得到了加強。
實驗結果
DaSiamRPN
之前Siam的問題
1.常見的siam類跟蹤方法只能區分目標和無語義信息的背景,當有語義的物體是背景時,也就是有干擾物(distractor)時,表現不是很好。
2.大部分siam類跟蹤器在跟蹤階段不能更新模型,訓練好的模型對不同特定目標都是一樣的。這樣帶來了高速度,也相應犧牲了精度。
3.在長時跟蹤的應用上,siam類跟蹤器不能很好的應對全遮擋、目標出畫面等挑戰。
解決方法
之所以出現上述的問題,作者的結論是訓練過程中的樣本不均衡造成的。一個是正樣本種類不夠多,導致模型的泛化性能不夠強:解決方案是加入detection的圖片數據,pair可以由靜態圖片通過數據增益生成;加入detection數據生成的正樣本之后,模型的泛化性能得到了比較大的提升。第二個是樣本不均衡來自于難例負樣本,在之前的Siamese網絡訓練中, 負樣本過于簡單,很多事是沒有語義信息的:解決辦法是用不同類之間的樣本(還有同類的不同instance)構建難例負樣本,從而增強分類器的判別能力。不同種類的正負樣本的構建可以參見下圖。以上兩個改進大大改善了相應分數的質量,在丟失目標的時候,相應分數隨之變得很低,說明跟蹤器的判別能力得到了改善。
實驗結果
總結
- 上一篇: VS2015卸载不完全与安装问题
- 下一篇: 【语音识别】获得MOOC视频的文本(字幕