最近幾年Transformer的興起,不只讓NLP領域有重大的躍進,也讓這股風潮吹到的Vision這,作為一個電腦視覺的研究生,不能不知道ViT等相關研究吧。這篇2021年發表在ICCV上的paper,是由浙江大學與阿里巴巴團隊共同研究的論文,將Vision Transformer應用到行人重識別(Re-ID)的工作上,在不同benchmarks上都有達到sota的表現。
arxiv: TransReID: Transformer-based Object Re-Identification
這算是我的部落格中第一篇的論文賞析,可能會有很多先備知識需要補充,但礙於篇幅我會盡可能講解比較重要的部份,段落格式與詳盡程度我也正在拿捏當中,請大家見諒!
在開始介紹之前,必須要先知道甚麼是Re-identification
(行人重識別,簡稱Re-ID),這個問題最主要就是要讓model學習出具有代表性與差異性的特徵,藉此分辨出不同的人物或物體(如:車輛),而Re-ID如果加上時間維度的資訊就是 Video-based Re-ID
,不過Re-ID問題的input都是預處理好的cropped bounding boxes,若是再加上偵測bbox.的部份(Detection),就會是 Multi-Target Multi-Camera Tracking
問題(如圖一),可想而知MTMC的研究會是最複雜也最難做的,同時包含了Detector、Tracking Algorithm、Re-ID Feature等部份,可說是牽一髮動全身,Re-ID則是先把變因去掉專注在學習人物特徵上,更詳細的介紹可以看底下的Reference,我覺得寫的很詳盡。

Introduction
過去Re-ID問題在CNN-based的研究已經非常豐富,但使用CNN有兩個比較難被克服的問題,所以作者想要用Transformer-based的方法試圖解決這些問題。
第一個問題是CNN的方法比較難以捕捉比較豐富且具有結構性的特徵,這樣講起來比較抽象一點,如圖二所示,我們可以看到單純CNN的方法對於特徵的捕捉比較弱,捕捉出來的pattern也比較零碎,加入attention機制的方法(c)可以稍微改善這個情況,但仍然不夠好,而基於Transformer的方法對於特徵的捕捉比較明確,整體來說特徵也比較有結構性,之所以可以有更好的特徵,是因為Transformer裡面的Multi-head self-attention讓model可以去注意圖片的不同區塊。

第二個問題是CNN的方法會讓細緻的特徵因為很多downsampling的操作(如:pooling、convolution等)而消失,這種細微的特徵對於Re-ID問題來說是非常重要的,以下圖為例,#16和#443這兩個人物不管是面向、穿著都非常類似,只能透過背包上微小的特徵(如:白色logo、水壺)去分辨兩者,透過CNN方法得出的feature map沒辦法獲得太多具有差異性的資訊,而Transformer的方法則可以明顯的保留細微的特徵,藉由這些特徵就可以分辨出不同的兩個人物。

因此作者提出一種基於Transformer的model,除了baseline以外,他們還提出兩個module來幫助特徵學習上的優化:
- Jigsaw Patch Module(JPM): 將patch embeddings重新排列組合來得到更具代表性的特徵。
- Side Information Embedding(SIE): 將非視覺上的資訊encode進去模型幫助學習。
Methodology
整個模型是由Vision Transformer作為baseline而成,所以整體架構其實和ViT很像,另外在input的部份多了一個Side Information Embedding一起丟進Transformer layer,在最後一層Transformer之前會分為兩個branch進行,左邊的global branch照著原本的流程計算出global feature,而右邊的local branch則會先丟進Jigsaw Patch Module做處理產生local feature,最後將兩邊的特徵混合得到最終的Re-ID特徵。

