天天看點

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

加入極市專業CV交流群,與6000+來自騰訊,華為,百度,北大,清華,中科院等名企名校視覺開發者互動交流!更有機會與李開複老師等大牛群内互動!

同時提供每月大咖直播分享、真實項目需求對接、幹貨資訊彙總,行業技術交流。關注 極市平台 公衆号 ,回複 加群,立刻申請入群~

作者:羅浩.ZJU

來源:https://zhuanlan.zhihu.com/p/61831669

本文已由作者授權轉載,未經允許,不得二次轉載

一、前言

行人重識别最近兩三年發展十分迅速,每年都以10~15%的Rank1準确度在增長。當然快速發展的背後離不開Baseline的逐漸提高。早期的Baseline還比較低,大部分工作都在很低的Baseline上完成,是以準确度不高。而2017~2018這個時期,随着Pytorch架構的崛起,很多學者基于Pytorch架構開始調ReID的Baseline,是以性能也就越來越強(很多博士和博士生都做出了巨大貢獻)。2018年暑期我和廖星宇師弟在曠視實習的時候,開源過一個GitHub項目,并且釋出一篇知乎文章:

https://zhuanlan.zhihu.com/p/40514536

基于這個項目,我們最近這個項目進行擴充,完成一個更加強力的ReID Baseline。通過引入一些低消耗的訓練Tricks,使用ResNet50的Backbone,這個Baseline在Market1501可以達到94.5%的Rank1和85.9%的mAP。當然使用更深的Backbone還可以繼續提高性能。值得一提的是,和大量拼接多個local feature的方法取得高準确度的方法不同,我們隻使用了一個global feature。目前代碼已經開源了,歡迎學術界和工業界使用這個Baseline進行論文和産品的研究,comments are welcome!

https://github.com/michuanhaohao/reid-strong-baseline

二、背景

Baseline對于一個領域的研究起着非常重要的作用,但是我們觀察最近一年頂會發表的ReID工作,發現論文之間Baseline的差距特别大。以Market1501為例,極少數工作在90以上的Baseline上開展,而大部分集中在80~90之間,甚至部分工作在80以下的Baseline上開展。而DukeMTMC-ReID更是沒有一個Baseline超過了80的Rank1。我們都清楚,在低的Baseline上面方法漲點更加容易。另外不同的Baseline也很難統一比較不同方法的優劣性。基于這個因素考慮,我們覺得需要統一一個強力的Baseline。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

近一年頂會上ReID工作Baseline性能的統計。左圖為Market1501資料集,右圖為DukeMTMC-reID資料集。

另外我們發現在一些文章之後,會使用一些trick來提升模型的性能,但是在論文撰寫過程中隻是簡單的輕描淡寫一句甚至完全不寫,最後閱讀代碼的時候才發現這些trick。然而對于一些資深的審稿人而言,通常都沒有親自運作過實驗代碼,是以這些trick容易“騙過”審稿人,讓審稿人産生這個方法漲點很明顯的錯覺,然而可能大部分性能的提升是來源于trick而不是算法本身。

此外,最近出現了一些融合多個local feature達到很高性能的工作。我們不可否認,多尺度、多特征的融合本來也是CV領域很重要的一種思路。但是有了類似的工作之後,無意義地、暴力地融合大量的local feature的工作不應該再被會議期刊作為創新研究過度認可。這種工作一來無法給學界提供很有意義的insight,另一方面也并不是業界産品研發過程中喜歡的模型。融合大量的local feature,最後哪怕取得了很高的性能,也不過是“忽悠”外行人罷了。

綜上我們做這個工作的目的有以下幾個:

  • 經過統計發現,最近一年頂會上發表工作的Baseline性能差異性很大,并且大部分處在很低的水準。是以我們希望統一一個強力的Baseline。
  • 我們希望學術界的研究能夠在這個Baseline進行擴充,這樣能夠早日把Market1501、DukeMTMC-reID資料集給刷爆。隻有這些資料集刷爆了,學界才能意識到ReID應該進入下一階段。
  • 我們希望給社群的審稿人一些參考,哪些trick對模型的性能會産生重大的影響,審稿時應該考慮這些trick。
  • 我們希望給業界提供一些訓練trick,在很低的代價下提高模型的性能,加快産品研發的過程。

慶幸的是,過去幾年我們在ReID研究過程中,收集了一些訓練的trick。通過把這些trick引入到現有的Baseline上面,我們得到了一個強力的Baseline,以ResNet50位Backbone,最終在Market1501取得了94.5%的Rank1。當然,為了判斷這些trick是在訓練域上瘋狂overfit,還是增加了模型的泛化能力,我們同時做了cross-domain實驗。

