今天解讀港中文商湯聯(lián)合實(shí)驗(yàn)室沈巖濤老師在CVPR2018和ECCV2018上發(fā)表的兩篇關(guān)于Graph+Person reid的文章:
CVPR2018:Deep Group-shuffling Random Walk for Person Re-identification
ECCV2018:Person Re-identification with Deep Similarity-Guided Graph Neural Network
Motivation and Related Work
person reid這個(gè)任務(wù)是為probe圖像在gallery圖片集中尋找屬于同一個(gè)人的圖片驹吮,所以通常的做法都是考慮probe和gallery之間的關(guān)系口四,但有時(shí)候probe和gallery的差別太大,比如一個(gè)正面的人和一個(gè)背面的人巩趁,假如我有一個(gè)側(cè)面的人的圖片,跟兩者都很像谨胞,就有可能用這個(gè)中間圖片將兩者關(guān)聯(lián)起來(lái)扎阶。在這之前其實(shí)也有人提出過(guò)一些方法,比如CVPR2017:Re-ranking person re-identification with k-reciprocal encoding. 先計(jì)算出gallery圖片之間的相似度上沐,將較相似的圖片的rank拉近皮服。
但這些方法大多是將這種關(guān)系抽取和利用作為一個(gè)后處理的過(guò)程,對(duì)圖像模型的訓(xùn)練起不到幫助参咙。并且對(duì)gallery之間的相似度提取大多是基于已經(jīng)訓(xùn)練好的圖像模型龄广,加上無(wú)監(jiān)督的聚類方法,提取gallery圖片之間的相似度關(guān)系蕴侧,這種無(wú)監(jiān)督方法較弱择同,不能充分利用數(shù)據(jù)集中的監(jiān)督信息。
因此這兩篇文章開(kāi)始將gallery之間的關(guān)系(下面簡(jiǎn)稱G2G)融入到圖像模型的訓(xùn)練里净宵。Graph由許多節(jié)點(diǎn)和邊構(gòu)成敲才,在Reid問(wèn)題里,節(jié)點(diǎn)就是一個(gè)個(gè)的人的圖像择葡,邊就是圖像之間的相似度紧武。利用一個(gè)batch中的所有圖像在關(guān)系圖上的關(guān)聯(lián),提供更多的監(jiān)督信號(hào)刁岸,將模型訓(xùn)練的更好脏里。之所以說(shuō)更多的監(jiān)督信號(hào),是因?yàn)橐酝覀円粋€(gè)batch的label只有batch_size對(duì)樣本之間的相似關(guān)系虹曙,但將batch中的所有圖片看成batch size個(gè)圖之后迫横,每個(gè)圖之間有batch gallery size x batch gallery size個(gè)相似度關(guān)系可以學(xué)習(xí),就引入了更多的監(jiān)督信號(hào)酝碳。
Overview
這兩篇文章是同一班人馬寫的矾踱,所以其實(shí)整體結(jié)構(gòu)上都很像,我們結(jié)合起來(lái)分析:
- DGRW是用Random Walk的方式將G2G的相似度信息用來(lái)更新P2G的相似度關(guān)系疏哗,在反向傳播時(shí)通過(guò)G2G這個(gè)很多相似度關(guān)聯(lián)的圖對(duì)原來(lái)的圖像模型提供更多的訓(xùn)練呛讲。
- SGGNN是用G2G的相似度關(guān)系對(duì)P2G的相似度特征進(jìn)行修正,從而得到更好的相似度特征,并且也通過(guò)G2G之間的大量關(guān)聯(lián)提供了更多的監(jiān)督信號(hào)贝搁。
Deep Group-shuffling Random Walk
與其他Reid方法一樣吗氏,首先訓(xùn)練一個(gè)圖像模型提取圖像特征,對(duì)特征計(jì)算相似度可以得到probe中所有圖片與gallery中所有圖片之間的相似度雷逆,與其他Reid方法不同弦讽,但與reranking相同的是,我們也可以計(jì)算出所有g(shù)allery圖片之間的相似度膀哲。給定一張probe圖片往产,它和所有g(shù)allery之間的相似度向量為y,所有g(shù)allery之間的相似度矩陣為W某宪,我們將一張probe圖片和所有g(shù)allery圖片合起來(lái)看成一個(gè)圖仿村,根據(jù)random walk的思想,probe圖片這個(gè)節(jié)點(diǎn)walk到第j張gallery圖片的概率是yj兴喂,接著蔼囊,從probe節(jié)點(diǎn)出發(fā),經(jīng)過(guò)其他節(jié)點(diǎn)k瞻想,再到達(dá)gallery圖片j的概率是yk * Wkj压真,那么,從probe節(jié)點(diǎn)出發(fā)蘑险,走兩步(包含了所有中間節(jié)點(diǎn)的可能)到達(dá)圖片j的概率就是:
∑k=1n Wkj*yk
到達(dá)所有圖片j的概率拼成一個(gè)新的向量,我們就可以得到:
y(t+1) = Wy(t)
論文里講t拓展到了無(wú)窮大岳悟,并加入了權(quán)重因子λ對(duì)walk前后的概率進(jìn)行了平衡佃迄,最終化簡(jiǎn)為了這樣的形式:
但根本的道理就是上面所述的Random walk思想。
這樣我們就得到了一組更好的P2G相似度贵少,并且我們反向傳播的時(shí)候呵俏,這組相似度的梯度會(huì)傳到W矩陣上,W矩陣是由前邊圖像模型得出的滔灶,也就會(huì)傳到前面的模型上普碎,從而對(duì)模型提供更多的監(jiān)督信號(hào)。
論文里還有一個(gè)創(chuàng)新點(diǎn)是录平,將視覺(jué)特征分成了K個(gè)group麻车,每個(gè)group的特征都可以單獨(dú)拿出來(lái)用,這樣我們就可以做K個(gè)上邊提到的random walk斗这,于是監(jiān)督信號(hào)更多了动猬,同時(shí)因?yàn)橐曈X(jué)特征被拆成了K份,每一份都只是原特征的一小部分表箭,相當(dāng)于dropout了一部分信息赁咙,也能很大程度上防止過(guò)擬合。但其實(shí)這個(gè)方法并不見(jiàn)得比dropout優(yōu)雅,實(shí)驗(yàn)效果也差不多彼水。
實(shí)現(xiàn)上還有一個(gè)小的細(xì)節(jié)崔拥,把所有圖片構(gòu)成一個(gè)graph的話,開(kāi)銷太大了凤覆,所以訓(xùn)練時(shí)graph其實(shí)只是所有圖片的一個(gè)子圖握童,
- 首先每個(gè)batch有64個(gè)人,每個(gè)人有4張圖叛赚,這樣batch size就是256(流下了貧窮的淚水)澡绩,
- 訓(xùn)練時(shí),首先有256個(gè)softmax loss俺附,
- 然后對(duì)于64個(gè)人肥卡,每個(gè)人的4張圖中取1張做probe,3張做gallery事镣,galley是所有人一起用的(這樣就有正樣本也有負(fù)樣本)
- 這樣W矩陣就是643x643步鉴,對(duì)角線為0,于是就有192*192個(gè)g2g相似度璃哟,同時(shí)有64個(gè)p2g的相似度氛琢。這些相似度可以用真實(shí)標(biāo)簽約束,也可以直接用feature求出來(lái)随闪,論文里是用feature求的阳似;
- 為每個(gè)人得到更新后的p2g向量,對(duì)這64個(gè)長(zhǎng)度為192的p2g向量加二分類loss就完成訓(xùn)練模型的搭建了
- 測(cè)試時(shí)先算所有p2g相似度铐伴,然后對(duì)每個(gè)probe撮奏,選擇top75個(gè)gallery組成G2G圖,用這個(gè)G2G更新P2G相似度当宴,從而獲得更準(zhǔn)的ranking結(jié)果
Deep Similarity-Guided Graph Neural Network
這篇文章跟上一篇很多地方是一樣的畜吊,我們來(lái)講講不同的地方。
Graph and node
這篇文章聲稱每個(gè)節(jié)點(diǎn)是一個(gè)P2G的圖像對(duì)户矢,但在討論中玲献,圖里的P都是相同的,所以我覺(jué)得可以認(rèn)為這其實(shí)也是一個(gè)G2G的圖梯浪,只不過(guò)每個(gè)節(jié)點(diǎn)的value變成了SiameseCNN算出來(lái)的P2G的相似度向量di捌年,我們用通常的Siamese二分類loss和softmax多分類loss約束di,同時(shí)我們希望能用G2G的相似度矩陣W來(lái)進(jìn)一步修正di驱证,
feature update
考慮一下用類似random walk的模式來(lái)更新相似度向量::
dit+1=(1-α)dit+1+αWdit
但dit畢竟不是相似度的結(jié)果向量延窜,而是相似度特征向量,所以上面這個(gè)式子其實(shí)是不成立的抹锄,于是進(jìn)入拼湊模式逆瑞,文中定義了一個(gè)消息向量:
ti=F(di)
這個(gè)F就是d到t的映射荠藤,
如圖,通過(guò)兩層FC+BN+ReLU获高,將相似度特征d映射為一個(gè)能夠根據(jù)相似度矩陣W修正特征向量的消息向量t哈肖,由于權(quán)重是可訓(xùn)練的,所以下面這個(gè)式子就成立了:
文中說(shuō)W*t得到的結(jié)果是fusion feature念秧,其實(shí)我覺(jué)得這種G2G相似度和特征的fusion沒(méi)有Random Walk來(lái)得優(yōu)雅淤井,然后用fusion feature和原來(lái)的feature做加權(quán)和,其實(shí)這種加權(quán)和的方式來(lái)修正原來(lái)的feature也值得商榷摊趾。不過(guò)這種update形式也是借鑒自其他的Graph Neural Network方法:
這里邊的h往往是無(wú)監(jiān)督的币狠,而SGGNN的W是可以有監(jiān)督訓(xùn)練得到的,就比其他GNN的方法要好一點(diǎn)砾层。
實(shí)現(xiàn)細(xì)節(jié)上漩绵,與DGRW類似
- 選擇48個(gè)人,每個(gè)人有4個(gè)圖肛炮,共192張圖
- 每個(gè)人的4張圖里止吐,一張做probe,其他做gallery侨糟,gallery是所有人共用的碍扔,于是有Mx(K-1)=144個(gè)gallery圖片(論文里的順序應(yīng)該是寫反了)
- 用siamese CNN算出48144個(gè)P2G相似度,144144個(gè)G2G相似度
- 為每個(gè)probe取top100個(gè)gallery圖片構(gòu)成G2G圖秕重,于是W矩陣大小為100x100
- 用W矩陣更新p2g相似度特征不同,對(duì)相似度特征加dense層再做二分類loss約束即可
- 測(cè)試與DGRW基本相同,區(qū)別只在于更新的是相似度f(wàn)eature而非相似度結(jié)果悲幅。
Experiment
跟別的方法對(duì)比就不用看了套鹅,我們來(lái)看Ablation Study
DGRW
baseline rank1就91%了我還能說(shuō)什么,流下了不會(huì)調(diào)參的淚水汰具,不過(guò)看baseline+triplet居然還掉了,說(shuō)明他們的hack泛化能力其實(shí)不強(qiáng)菱魔,另外針對(duì)兩個(gè)主要的創(chuàng)新點(diǎn)留荔,group shuffle也沒(méi)有比dropout效果要好多少,random walk也沒(méi)有比reranking好多少澜倦。不過(guò)有一個(gè)現(xiàn)象聚蝶,mAP比top1提高的多,說(shuō)明這種基于g2g關(guān)系的方法藻治,通常是用得分較高的gallery圖像把gallery中得分比較低的對(duì)象拉上來(lái)了碘勉。
SGGNN
結(jié)果也跟random walk類似。
總結(jié)
將graph之間的關(guān)聯(lián)融合到神經(jīng)網(wǎng)絡(luò)訓(xùn)練中提供了更豐富的監(jiān)督信號(hào)桩卵,基于Graph的方法雖然結(jié)果上提升不明顯(可能是baseline太強(qiáng)了吧)验靡,但創(chuàng)新性是有的倍宾。