Transformer-based strong baseline
作者他們的baseline基本上和ViT的設定都是一樣的(圖五),將圖片切成不同的patch後經過Linear projection layer後降到 $D$ 維空間,掛上 position embedding
用來學習圖片彼此順序上的關係與 [cls] token
代表比較general的特徵,整個input可以用下方式子表示,最後經過 $l$ 層的Transformer後得出最終的feature。
這邊有兩個比較特別的點,第一個是將圖片切割成不同的patch時,作者他們使用 sliding window
的方式,也就是切出來的patch彼此會有部分範圍重疊,我覺得應該是希望可以多少學習到一些關聯性,而不是彼此獨立的patch;第二個是最後的loss function,使用的是Re-ID標配的ID loss和Triplet loss,這兩個loss就不贅述,比較特別的是有使用BNNeck,特徵計算完Triplet loss後,再丟進一層Batch normalization layer讓特徵的每個維度比較平衡一點,之前研究就有證明這樣的方式不只可以加快模型收斂速度,也可以些微提升performance。

Side Information Embedding
在input的部份,作者他們還有將非視覺上的資訊(side info.)透過1-D Learnable Embedding包進模型內,希望透過其他資訊能夠減少資料本身的bias,所謂的side information指的是除了Dataset中的RGB影像外,其他有提供的資訊,像是不同相機的ID或是不同視角的資訊,應該是用簡單的sparse label的方式當成另一個維度的特徵。原本model中的position embedding在每個patch的初始值都不同(如:0~8),但SIE在同一張影像內的所有patch都會是相同的值,因為一張影像是由同一個視角同一個相機所拍攝出的,可以從圖四看到SIE用相同的藍色代表同樣的初始值。最後由一個超參數 $\lambda$ 調整在input中的佔比,如下式所示,其中的 $r*N_V+q$ 只是一個簡單的二維表格索引。
Jigsaw Patch Module
在最後一層Transformer layer之前,會將特徵分為兩邊做處理,左邊的branch維持原樣繼續跑一層Transformer layer後得出 Global feature
,右邊的branch則會透過JPM先將原本有順序性的patch打亂,打亂的方式是先將前面 $m$ 個patch shift到最後面,再做shuffle後分配到 $k$ 組裡面,每一組的feature再跑最後一層Transformer layer得到 $k$ 組 Local feature
,在訓練時每個feature各自計算自己的ID loss與Triplet loss,加總取平均,而在inference階段時,則是將 Local feature
接在 Global feature
之後得到最終的特徵再做預測。
作者這樣做的用意應該是希望透過打亂順序,學習出更不一樣的特徵幫助訓練,不過單純打亂好像沒有太多物理意義,感覺只是操作上的方便(我去看他的code的確也就兩三行解決),或許可以透過計算similarity去分組,或是其他想法可能可以得到更有效也更具解釋力的特徵。
上述就是整個模型的架構,其實還算滿簡單好理解的,一個跟ViT幾乎一樣的骨架,加上兩個support module。
Experiment
實驗的部份總共使用六種Datset,分別有四種行人與兩種車輛的Re-ID Dataset,實驗結果如圖六,整體來說除了一兩個數據略輸,其他所有數據都是目前最優,尤其在 MSMT17
與 Occluded-Duke
兩個資料集上的進步幅度都很多, Occluded-Duke
是從原本的DukeMTMC中在挑選更難更多遮擋的資料,這樣的表現與成長是很不錯的。

Ablation Study
這部份的實驗我覺得就沒這麼吸精,如果真的有興趣可以自行去論文中察看,大概就是JPM和SIE這兩個module對模型都很有幫助,也能提升不少準確度。我認為作者可以去嘗試JPM不同的排序方法,或是將SIE用不同encoding的方式納入討論,甚至是這兩個module放在不同層之間使用的好壞,感覺都挺有趣的。
Conclusion
最後總結一下,這篇作者提出了一個基於Transformer的模型,希望可以解決過去CNN在Re-ID上碰到的困境與未解的難題,在此基礎上加入兩個不同的support module,希望透過不同面向幫助模型學習出有用的特徵,那在實驗的部份也說明了作者他們模型的強大,不過Transformer應該還有很多的進步空間,或許可以透過這篇paper達到拋磚引玉的效果,對Transformer-based的方法提出更多研究與改良。