當前位置:
首頁 > 知識 > CVPR2018:基於時空模型無監督遷移學習的行人重識別

CVPR2018:基於時空模型無監督遷移學習的行人重識別

本文為你解讀CVPR2018 TFusion

解決的目標是跨數據集的Person Reid

屬於無監督學習

方法是多模態數據融合 + 遷移學習

實驗效果上,超越了所有無監督Person reid方法,逼近有監督方法,在部分數據集上甚至超越有監督方法

一、Task

行人重識別(Person Re-identification)是一個圖像檢索問題,給定一組圖片集(probe),對於probe中的每張圖片,從候選圖片集(gallery)中找到最可能屬於同一個行人的圖片。

行人重識別數據集是由一系列監控攝像頭拍攝得到,並用檢測演算法將行人摳出,做行人的匹配。在這些數據集中,人臉是十分模糊的,無法作為匹配特徵,而且由於多個攝像頭拍攝視角不同,同個人可能被拍到正面,側面,背面,具有不同的視覺特徵,因此是一個比較難的圖像匹配問題。常用數據集有很多,可以在這個網站查到。


二、Related Work

行人重識別問題有以下幾種常見的解決方案:

1、基於視覺的行人重識別

這類方法通常提取行人圖像特徵,對特徵進行距離度量,從而判斷是否是同一個人。

2、有監督學習

這類方法通常需要提供行人圖片和行人id標籤(person1,person2等),訓練模型,提取圖像特徵,根據兩張圖特徵的距離大小(可以用餘弦距離,歐氏距離之類的計算),為probe中的每張圖和gallery中的每張圖計算其相似度,根據相似度將gallery中的圖片排序,排序越高越可能為同一個人。

這方面的論文代表有TOMM2017: A Discriminatively Learned CNN Embedding for Person Re-identification,我們採用的基礎圖像分類器就是基於這篇論文用Keras實現的,後面細講。

3、無監督學習

在CVPR2018之前,Person Reid領域正式發表的無監督工作只有CVPR2016的UMDL:Unsupervised Cross-Dataset Transfer Learning for Person Re-identification,基於字典學習方法,在多個源數據集上學習跨數據集不變性字典,遷移到目標數據集上。然而準確率依然很低。

4、結合攝像頭拓撲的行人重識別

行人圖片是攝像頭拍到的,攝像頭之間有一定的距離,行人的移動有一定的速度限制,因此行人在攝像頭間的移動時間就會呈現出一定規律,比如,AB攝像頭間有10米,人行走速度2m/s,如果AB攝像頭在1s內捕捉到了兩張圖片,則這兩張圖片不可能是同一個人的,因此我們可以利用攝像頭拓撲約束來提升行人重識別的準確率。

然而,這類方法往往有以下缺陷:

有些方法需要預先知道攝像頭拓撲(AB攝像頭之間的距離)

有些方法可以根據拍攝到的圖像數據推斷出攝像頭拓撲,但是需要圖像有標註(是否是同一個人)

即使推斷出攝像頭拓撲,與圖像的融合結果依然很差

5、遷移學習

遷移學習現在是深度學習領域很常用的一個套路了,在源數據集上預訓練,在目標數據集上微調,從而使得源數據集上的模型能夠適應目標場景。這方面的論文代表有前面講的UMDL,和Deep transfer learning person re-identification,然而,目前的遷移學習大多需要標籤,而無監督遷移學習效果又很差,仍然有很大提升空間。

更多關於Person Reid的內容可以看一下我在博客寫的幾篇調研


三、Motivation

現有的行人重識別數據集中是否包含時空信息?包含的話是否存在時空規律?

缺乏兩個時空點是否屬於同一行人這種標籤時,如何挖掘時空信息,構建時空模型?

如何融合兩個弱分類器?有監督的融合有boosting演算法可以用,無監督呢?

在缺乏標籤的條件下,如何進行有效的遷移學習?

對應有三個創新點

無監督的時空模型構建

基於貝葉斯推斷的時空圖像模型融合

基於Learning to Rank的遷移學習

接下來詳細解析我們的方法。

