TransReID: Transformer-based Object Re-Identification [2102.04378v2] - 論文研讀系列(3) 個人筆記
阿新 • • 發佈:2022-04-13
TransReID: Transformer-based Object Re-Identification [2102.04378v2]
- 論文題目:TransReID: Transformer-based Object Re-Identification
- 論文地址:http://arxiv.org/abs/2102.04378v2
- 程式碼:https://github.com/heshuting555/TransReID
- 21年2月文章
1、摘要簡介
-
構建了一個基於transformer的強baseline
-
為了進一步增強魯棒特徵,設計了兩個新模組:
- 提出``jigsaw patch module`JPM,通過shift和shuffle操作對patch(?)的嵌入進行重排列從而生成魯棒特徵
- 引入側資訊嵌入SIE,通過插入可學習嵌入來融合非視覺線索,從而減輕對檢視變化的特徵偏差
-
基於CNN的論文有兩個問題沒有得到很好的解決:
- (1)CNN由於有效接受域的高斯分佈,主要針對較小的識別區域(時序關係不好處理)。本文前的注意力方法偏愛大面積的連續區域,難以提取多個多樣的判別部分
- (b)基於CNN,(c)基於CNN+注意力,(d)基於transformer
- (2)細粒度特徵很重要,CNN的下采樣池化和跨步卷積
stride convolution
降低了輸出特徵圖的空間解析度。 - Transformer的多頭自注意捕獲長距離依賴,並驅動模型參與不同的人體部位,無需下采樣操作,Transformer可以保留更詳細的資訊。(本文通過設計,再去之前的Transformer work裡尋找原因)
- 區域性特徵和側面資訊是增強特徵魯棒性的重要方面
- 對部分/條紋聚合特徵對遮擋和失調具有魯棒性,但CNN中設計的全域性序列分裂成幾個獨立子序列會破壞長期依賴關係;
- 可以通過構造不變特徵空間來減小側面資訊變化帶來的偏差。基於CNN構建的側面資訊設計不能直接應用在Trans上,需要單獨設計。
- 因此首先要設計Trans的框架baseline專用於Reid,其次再在擴充套件長期依賴上針對區域性特徵和側面資訊設計單獨模組。
2、相關論文
3、TransReid
3.1 Trans baseline(全域性特徵)
-
分為特徵提取和監督學習兩個階段。
- 分割N個固定大小patch,一個額外可學習的嵌入標記
[cls]
被前置到輸入序列。輸出的[cls]
f
。 - 輸入序列為:
Z_0 = [x_cls;F(x1_p);F(x2_p);...F(xn_p)] + P
。p表示位置嵌入,F是將patch對映到D維的線性投影。使用l
個Trans層學習特徵表示。由於所有Trans層都有一個全域性接受域,解決了基於cnn方法的接受域有限問題,並且沒有下采樣操作。
- 分割N個固定大小patch,一個額外可學習的嵌入標記
-
第一步Overlapping Patches:不重疊的patch會使得周圍區域性鄰近資訊丟失,因此使用滑窗生成畫素重疊的patch。patch大小設為P,步長S,分割N個patch,N越大效能越好但是計算成本也大:
-
第二步Position Embedding:由於Reid任務解析度和原始影象解析度不同,因此不能直接載入預訓練好的位置嵌入,因此引入雙線性2D插值來幫助處理任何給定的輸入解析度。與VIT類似位置嵌入可學習。 (embedding簡單來說就是編碼。)
-
第三步監督學習:通過構造全域性特徵的ID損失和三重損失來優化網路。ID損失Lid是沒有標籤平滑的交叉熵損失,輸出的
f
經過了BNNeck計算。對於三元組{a,p,n}具有軟合併的三元組損失LT:after present next -
BNNeck:批量歸一化
- 在行人重識別模型中,有很多工作都是融合了ID loss和Triplet loss來進行訓練的,但是這種loss函式的目標並不協調,對於ID loss,特別在行人重檢測,consine距離比歐氏距離更加適合作為優化標準,而Triplet loss更加註重在歐式空間提高類內緊湊性和類間可分性。因此兩者關注的度量空間不一致,這就會導致一個可能現象就是當一個loss減小時另外一個在震盪或增大。
- 通過神經網路提取特徵ft用於Triplet loss,然後通過一個BN層變成了fi,在訓練時,分別使用ft和fi來優化這個網路,由於BN層的加入,ID loss就更容易收斂,另外,BNNeck也減少了ID loss對於ft優化的限制,從而使得Triplet loss也變得容易收斂了。因為超球體幾乎是對稱的座標軸的原點,BNNECK的另一個技巧是去除分類器fc層的偏差,這個偏差會限制分類的超球面。在測試時,使用fi作為ReID的特徵提取結果,這是由於Cosine距離相比歐氏距離更加有效的原因。
3.2 拼圖patch模組 Jigsaw Patch Module
- 假設輸入到最後一層的特徵記為
Z_l-1
,將嵌入的patch進行洗牌,重新組合成不同部分,每個部分包含多個隨機的整體的patch嵌入。訓練中引入額外噪聲。 - 受shuffleNet啟發,通過shift和shuffle操作對patch進行洗牌:
- 第一步shift:後移m個patch
- 第二步patch shuffle:特徵內部進行區域性置換,沒改變整體的特徵資訊,又添加了新的變化,也是一種正則化手段。將置換後的特徵分成k組編碼成k個區域性特徵
{f1_l,f2_l..fk_l}
,輸出到最後一層的全域性特徵計算和JPM區域性特徵計算並行進行,拼接並行結果得到最終的特徵表達:{fg;f1_l;f2_l;..fk_l}
,因此每個特徵可以編碼不同的部件。整體損失定義如下:
3.3 側資訊嵌入 side information embedding
-
主要針對場景偏誤(不同攝像機,不同角度)提出的,將非視覺資訊整合在嵌入表示中以學習不變特徵。在輸入嵌入時增加一維表示側資訊,即視角資訊,相同視角編碼相同。攝像機和視點編碼為
SC(c,v)
,id值為r
和q
,SIE對每個patch來說相當於一個帶超參的偏置項