意大利Trento大學(xué)和法國國立計算機及自動化研究院研究人員(Aliaksandr Siarohin、Enver Sangineto、Stephane Lathuiliere、Nicu Sebe)合作,使用GAN(對抗生成網(wǎng)絡(luò))生成人體的新姿勢圖像。研究人員提出的可變形跳躍連接和最近鄰損失函數(shù),更好地捕捉了局部的紋理細節(jié),緩解了之前研究生成圖像模糊的問題,生成了更可信、質(zhì)量更好的圖像。
網(wǎng)絡(luò)架構(gòu)
生成視覺內(nèi)容的深度學(xué)習(xí)方法,最常用的就是變分自動編碼器(VAE)和生成對抗網(wǎng)絡(luò)(GAN)。VAE基于概率圖模型,通過最大化相應(yīng)數(shù)據(jù)的似然的下界進行訓(xùn)練。GAN模型基于兩個網(wǎng)絡(luò):一個生成網(wǎng)絡(luò)和一個判別網(wǎng)絡(luò)。兩個網(wǎng)絡(luò)同時訓(xùn)練,生成網(wǎng)絡(luò)嘗試“愚弄”判別網(wǎng)絡(luò),而判別網(wǎng)絡(luò)則學(xué)習(xí)如何分辨真實圖像和虛假圖像。
現(xiàn)有的姿勢生成方面的工作大部分基于條件GAN,這里研究人員也使用了條件GAN。之前一些工作使用了兩段式方法:第一個階段進行姿勢集成,第二個階段進行圖像改良。研究人員則使用了端到端的方法。
既然使用GAN,那網(wǎng)絡(luò)架構(gòu)的設(shè)計就包括兩部分,生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)。其中,一般而言,判別網(wǎng)絡(luò)的設(shè)計相對容易。這符合直覺,比如,判別畫作的真假要比制作一幅足以以假亂真的贗品容易得多。因此,我們首先考慮判別網(wǎng)絡(luò)的情形。
判別網(wǎng)絡(luò)
我們考慮判別網(wǎng)絡(luò)的輸入和輸出。
首先是相對簡單的輸出。判別網(wǎng)絡(luò)的輸出,基本上就是兩種,一種是離散的分類結(jié)果,真或假,一種是連續(xù)的標(biāo)量,表明判別網(wǎng)絡(luò)對圖像是否為真的信心(confidence)。這里研究人員選擇了后者作為判別網(wǎng)絡(luò)的輸出。
判別網(wǎng)絡(luò)的輸入,最簡單的情形,就是接受一張圖像,可能是真實圖像,也可能是生成網(wǎng)絡(luò)偽造的圖像(即生成網(wǎng)絡(luò)的輸出)。不過,具體到這個特定的問題,從原始圖像生成同一人物的新姿勢圖像,那么,其實模型還可以給判別網(wǎng)絡(luò)提供一些額外的信息,幫助判別網(wǎng)絡(luò)判斷圖像的真假。
首先可以提供的是原始圖像。其次,是相關(guān)的姿勢信息,具體而言,包括從原始圖像中提取的姿勢信息,也包括目標(biāo)姿勢信息。因此,實際上判別網(wǎng)絡(luò)接受的輸入是4個tensor構(gòu)成的元組(xa, Ha, y, Hb)。其中,xa是表示原始圖像的tensor,Ha與Hb分別表示原始圖像的姿勢和目標(biāo)姿勢。y是真實圖像(xb)或生成網(wǎng)絡(luò)的輸出。
如前所述,判別網(wǎng)絡(luò)的工作相對簡單,因此判別網(wǎng)絡(luò)的輸入層也就不對這4個tensor組成的元組做什么特別的處理了,直接連接(concatenate)就行了。
生成網(wǎng)絡(luò)
如前所述,生成網(wǎng)絡(luò)的設(shè)計需要多費一點心思。
同樣,我們先考慮生成網(wǎng)絡(luò)的輸出,很簡單,生成網(wǎng)絡(luò)的輸出就是圖像,具體而言,是一個表示圖像的tensor。
那么,生成網(wǎng)絡(luò)的輸入是什么呢?其實很簡單,從判別網(wǎng)絡(luò)的輸入,我們不難得到生成網(wǎng)絡(luò)的輸入。判別網(wǎng)絡(luò)的輸入,正如我們前面提到的,是4個tensor構(gòu)成的元組(xa, Ha, y, Hb)。其中,這個y正是生成網(wǎng)絡(luò)需要生成的,所以我們?nèi)サ魕,得到(xa, Ha, Hb)。這個差不多就可以作為生成網(wǎng)絡(luò)的輸入了。生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)兩者輸入上的相似性,很符合直覺。那些有助于判別圖像真假的信息,同樣有助于偽造虛假的圖像。
不過,圖像多少存在噪點,因此,為了處理數(shù)據(jù)樣本的噪點問題,以更好地學(xué)習(xí)以假亂真的技術(shù),生成網(wǎng)絡(luò)還額外接受一個噪聲向量z作為輸入。因此,生成網(wǎng)絡(luò)的輸入為(z, xa, Ha, Hb)。判別網(wǎng)絡(luò)就不操心噪點的問題,這是因為判別網(wǎng)絡(luò)的工作要容易很多,不是嗎?
判別網(wǎng)絡(luò)的輸入是直接連接的,生成網(wǎng)絡(luò),因為面臨的任務(wù)要困難很多,因此并不直接連接xa、Ha、Hb。因為,Ha是基于xa提取的姿勢信息,所以,兩者之間存在著一致性,或者說,緊密的聯(lián)系。而Hb是目標(biāo)姿勢,與xa和Ha的關(guān)系不那么緊密。因此,分開來處理比較好。研究人員正是這么做的,將xa和Ha連接起來,使用編碼器的一個卷積流處理,而Hb則使用另一個卷積流處理,兩者之間不共享權(quán)重。
姿勢的表示
上面我們提到了Ha和Hb,也就是姿勢信息,可是這些姿勢信息到底是如何表示的呢?
表示姿勢最簡單的方法就是找出各個關(guān)節(jié)(抽象成點),然后將這些關(guān)節(jié)連起來(線),用點線組合(關(guān)節(jié)位置)來表示姿勢。
從圖像中提取姿勢(關(guān)節(jié)位置)后,還需要轉(zhuǎn)換成生成網(wǎng)絡(luò)能夠理解的形式。以往的工作發(fā)現(xiàn)用熱圖的效果不錯,這里研究人員也同樣使用熱圖來表示姿勢。也就是說,如果我們用P(xa)表示從x中提取的姿勢(P為pose即姿勢的首字母),那么Ha= H(P(xa))(H為heat map即熱圖的首字母)。其中,Ha由k張熱圖組成,Hj(1<=j<=k)是一個維數(shù)與原始圖像一致的二維矩陣。熱圖與關(guān)節(jié)位置滿足以下關(guān)系:
其中,pj為第j個關(guān)節(jié)位置,σ = 6像素。
整個網(wǎng)絡(luò)架構(gòu)如下圖所示:
可變形跳躍連接
姿勢的轉(zhuǎn)變,可以看成是一個空間變形問題。常見的思路是由編碼器編碼相關(guān)的變形信息,然后由解碼器將編碼的變形信息加以還原。而由編碼器和解碼器組成的網(wǎng)絡(luò)架構(gòu),常用的為U-Net。因此,以往的一些研究廣泛使用基于U-Net的方法完成基于姿勢的人像圖片生成任務(wù)。然而,普通的U-Net跳躍連接不太適合較大的空間變形,因為在空間變形較大的情況下,輸入圖像和輸出圖像的局部信息沒有對齊。
既然,較大的空間變形有局部信息不對齊的問題,那將空間變形分拆成不同的部分,這樣每個部分之間就對齊了。
研究人員基于以上的想法提出了可變形跳躍連接(deformable skip connection),將全局變形分解為一組由關(guān)節(jié)的子集定義的局部仿射變換,然后再將這些局部仿射變換組合起來以逼近全局變形。
分解人體
如前所述,局部仿射變換是由關(guān)節(jié)的子集定義的。因此我們先要劃分關(guān)節(jié)的子集,也就是,分解人體。研究人員將人體分解為10個部分,頭、軀干、左上臂、右上臂、左前臂、右前臂、左大腿、左小腿、右大腿、右小腿。
每個部分具體區(qū)塊的劃分,基于關(guān)節(jié)進行。
頭部和軀干的區(qū)塊定義很簡單,只要對齊軸線,劃出包圍所有關(guān)節(jié)的矩形即可。
四肢的情形比較復(fù)雜。四肢由兩個關(guān)節(jié)組成,研究人員使用一個傾斜的矩形來劃分四肢區(qū)塊。這個矩形的一條邊r1為平行于關(guān)節(jié)連線的直線,另一條邊r2和r1垂直,長度等于軀干對角線均值的三分之一(統(tǒng)一使用此值)。這樣我們就得到了一個矩形。
上圖為一個例子。我們可以將切分的區(qū)域表示為Rha= {p1, ..., p4}。其中,R代表區(qū)域(region的首字母),h表示這是人體的第h個區(qū)域,a表示這一區(qū)域?qū)儆趫D像xa,p1到p4為區(qū)域矩形的四個頂點,注意,這些并非關(guān)節(jié)。
仿射變換
然后,我們可以計算Rha的二元掩膜Mh(p),除了Rha內(nèi)的點之外,其余位置的值均為零。
類似地,Rhb= {q1, ..., q4}為圖像xb中對應(yīng)的矩形局域。匹配Rha與Rhb中的點,可以計算出這一部分的仿射變換fh的6個參數(shù)kh:
以上的仿射變換的參數(shù)向量kh基于原始圖像的分辨率計算,然后根據(jù)不同卷積特征映射的特定分辨率分別計算相應(yīng)的版本。類似地,可以計算每個二元掩膜Mh的不同分辨率的版本。
實際圖像中,相應(yīng)的區(qū)域可能被其他部分遮蔽,或者位于圖像邊框之外,或者未被成功檢測到。對于這種情況,研究人員直接將Mh設(shè)定為所有元素值為0的矩陣,不計算fh。(其實,當(dāng)缺失的區(qū)域為四肢時,如果對稱的身體部分未缺失,例如右上臂缺失,而左上臂被成功檢測到,那么可以拷貝對稱部分的信息。)
對于數(shù)據(jù)集中的每對真實圖像(xa, xb),(fh(), Mh)及其分辨率較低的變體只需計算一次。
另外,這也是整個模型中唯一與人體相關(guān)的部分,因此,整個模型可以很容易地擴展,用于解決其他可變形物體的生成任務(wù)。
仿射變換示意圖
組合仿射變換
一旦計算出人體各個區(qū)域的(fh(), Mh)后,這些局部的仿射變換可以組合起來逼近全局姿勢變形。
具體而言,研究人員首先基于每個區(qū)域計算:
然后,研究人員將其組合:
其中,F(xiàn)'0= F(未變形),可以提供背景點的紋理信息。這里,研究人員選用了最大激活,研究人員還試驗了平均池化,平均池化的效果要稍微差一點。
最近鄰損失
訓(xùn)練生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)時,除了標(biāo)準(zhǔn)的條件對抗損失函數(shù)LcGAN外,研究人員還使用了最近鄰損失LNN。
LcGAN的具體定義為:
其中,帶帽子的x為生成網(wǎng)絡(luò)的生成圖像G(z, xa, Ha, Hb)。
在標(biāo)準(zhǔn)的LcGAN之外,之前的一些研究配合使用基于L1或L2的損失函數(shù)。比如,L1計算生成圖像和真實圖像之間像素到像素的差別:
然而,L1和L2會導(dǎo)致生成模糊的圖像。研究人員猜想,其原因可能是這兩類損失函數(shù)無法容納生成圖像和真實圖像間細小的空間不對齊。比如,假定生成網(wǎng)絡(luò)生成的圖像看起來很可信,在語義上也與真實圖像相似,但是兩張圖片服飾上的紋理細節(jié)的像素沒有對齊。L1和L2都會懲罰這樣不精確的像素級別的對齊,盡管在人類看來,這些并不重要。為了緩和這一問題,研究人員提出了新的最近鄰LNN:
其中,N(p)是點p的n x n局部近鄰。g(x(p))是點p附近的補丁的向量表示,g(x(p))由卷積過濾器得出。研究人員通過比較生成圖像和真實圖像之間的補丁表示(g()),以便高效地計算LNN。具體而言,研究人員選用了在ImageNet上訓(xùn)練過的VGG-19的第二個卷積層(conv12)。VGG-19的頭兩個卷積層(conv11和conv12)的卷積跨距均為1,因此,圖像x在conv12中的特征映射Cx和原始圖像x具備相同的分辨率。利用這一事實,研究人員得以在conv1_2上直接計算最近鄰,這不會損害空間準(zhǔn)確度,即g(x(p)) = Cx(p)。據(jù)此,LNN的定義變?yōu)椋?/p>
研究人員最終優(yōu)化了以上LNN的實現(xiàn),使其得以在GPU上并行運算。
因此,最終的基于LNN的損失函數(shù)定義為:
將上式與LcGAN結(jié)合,得到目標(biāo)函數(shù):
研究人員將上式中的λ的值設(shè)定為0.01,λ起到了正則化因子的作用。
實現(xiàn)細節(jié)
訓(xùn)練生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)時,研究人員使用了9萬次迭代,并使用了Adam優(yōu)化(學(xué)習(xí)率:2x10-4,β1= 0.5, β2= 0.999)。
如前所述,生成網(wǎng)絡(luò)的編碼器部分包含兩個流,每個流由以下層的序列組成:
CN641- CN1282- CN2562- CN5122- CN5122- CN5122
其中,CN641表示使用實例歸一化、ReLU激活、64個過濾器、跨距為1的卷積層,后同。
相應(yīng)的生成網(wǎng)絡(luò)的解碼器部分由以下序列組成:
CD5122- CD5122- CD5122- CN5122- CN1282- CN31
其中,CD5122與CN5122類似,只不過額外附加了50%的dropout。另外,最后一個卷積層沒有應(yīng)用實例歸一化,同時使用tanh而不是ReLU作為激活函數(shù)。
判別網(wǎng)絡(luò)使用如下序列:
CN642- CN1282- CN2562- CN5122- CN12
其中,最后一個卷積層沒有應(yīng)用實例歸一化,同時使用sigmoid而不是ReLU作為激活函數(shù)。
用于DeepFashion數(shù)據(jù)集(研究人員使用的其中一個數(shù)據(jù)集,詳見下節(jié))的生成網(wǎng)絡(luò)的編碼器和解碼器使用了一個額外的卷積層(CN5122),因為數(shù)據(jù)集中的圖像有更高的分辨率。
試驗
數(shù)據(jù)集
研究人員使用了兩個數(shù)據(jù)集:
Market-1501
DeepFashion
Market-1501包含使用6個監(jiān)控攝像頭拍攝的1501人的32668張圖像。由于圖像的低分辨率(128x64),及姿勢、光照、背景和視角的多樣性,這一數(shù)據(jù)集很具挑戰(zhàn)性。研究人員首先剔除了未檢測到人體的圖像,得到了263631對訓(xùn)練圖像(一對圖像為同一人的不同姿勢圖像)。研究人員隨機選擇了12000對圖像作為測試集。
DeepFashion包含52712張服飾圖像,其中有200000對相同服飾、不同姿勢或尺碼的圖像。圖像的分辨率為256x256。研究人員選擇了同一人穿戴相同服飾但姿勢不同的圖像對,其中,隨機選擇1000種服飾作為測試集,剩余12029種服飾作為訓(xùn)練集。去除未檢測到人體的圖像后,研究人員最終收集了101268對圖像作為訓(xùn)練集,8670對圖像作為測試集。
定量評估
定量評估生成內(nèi)容本身是一個正在研究中的問題。目前的研究文獻中出現(xiàn)了兩種衡量標(biāo)準(zhǔn):SSIM(Structural Similarity,結(jié)構(gòu)化相似性)和IS(Inception Score)。
然而,姿勢生成任務(wù)中只有一個物體分類(人類),IS指標(biāo)卻基于外部分類器的分類神經(jīng)元計算所得的熵值,因此兩者不是十分契合。實際上,研究人員發(fā)現(xiàn)IS值與生成圖像的質(zhì)量間的相關(guān)性常常比較弱。因此,研究人員提出了一個額外的DS(Detection Score,檢測分?jǐn)?shù))指標(biāo)。DS基于最先進的物體檢測模型SSD的檢測輸出,SSD基于Pascal VOC 07數(shù)據(jù)集進行訓(xùn)練。這意味著,DS衡量生成圖像的真實性(有多像人)。
上為當(dāng)前最先進模型,中為研究人員使用的模型,下為真實圖像
可以看到,總體而言,模型的表現(xiàn)超過了當(dāng)前最先進的模型。另外,注意真實圖像的DS值不為1,這是因為SSD不能100%檢測出人體。
定性評估
研究人員同樣進行了定性評估。
可以很明顯地看出,由于采用了基于LNN的損失函數(shù),模型顯著減少了生成圖像的模糊程度。
DeepFashion上的定性評估結(jié)果類似。
消融測試
為了驗證模型的有效性,研究人員還進行了定性和定量的消融測試。
Market-1501
上圖為在Market-1501數(shù)據(jù)集上進行的定性消融測試。第1、2、3列表示模型的輸入。第4列為真實圖像。第5列為基準(zhǔn)輸出(不使用可變形跳躍連接的U-Net架構(gòu),另外,生成網(wǎng)絡(luò)中,xa、Ha、Hb直接連接作為輸入,也就是說生成網(wǎng)絡(luò)的編碼器只包含一個流,訓(xùn)練網(wǎng)絡(luò)時使用基于L1的損失函數(shù)),第6列DSC為使用基于L1的損失函數(shù)訓(xùn)練的模型,第7列Full為完整的模型。
可以看到,研究人員提出的模型生成的圖像看起來更真實,也保留了更多的紋理細節(jié)。
研究人員在DeepFashion上取得了相似的結(jié)果。
研究人員也進行了定量的消融測試,并額外試驗了加上dropout(生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)同時應(yīng)用dropout)的效果。
-
GaN
+關(guān)注
關(guān)注
19文章
1952瀏覽量
73807 -
網(wǎng)絡(luò)架構(gòu)
+關(guān)注
關(guān)注
1文章
94瀏覽量
12604 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5510瀏覽量
121346
原文標(biāo)題:特倫托大學(xué)、Inria合作研究:基于GAN生成人體的新姿勢圖像
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論