四、時空模型

數據集中的時空規律

所謂時空模型,即一個攝像頭網路中,行人在給定兩個攝像頭間遷移時間的分布。

我們看遍所有Reid數據集,發現有三個數據集有時空信息,Market1501, GRID, DukeMTMC4ReID,其中,DukeMTMC-ReID是2017年後半年才出來的,時間比較倉促在論文中就沒有包含跟它相關的實驗。Market1501是一個比較大的Person Reid數據集,GRID是一個比較小的Person Reid數據集,並且都有六個攝像頭(GRID中雖然介紹了8個攝像頭,實際上只有6個攝像頭的數據)。

例如,Marke1501中一張圖片的時空信息是寫在圖片名字中的:

0007代表person id,

c3代表是在3號攝像頭拍到的,也就是空間信息,

s3代表屬於第3個時間序列(GRID和DukeMTMC中沒有這個序列的信息,在Market1501中,不同序列的屬於不同起始時間的視頻,同一系列不同攝像頭的視頻起始時間相近),

077419為幀號,也就是時間信息。

我想吐槽的是,其實時空信息是非常容易保存的,只要知道圖片是在什麼時候,哪台攝像機上拍攝,就能夠將時空信息記錄並有效利用起來,希望多模態數據融合得到更多重視之後,做數據集的人能夠更加重視可保存的信息吧。

我們首先通過Market1501中的真實行人標籤,計算訓練集中所有圖片對對應的時空點對對應的遷移時間,這裡可視化了從攝像頭1出發的行人,到達其他攝像頭需要的時間的分布。

可以看到,到達不同目標攝像頭的峰值位置不同,其中從攝像頭1到攝像頭1,意味著被單個攝像頭拍到連續多幀,所以峰值集中在0附近,從攝像頭1到攝像頭2,峰值集中在-600附近,意味著大部分人是單向從攝像頭2運動到攝像頭1,等等,並且,說明這個數據集中存在顯著可利用的時空規律。

無監督的時空模型構造

我們將遷移時間差命名為delta,這樣說起來方便一點。

如果我們能夠統計一個數據集中的所有delta,給定一個新的delta(兩個新的圖片對應的兩個時空點算出來的),我們能夠用極大似然估計,用在這個delta前後一定範圍(比如100幀)的delta的出現頻率(=目標範圍delta數量/總的delta數量),作為新時間差出現的概率,也就是兩個時空點是同一人產生的概率。

但是!問題是我們在目標場景上往往是沒有行人標記數據的!

於是我們就思考,

我們能不能根據兩個時空點對應的兩張圖是否屬於同一個人,來決定兩個時空點是否屬於同一個人?

而兩張圖是否屬於同一個人,其實是一個圖像匹配的二分類問題,我們可以用一些視覺模型來做,

但是這種視覺模型往往是需要有標籤訓練的,無標籤的視覺模型往往比較弱

視覺模型弱沒關係!我們相信跟時空模型結合就能變成一個強大的分類器!要有信仰!

只要我們能無監督地把時空模型構造出來,結合弱的圖像分類器,因為加了時空信息,一定能吊打其他無監督模型!

思路有了,實現就很自然了,

我們先在其他數據集上(於是我們就可以說這是一個跨數據集的任務了)預訓練一個卷積神經網路,

然後用這個卷積神經網路去目標數據集上提特徵,

用餘弦距離算特徵相似度

將相似度排在前十的當做同一個人

用這種「同一個人」的信息+極大似然估計構造時空模型

圖像分類器上,我們這裡用的是LiangZheng的Siamese網路,他們的源碼是用MATLAB實現的,我用Keras復現了一把:

時空模型的極大似然估計可以看這裡

聰明的讀者應該會注意到,這個圖像分類器是在其他數據及上預訓練的,由於特徵空間中數據分布不同,這個圖像分類器太弱了,對於目標數據集來說,前十里會有許多錯的樣本,導致構造出來的時空模型和真實的時空模型有偏差

可以看到,構造的模型跟真實的模型還是有些差別的,但是峰值位置還是差不多,一定程度上應該還能用,但我們還是希望構造的模型盡量接近真實模型的。