三、Standard Baseline

首先我們來回顧一下标準的Baseline。通常我們使用ResNet50來Backbone,一個mini-batch包含了P個人的各K張圖檔,圖檔經過Backbone之後得到global feature,然後這個特征分别計算一個分類損失(ID loss)和一個triplet loss(batch hard mining)[1]。如果這個baseline調的好話,應該會接近90%的rank1水準。我們得到的結果是87.7%的rank1。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

常用的标準Baseline

四、Our tricks

這一小節我們将會逐個介紹我們使用的trick,包括:Warmup學習率、随機擦除增廣、Label Smoothing、Last Stride、BNNeck和Center loss。

(1) Warmup Learning 

Warmup學習率并不是一個新穎的東西, 在很多task上面都被證明是有效的,在我們之前的工作[1]中也有過驗證。标準Baseline使用是的常見階梯下降型學習率,初始學習率為3.5e-4,總共訓,120個epoch,在第40和70個epoch進行學習率下降。用一個很大的學習率初始化網路可能使得網絡震蕩到一個次優空間,因為網絡初期的梯度是很大的。Warmup的政策就是初期用一個逐漸遞增的學習率去初始化網絡,漸漸初始化到一個更優的搜尋空間。本文使用最簡單的線性政策,即前10個epoch學習從0逐漸增加到初始學習率。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果
map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

(2) Random Erasing Augmentation

Random Erasing Augmentation(REA)[2]是一種随機擦除的資料增廣方法。簡單而言就是在圖像中随機選擇一個區域,打上噪聲mask。這個mask可以是黑塊、灰塊也可以是随機正太噪聲。直接看圖就能明白,具體細節可以看論文。所有參數都是直接利用原論文的參數。随機擦除是一種資料增廣的方式,可以降低模型過拟合的程度,是以可以提升模型的性能。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

随機擦除示例

(3) Label Smoothing

标簽平滑(LS)是論文[3]提出的一種方法,應用于分類任務。傳統的分類任務用的是交叉熵損失,而監督label用的是one-hot向量。因為交叉熵是相對熵在one-hot向量前提下的一種特例。但是one-hot是一種很強的監督限制。為了緩和label對于網絡的限制,LS對标簽做了一個平滑: 

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

舉個例子,加入原始的label是[0,0,1,0,0,0],平滑參數設定為0.1,則平滑之後的label就會變成[0.02,0.02,0.9,0.02,0.02,0.02],計算損失時由交叉熵換回原始的相對熵。經過标簽平滑之後,網絡的過拟合程度也會被抑制一點。

(4) Last Stride

ResNet50 Backbone的每個block最後一層conv都會有一個下采樣的過程,即最後一層conv的stride=2。正常輸入一張256×128的圖像,網絡會輸出一個8×4的feature map。通常而言,增大尺寸一般是能夠提升性能的。一個很簡單的操作就是把最後一個conv的stride改為1,我們把這個stride叫做last stride。這個操作不需要增加任何的參數量,也不改變模型的參數結構,但是會把feature map尺寸擴大為16×8。更大的feature map可以提取到更加細粒度的特征,是以能夠提升模型的性能。

(5) BNNeck

這是這篇文章的核心點。我們常用的Baseline通常會同時使用ID損失和triplet損失一起優化同一個feature。但是在大量前置的研究發現,分類損失其實是在特征空間學習幾個超平面,把不同類别的特征配置設定到不同的子空間裡面。并且從人臉的SphereFace [4]到ReID的SphereReID [5]等工作都顯示,把特征歸一化到超球面,然後再優化分類損失會更好。triplet loss适合在自由的歐式空間裡限制。我們經常觀察到,如果把feature歸一化到超球面上然後再用triplet loss優化網絡的話,通常性能會比不限制的時候要差。我們推斷是因為,如果把特征限制到超球面上,特征分布的自由區域會大大減小,triplet loss把正負樣本對推開的難度增加。而對于分類超平面,如果把特征限制到超球面上,分類超平面還是比較清晰的。對于标準的Baseline,一個可能發生的現象是,ID loss和triplet loss不會同步收斂。通常會發現一個loss一直收斂下降,另外一個loss在某個階段會出現先增大再下降的現象。也就是說這兩個task在更新的過程中梯度方向可能不一緻。但是由于最終都能夠收斂,是以可能容易引起大家的忽視,我相信應該不隻是我們觀察到過這個現象。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

