# Person Re-Identification - MGN > [name=謝朋諺(Adam Hsieh)] > [time=Mon, Jun 3, 2019 4:10 PM] ###### tags: `paper`,`IVA`,`PR` --- ## Reference > [論文筆記(2)--(Re-ID) Learning Discriminative Features with Multiple Granularities for Person Re-Id](https://www.itread01.com/content/1546008304.html) > [多粒度网络(MGN)的结构设计与技术实现](https://blog.csdn.net/Gavinmiaoc/article/details/80840193) > [刷新三数据集纪录的跨镜追踪(行人再识别-ReID)技术介绍](https://zhuanlan.zhihu.com/p/35296881) > [Learning Discriminative Features with Multiple Granularities for Person Re-Identification 論文翻譯&筆記](https://www.twblogs.net/a/5b88c60e2b71775d1cde4211) > [《Learning Discriminative Features with Multiple Granularities for Person Re-Identification》论文阅读之MGN](https://blog.csdn.net/Gavinmiaoc/article/details/80648754) > [论文之Learning Discriminative Features with Multiple Granularities for Person Re-Identification](https://blog.csdn.net/weixin_43979572/article/details/85491045) > [Person Re-identification數據集描述——Market-1501](http://blog.fangchengjin.cn/reid-market-1501.html) --- # Learning Discriminative Features with Multiple Granularities for Person Re-Identification [論文連結](https://arxiv.org/pdf/1804.01438.pdf) {%pdf https://arxiv.org/pdf/1804.01438.pdf %} ## Outline > [TOC] ## 多粒度網路的結構設計與技術實現 ### 多粒度網路的設計思路 ![](https://i.imgur.com/WSvYRjz.jpg) :::info :bulb: 設計思想是這樣的,一開始把整張圖片輸入擷取全局特徵,直接用這種特徵比較 Loss 或比較圖片的距離,但有一些較不顯著的細節,還有出現頻率比較低的特徵會被忽略,比如衣服上的 LOGO 會因為全局特徵均勻化而將細節忽略掉。 :bulb: 之後基於局部特徵也使用過關鍵點、人體姿態等,但這有一些先驗知識在,比如遮擋、姿態大範圍的變化對這種方案都有一些影響,因此效果不強。 :bulb: 後來我們想到利用全局特徵跟多粒度局部特徵合併,各自負責不同的層次或者不同級別的特徵擷取,相信這樣能夠有更豐富的訊息和細節去表達輸入圖片的完整內容,最終產生了 MGN 的網路架構。 ::: ![](https://i.imgur.com/uCT0tsb.png) :::info :bulb: 從左到右是人體部分從粗粒度到細粒度的過程,左邊是完整的行人圖片,中間是將行人圖片分成上下兩部分,最右邊是分成上中下三部分。 ::: ![](https://i.imgur.com/3xcY6y7.png) :::info :bulb: 中間是行人的原圖,左邊是全局特徵,右邊是分三部分的局部特徵。可以明顯地看出兩邊的特徵圖抓取的重點不太相同。 ::: ### 多粒度網路 (MGN) 網路結構 **Structure:** * Input Size: 384*128 * Base: ResNet-50 * Branches from res_conv4_1 * Global Branch & Part Branch * Stride 1/2 in res conv5_1 block * Split features to multi stripes ![](https://i.imgur.com/LUBhYlu.png) :::info 上圖是多粒度網路的結構,基礎網路為 ResNet-50,作者對 ResNet-50 進行修改,並且從 res_conv4_2 之後劃分為三個獨立分支。 ::: ![](https://i.imgur.com/UPuE1Dq.png) :::success ResNet 網絡結構中有很多 block 組成,每個 block 的構成如上表所示。 ::: ==第一個分支==負責整張圖片的全域性資訊,==第二分支==會將圖片分為上下兩部分提取中粒度的語意資訊,==第三分支==擷取更細粒度的的資訊。前三個低層權重是共享的,但後面的高階層權重獨立,這樣就能像人類認知事物的原理一樣即可以看到行人的整體資訊又可以兼顧到多粒度的區域性資訊。 ![](https://i.imgur.com/rLRhkJ0.png) 上表列出了這些分支的設定。數入影像為 384X128,==Map Size== 是指每個分支輸出的特徵圖大小(ResNet-50 原版會減少特徵:$2^5$)。==Dims== 表示輸出的維度跟特徵數。==Feature== 表示輸出特徵表示的符號。 #### 第一個分支 在最上面的分支中,我們在`res_conv5_1` 塊中採用 $Stride=2$ 的 CNN 進行下采樣,在對應的輸出特徵圖上執行`Global Max-Pooling (GMP)`,並使用有 Batch Normalization 的`1×1 CNN` 和`ReLU` 將 `2048 維` 的特徵 $z^G_g$ 減少到 `256 維` 的特徵 $f^G_g$。該分支在沒有任何分區資訊的情況下學習全域性特徵,因此我們將此分支命名為`全域性分支 Global Branch`。 #### 第二和第三分支 跟第一分支差別在於在 `res_conv5_1` 塊中沒有做下采樣,所以 Part-2 與 Part-3 的特徵是 24x8,原因是為了要強制分配他們去學習細粒度特徵,如果把特徵尺寸做的大一點,相當於訊息可以得到更多一點。 每個分支中的輸出特徵圖在水平方向被均勻的分割成若干條帶,在其上獨立的執行 Global Max-Pooling 去學習區域性特徵,我們稱它為==Part-N 分支==。 三個分支的最後一層特徵都會進行一次 Global Max-Pooling,然後再將特徵由 2048 維降到 256 維,最後 256 維特徵會同時用於 Softmax Loss 和 Triplet Loss 計算。 另外在 2048 維的地方也會新增一個額外的全域性 Softmax Loss,該任務將幫助網路更全面學習圖片全域性特徵。 ### Loss 設計 * Loss 其實只有兩種,一種是 Softmax Loss 另一種則是 Triplet Loss(Tensorflow 有內建)。 * 共有 8 個 Softmax Loss 跟 3 個 Triplet Loss。 * 在 Global 分支,上面的第一塊 Loss 設計,先對 2048 維做 Softmax 在對 256 維做 Triplet Loss,這是對 global 資訊通用的方法,下面兩個 N-Part 的 global 做法也是一樣。 * Softmax 放棄了線性多分類器得 Bias,這有助於提高識別的效能。 ![](https://i.imgur.com/Oimof0g.png) * 候選的三張圖片是由最不像的正樣本和最像的負樣本對建構,即具有 P 個行人且每個人有 K 張圖片的 Batch 中最難分辨的正負樣本對。 ![](https://i.imgur.com/L2mg9Uc.png) * $f_a:$ anchor 原點特徵。 * $f_p:$ positive 樣本特徵。 * $f_n:$ negative 樣本特徵。 * $\alpha:$ 邊距 margin 的 hyperparameter,用來控制內部和內部距離的差異。 ![](https://i.imgur.com/kVP6imT.png) * 至於為何 model 中只有 global 有做 triplet 而下面的細部特徵沒做,原因如下: :::success :memo: 若一張圖片分成從上到下兩部分的時候,最完美的情況當然是上面部分是上半身,下面部分是下半身,但是在實際的圖片中,有可能整個人都在上半部分,下半部分全是背景,這種情況用上、下部分來區分,假設下半部分都是背景,把這個背景放到Triplet Loss 三元損失裡去算這個 Loss,就會使得這個模型學到莫名其妙的特徵。 :speech_balloon: 比如有張圖的背景是個樹,原圖截出來的則是某個人的下半身,而下半身是一個裙子,你讓裙子跟另外一個圖的樹去算距離,無論是同類還是不同類,算出來的距離是沒有任何物理意義或實際意義的。 ::: ### 測試 在測試時,將 256 維的所有特徵串聯在一起作為最終特徵,無需使用 2048 維的特徵,共有 8 個 256 維特徵,$256*8=2048$ 因此最後每張圖的最終特徵為 2048 維度,最後再將兩張圖片做歐式距離去計算行人的相似度。 ## 實作後的模型 ![](https://i.imgur.com/WX2nEy7.jpg) ## 實驗結果 ### 與其他 Paper 的比較 * 這是用 Market-1501 的資料集產出的表格 ![](https://i.imgur.com/Kk9haz9.png) * 這是用 DukeMTMC-reID 的資料集產出的表格 ![](https://i.imgur.com/FnlgcML.png) * 這是用 CUHK03 的資料集產出的表格 ![](https://i.imgur.com/bOOya9l.png) ### 從 Market-1501 中找出的 Top-10 結果,綠色邊框代表同類別,紅色代表找錯的。 ![](https://i.imgur.com/S3f0FaT.png) ### 利用自己模型的概念做出幾種不同變形的實驗 ![](https://i.imgur.com/T2RE2bt.png) ### 利用 Attention 看輸出層的 Feature response maps ![](https://i.imgur.com/YpZcYRp.png)