於是我們開始思考

導致模型出現偏差的因素是什麼?是錯誤的樣本對

如何去掉錯誤樣本對的影響?我們能不能把錯誤的樣本對分離出來?沒有標籤咋辦?

(靈光一閃)錯誤的樣本不就跟我瞎選的差不多?那我是不是可以隨機地選樣本對,算一個隨機的delta分布出來

將估算的delta分布去掉隨機的delta分布,剩下的多出來的部分,就是由於正確的行人遷移產生的,不就得到真實的delta分布了?

於是我們可視化了一下隨機的delta分布

可以發現,

確實與估計模型和真實模型不同

存在較多抖動

這種隨機的時間差分布也呈現出一定的集中趨勢,其實體現的是採樣的時間差分布,如,在1號攝像頭採的圖片大多在某個時間段,2號攝像頭也大多在這個時間段采,但3號攝像頭的圖片大多是在其他時間段採到的。

考慮到時間差的頻率圖有這麼多的抖動,我們在計算某個區域的時間差時,加上了均值濾波,並且做了一定區域的截斷,包括概率極小值重置為一個最小概率值,時間差極大值重置為一個最大時間差。

接下來,應該怎麼把錯誤的模型從估計的模型濾掉呢?又怎麼將時空模型和圖像模型結合呢?

首先看時空模型和圖像模型的融合, 我們有一個視覺相似度,一個時空概率,一個直觀的想法是,聯合評分可以是,如果要再抑制隨機的評分Prandom,可以做個除法,就是

這樣一看,像不像條件概率公式?於是我們開始推導(大量公式預警):

先看看我們手上的資源:現在我們有一個弱的圖像分類器,可以為兩張圖片提取兩個視覺特徵vi, vj, 有兩個時空點,空間特徵為兩個攝像頭編號ci, cj,時間特徵為兩張圖片拍攝的時間差?ij,假定兩張圖對應的person id分別為Pi, Pj,那麼我們的目標就是求,在給定這些特徵的條件下,兩張圖屬於同一個人的概率

(論文公式6)

由條件概率公式,可得

由時空分布和圖像分布的獨立性假設(長得像的人運動規律不一定像),我們可以拆解第一項,得到

其中是一個不好求的項,我們試著把它換掉,先交換順序(乘法交換律)

由條件概率公式可得

可以看到

可理解為兩張圖從視覺特徵相似度上判定為同一人的概率

就是兩個時空點是同一個人移動產生的概率

再次利用時空分布和圖像分布的獨立性假設,拆解分母

約掉

也就是

= 視覺相似度*同一人產生這種移動的概率/任意兩個時空點組成這種移動的概率

這也就是論文公式(7),也就是我們一開始的猜想:

看著好像很接近我們手頭掌握的資源了,但是,

我們並不知道理想的兩張圖的視覺相似度

,只有我們的圖像分類器判定的兩張圖的視覺相似度

我們並不能計算同一人產生這種移動的真實概率

,我們並不能計算同一人產生這種移動的真實概率

我們倒是確實有數據集中任意兩個時空點產生這種移動的概率P(ci,cj,?ij)

於是我們想用去近似,得到

看到這裡其實就大致理解我們的融合原理了,實際上我們大部分實驗也是用的這個近似公式算的。

實現上,先模擬兩個時空模型,計算圖像相似度,然後代入公式求融合評分,具體可以實現看我GitHub

但這個近似能不能做呢?我們來做一下誤差分析(大量推導,不感興趣可以跳到接下來出現的第二張圖,不影響後面的理解,只是分析一波會更加嚴謹)。

實際上,誤差是由圖像分類器引入的,假設圖像分類器判定兩張圖是同一個人的錯判率為Ep,圖像分類器判定兩張圖不是同一人的錯判率為En,

則有,

(論文公式1、2)

則的關係可以表示為

推導,Pr(ci,cj,?ij|Pi=Pj) 和Pr(ci,cj,?ij|Si=Sj) 的關係(這個沒法像視覺相似度那樣直接推導,因為因果關係不同)