基于以上現象考慮,我們希望找個一種方式,使得triplet loss能夠在自由的歐式空間裡限制feature,而ID loss可以在一個超球面附近限制feature,于是乎就出現了以下的BNNeck。BNNeck的原理也很簡單,網絡global pooling得到的feature是在歐式空間裡的,我們直接連接配接triplet loss,我們把這個feature記作ft 。然後這個feature經過一個BN層得到fi ,經過BN層的歸一化之後, batch裡面fi 的各個次元都被拉到差不多,最後近似地在超球面附近分布。當然不是嚴格意義上的,隻是近似地而已。當然也可以嘗試一下直接用L2 norm得到fi,但應該效果會低于BNNeck。因為L2 norm是一個無參數的強限制,産生的梯度會直接全部傳給ft,其實改變并不大。而BNNeck的話還有BN層的參數可以吸收梯度,相對來說對ft 的影響會弱一點。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

當然還有一些小細節,就是分類的FC的bias我們是關掉了的,這樣可以保證分類的超平面一定經過原點。因為特征也是關于原點對稱分布的。BNNeck是我們從實驗現象的觀察得到的産物,如果有更加嚴謹的理論證明,會更加好。也許我們的推斷是錯的呢。

(6) Center Loss

Triplet loss有個缺點是隻考慮了相對距離,其loss大小與正樣本對的絕對距離無關。舉個例子,假如margin=0.3。正樣本對距離是1.0,負樣本對是1.1,最後loss是0.2。正樣本對距離是2.0,負樣本對是2.1,最後loss還是0.2。為了增加正樣本之間的聚類性能,我們加入了Center loss:

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

由于ReID現在的評價名額主要是cmc和mAP,這兩個都是檢索名額,是以center loss可能看上效果不是那麼明顯。但是center loss會明顯提高模型的聚類性能,這個聚類性能在某些任務場景下是有應用的。比如直接卡門檻值區分正負樣本對tracking任務。 當然center loss有個小trick就是,更新網絡參數和更新center參數的學習率是不一樣的,細節需要去看代碼,很難說清楚。

(7) Modified Baseline

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

Modified Baseline 通過引入前文的各種trick,我們的Modified Baseline就如上圖所示。輸入的圖像經過REA資料增廣,然後經過ResNet50網絡,last stride改為1。然後經過BNNeck,由于center loss也是一種metric loss,是以和triplet loss一起放到BN前面。最後分類損失結合LS一起計算。整個網絡使用warm up學習率去優化。

實驗結果

(1) Influences of Each Trick (Same domain)

我們在Market1501和DukeMTMC-ReID上面分别測試了每個trick的效果,這個結果是在同資料集上訓練測試的。具體數字就叙述了,每個trick都能漲點,其中REA、BNNeck漲點是比較明顯的。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

監督學習實驗結果

(2) Analysis of BNNeck

我們同樣分析了一下BNNeck的結果,對于BN層前後的fi 和ft 兩個feature在測試階段分别使用歐式距離和餘弦距離進行相似度度量。我們主要關注最後兩行的結果,對于靠近ID loss的fi,餘弦距離的度量效果顯著好于歐式距離。也說明分類損失限制的feature更加适合餘弦距離。當然四種配合方式都顯著高于不用BNNeck的結果。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

BNNeck結果分析

(3) Influences of Each Trick (Cross domain)

為了觀察這些trick是在訓練域上overfit了,還是真正的增加了網絡的泛化能力,我們還做了cross domain的實驗。即在一個資料集上訓,在另外一個資料集上測。結果顯示REA會大大的降低跨域的性能,其他的trick都還是有一定程度的漲點的。最後我們删除REA,隻使用其他五個trick,M→D的結果達到了41.4的rank1。目前M→D的SOTA方法也就50左右的水準,這已經是個不錯的Baseline了。當然也值得深思,為什麼REA資料增廣會降低跨域性能。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

Cross domain試驗結果

(4) Comparison of State-of-the-Arts

我們把Baseline的結果直接和SOTA的方法進行比較,除了少數幾個能夠達到95+的結果以外,沒有任何方法的結果能夠超越我們。值得一提的是,我們僅僅使用一個簡單global feature,加了一層BN而已。目前主流能夠達到93+的方法都concatenate多個local feature。騰訊的金字塔結構更是融合21個不同尺度的local feature。在所有隻使用一個global feature的方法裡,我們的性能是大大領先的。而且我們的訓練代價非常小,就是加了一些trick而已。(是以也驗證了深度學習領域的那句名言:天下萬物,多為調參?)

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

State-of-the-arts

(5) Batch & Image Size