同樣可以得到

聯立上面兩個式子解方程,消掉可以得到

(論文公式5)

其中有個新概念Pr(ci,cj,?ij|Si≠Sj) ,意味著圖像分類器認為不是同一個人的時候,這種時空點出現的概率,實現上也不難,統計視覺相似度top10以後的點對應的時間差,作為反時空概率模型即可。

我們把兩個近似(公式5和公式8)代進公式7,

可以得到

(論文公式9)

其中,

,視覺相識度

,正時空概率模型

,反時空概率模型

分母為為隨機概率模型

以上四項都是可以從無標籤目標數據集中結合圖像分類器求解到的,並且,當(意味著圖像分類器完全準確),這個公式可以退化為近似解:

到這裡,你是不是以為我們就可以用公式9算融合評分了?非也,公式9中,還有個問題:是未知的。如果想要正兒八經地算,要求目標數據集有標籤,然後我們用圖像分類器先算一遍,數數哪些算錯了,才能把算出來。因此我們用兩個常數α和β分別替代,整個模型的近似就都集中在了這兩個常數上。

在論文Table1,2,3,4,Fig6相關的實驗中,α=β=0,並且,在Fig5中,我們設置了其他常數來檢查模型對於這種近似的敏感性

可以看到,雖然α和β較大時,準確率會有所下降,但是仍然能保持一定的水準,當你看到純圖像分類器的準確率之後,還會發現融合模型的準確率一直高於純圖像分類器。

你可能注意到了,圖中α+β都是小於1的,這是因為,只有當Ep+En

於是我們得到了一個由條件概率推斷支撐的多模態數據融合方法,稱為貝葉斯融合

看一眼融合得到的時空分布圖:

再從數據上看一眼融合的模型有多強:

可以看到,

跨數據集直接遷移效果確實很差

融合之後的準確率Rank1準確率變成2-4倍

說明這種融合方式是確實行之有效的。

基於Learning to Rank的遷移學習

前面講到圖像分類器太弱了,雖然融合後效果挺好的(這個時候我們其實想著要不就這樣投個NIPS算了),但是如果能提升圖像分類器,融合的效果理論上會更好。而現在我們有了一個強大的融合分類器,我們能不能用這個融合分類器為目標數據集的圖片打標籤,反過來訓練圖像分類器呢?

一個常用的無監督學習套路就是,根據融合評分的高低,將圖片對分為正樣本對和負樣本對(打偽標籤),然後餵給圖像分類器學習。

我們也嘗試了這種做法,但是發現,數據集中負樣本遠遠多於正樣本,融合分類器分對的負樣本是挺多的,但是分對的正樣本超級少,分錯的正樣本很多,錯樣本太多,訓練出來效果極差,用上一些hard ming的技巧也不行。

於是我們思考,

我們無法提供正確的01標籤,分類器就只能學到許多錯的01標籤

我們是否可以提供一些軟標籤,讓分類器去學習回歸兩個樣本之間的評分,而不是直接學習二分類的標籤?

這是一個圖像檢索問題,我們能不能用信息檢索中的一些學習方法來完成這個任務?

於是自然而然地想到了Learning to Rank


Ranking

問題定義:給定一個對象,尋找與其最相關的結果,按相關程度排序

常用方法:

Point-wise:每一個結果算一個絕對得分,然後按得分排序

Pair-wise:每兩個結果算一下誰的得分高,然後按這個相對得分排序

List-wise:枚舉所有排列情況,計算綜合得分最高的一種作為排序結果

綜合得分往往需要許多複雜的條件來計算,不一定適用於我們的場景,所以排除List-wise,Point-wise和Pair-wise都可以採用,得分可以直接用融合評分表示,Pair-wise可以用一組正序樣本,一組逆序樣本,計算兩個得分,算相對得分來學習,有點Triplet loss的意味,於是在實驗中採用了Pair-wise方法。

Pair-wise Ranking

給定樣本,其排序得分為

給定樣本,其排序得分為

定義,如果0"> 說明的排名高於

將這個排名概率化,定義

,為xi排名高於xj的概率。

對於任何一個長度為n的排列,只要知道n-1個相鄰item的概率,就可以推斷出來任何兩個item的排序概率

例如,已知

RankNet: Pair-wise Learning to Rank

RankNet是Pair-wise Learning to Rank的一種方法,用一個神經網路去學習輸入的兩個樣本(還有一個query樣本)與其排序概率(上面定義的)的映射關係。

具體到我們這個問題里

給定查詢圖片A,給定待匹配圖片B和C

用神經網路預測AB之間的相似度Sab為B的絕對排序得分,計算AC之間的相似度Sac為C的絕對排序得分

具體的神經網路用Keras實現並可視化出來長這樣:

輸入是三張圖片,分別用Resnet52提取特徵並flatten

flatten之後寫一個Lambda層+全連接層算特徵向量帶權重的幾何距離,得到score1和score2

用score1和score2和真實分數算交叉熵Loss(下面講)

則B排序高於C的概率為:

用預測概率Pbc去擬合真實的排序概率,回歸損失用預測概率和真實概率的交叉熵表達

網路實現超級簡單,主要麻煩在樣本三元組構造

Transfer Learning to rank

整個Learning to rank過程如圖

我們用融合分類器為目標數據集中的圖片對評分,構造三元組輸入RankNet,其中Si是查詢圖,Sj是在與Si融合相似度top1 - top25中抽取的圖片,Sk是在與Si融合相似度top25 - top50中抽取的圖片,餵給RankNet學習,使得resnet52部分卷積層能充分學習到目標場景上的視覺特徵。

Learning to Rank效果

對比Learning to Rank前的效果,準確率都提升了,GRID數據集上提升尤為明顯。


對比SOA有監督方法

一方面,我們將上面的跨數據集無監督演算法應用在GRID和Market1501兩個數據集上,與當前最好的方法進行對比,另一方面,我們還測試了有監督版本的效果,有監督即源數據集與目標數據集一致,如GRID預訓練->GRID融合時空,效果如下:

GRID

由於在這個數據集上時空規律十分明顯(正確時間差都集中在一個很小的範圍內),可以過濾掉大量錯誤分類結果,所以準確率甚至碾壓了全部有監督方法。

Market1501

在Market1501這個數據集上,無監督的方法逼近2016年的有監督方法(我們的圖像分類器只是一個ResNet52),有監督的方法超越2016年的有監督方法,雖然比不上2017年的有監督方法,但是如果結合其他更好的圖像分類器,應該能有更好的效果。


對比SOA無監督方法

我們向UMDL的作者要到了代碼,並復現了如下幾組跨數據集遷移實驗

其中,UMDL遷移到Market1501的結果與悉尼科技大學hehefan與LiangZheng復現出來的效果差不多,所以我們的復現是靠譜的。

可以看到,無監督的TFusion全面碾壓UMDL。

更多詳細實驗結果可以到論文中細看。


多次迭代遷移學習

回顧一下整個架構,我們用圖像分類器估算時空模型,得到融合模型,用融合模型反過來提升圖像分類器模型,圖像分類器又能繼續增強融合模型,形成一個閉環,理論上這個閉環循環多次,能讓圖像分類器無限逼近融合分類器,從而得到一個目標場景中也很強大的圖像分類器,因此我們做了多次迭代的嘗試:

在從目前的實驗效果看,第一次遷移學習提升比較大,後面提升就比較小了,這個現象往好了說可以是收斂快,但往壞了說,雖然圖像分類器得到了提升,但是沒有出現圖像分類器提升大於融合分類器的現象,所以這裡邊應該還有東西可挖。

論文:https://arxiv.org/abs/1803.07293

代碼:https://github.com/ahangchen/TFusion

來源:https://zhuanlan.zhihu.com/p/34778414?utm_medium=social&utm_source=wechat_session&wechatShare=2&from=groupmessage&isappinstalled=0

- 馬上學習AI挑戰百萬年薪 -


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

2017 圖靈獎公布:大衛·帕特森和約翰·軒尼詩獲獎!
斯坦福大學面向Tensorflow深度學習研究課程

TAG:AI講堂 |