我們發現不同論文中的batch size和image size都不一樣,是以我們也測試了這兩個參數的影響。結果如下,簡單的概括一下就是:Batch size呈現一種大batch效果更好的趨勢,但是不是特别明顯;而Image size對于global feature性能沒有太大的影響。 我們推測是,batch越大,batch hard mining挑選的樣本也就越難,是以網絡性能越好。而訓練圖像的尺寸是128×64,不管你用多大的image size,都不增加額外的資訊。是以隻要大于128×64,image size就對性能沒有太大的影響。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

Batch size

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

Image size

(6) Backbone

在我們開源了代碼之後,有好心人幫我們擴充了Backbone,包括ResNet、SENet、SeResNet等等。大緻結果呈現網絡越深,效果越好,這也符合正常的結論。其中SeResNeXt101取得了95%的rank1和88%的mAP,基本已經相當高了。ResNet152在Market1501上有點反人類,可能是資料集太小,并且比較簡單,是以overfit了吧。

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

不同的Backbone結果

6、結語

這篇論文給出了一個強力的Baseline,我們不希望這個工作成為一種暴力刷點的工作,而是希望這個Baseline能夠促進ReID領域的發展。無論是學術界還是工業界,隻要能夠使用這個Baseline做有用的研究或者産品,我們就覺得這個工作是有意義的。 這個工作離不開 古有志、 Sh erlock、小賴sqLai 等一起付出。這個工作是我和師弟們在寒假跑了幾百組實驗總結出的結果,另外mxnet版本可以看小賴的文章:如何基于gluon訓練一個強有力的Reid Baseline(https://zhuanlan.zhihu.com/p/42345854) 最後說一點個人的看法,ReID這兩年發展這麼快,但是比起人臉技術而言,落地的應用少了太多。其實并不是ReID的模型不夠好,不是資料集上準确度不夠高,而是比起人臉任務,ReID的場景更加複雜,有一些本質的問題沒有解決。最簡單最迫切的,遮擋問題和不可見光的問題。遮擋問題可以使得幾乎現有所有的ReID模型失效,而結構光的人臉識别準确度也還不錯。但是基于不可見光的ReID,那隻能說是慘不忍睹。業界的資料資源開源不出來,學界的拿不到資料就做不了研究,這也是目前學界和業界研究有點脫離的一個因素。我個人呼籲有志于入坑ReID研究的人,不妨多從實際落地的角度思考,到底哪些是阻礙ReID應用的問題。針對這些硬核問題,去做有挑戰的研究。Market1501差哪幾個百分點真的不是特别重要。 當然我們會抽空繼續維護我們的項目,也歡迎大家給我們提供trick、改進、意見或者是指正批評,同時歡迎Valse2019和CVPR2019現場交流,comments are welcome! 參考文獻 [1] Hermans, Alexander, Lucas Beyer, and Bastian Leibe. "In defense of the triplet loss for person re-identification."arXiv preprint arXiv:1703.07737(2017). [2] Zhong, Zhun, Liang Zheng, Guoliang Kang, Shaozi Li, and Yi Yang. "Random erasing data augmentation."arXiv preprint arXiv:1708.04896(2017). [3] C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 2818–2826, 2016. [4] Liu, Weiyang, Yandong Wen, Zhiding Yu, Ming Li, Bhiksha Raj, and Le Song. "Sphereface: Deep hypersphere embedding for face recognition." InProceedings of the IEEE conference on computer vision and pattern recognition, pp. 212-220. 2017. [5] Fan, Xing, Wei Jiang, Hao Luo, and Mengjuan Fei. "Spherereid: Deep hypersphere manifold embedding for person re-identification."Journal of Visual Communication and Image Representation (2019): 51-58. -End-

*延伸閱讀

  • ICCV 2019 | 北郵提出高階注意力模型,大幅改進行人重識别SOTA精度
  • 行人重識别算法優化技巧:Bags of Tricks and A Strong Baseline

  • 資料集|更大的行人重識别測試集 Market-1501+500k

CV細分方向交流群

添加極市小助手微信(ID : cv-mart),備注:研究方向-姓名-學校/公司-城市(如:目标檢測-小極-北大-深圳),即可申請加入目标檢測、目标跟蹤、人臉、工業檢測、醫學影像、三維&SLAM、圖像分割、OCR、姿态估計等極市技術交流群(已經添加小助手的好友直接私信),更有每月大咖直播分享、真實項目需求對接、幹貨資訊彙總,行業技術交流,一起來讓思想之光照的更遠吧~

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

△長按添加極市小助手

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果

△長按關注極市平台

覺得有用麻煩給個在看啦~  

map指派給另一個map_可達94.5%Rank1和85.9%mAP!一個更加強力的ReID Baseline一、前言二、背景三、Standard Baseline四、Our tricks實驗結果