劉鵬飛 楊 威
(中國科學技術大學蘇州研究院 江蘇 蘇州 215000)
在圖像邊緣檢測領域,現(xiàn)階段使用得最多的方法是邊緣檢測子算法,主要分為以下幾類:
(1) 以一階導數(shù)為檢測理論基礎的代表性算法——差分邊緣檢測算法。
其基礎原理是:在對圖像的離散域處理時,將差分值作為圖像函數(shù)的導數(shù)。圖像是典型的二維空間域,因此方向導數(shù)需要兩個方向上的差分值代替。
定義X方向上的差分值為:
f(x)′=f(x+1,y)-f(x,y)
(1)
定義Y方向上的差分值為:
f(y)′=f(x.y+1)-f(x,y)
(2)
差分邊緣檢測算法,基于上述的X和Y方向上的差分值,表征圖像灰度的變化幅度,通過設定幅度的閾值進一步得到。需要注意的是差分邊緣檢測要求差分方向與邊緣方向垂直,在對圖像進行邊緣檢測時需要對圖像進行不同方向的差分運算。常見的差分邊緣檢測一般分為垂直邊緣、水平邊緣和對角邊緣。差分邊緣檢測的方向如圖1所示。
A B C
圖1 差分檢測邊緣的方向
圖1中:A表示垂直邊緣檢測,B表示水平方向的檢測,C表示對角線方向的檢測。
差分邊緣檢測是基于一階導數(shù)檢測的代表方法,但其高額的計算量及閾值的難以確定對其邊緣檢測的耗時與效果產生負面影響。
(2) 基于二階導數(shù)理論的邊緣檢測算法的代表性方法——Canny算子。
Canny算子檢測圖像邊緣的原理和過程如下:
① 用高斯函數(shù)對圖像做平滑處理。
② 梯度計算。
③ 非極大值抑制。
④ 雙門限檢測
⑤ 得到邊緣圖像。
假定圖像f(x,y),對其做高斯平滑處理,得到平滑處理后圖像F(x,y):
F(x,y)=f(x,y)×G(x,y,σ)
(3)
依據(jù)得到的平滑陣列F(x,y)分別求取x和y的導數(shù)陣列X(x,y)和Y(x,y):
(4)
(5)
根據(jù)得到的X(x,y)和Y(x,y)計算同一像素點x和y的幅值D(x,y)和Θ(x,y)以及方向:
(6)
(7)
根據(jù)得到的D(x,y)計算每一個像素點上相鄰像素的幅值:如果當前像素點的幅值不低于計算出的兩個相鄰像素點的幅值,則可將該像素點視為邊緣像素點;反之則不是。將計算出的可視為邊緣像素點的幅值與設定好的兩個閾值進行比對,區(qū)分出弱邊緣點和強邊緣點。
Canny算子的優(yōu)勢在于其很好地表征了圖像中邊緣點的強弱,但是采用平滑處理后使某些邊緣點的細節(jié)消失。這些問題針對一般的景物圖像或者事物圖像等無需刻畫細節(jié)邊緣就能取得良好效果。同時,在處理人體肖像方面,特別是針對眼睛、嘴、眉毛等這些細節(jié)邊緣時,幅值的差異性不大,導致難以區(qū)分出邊緣點,使得到的事物線稿圖像缺失細節(jié)。
另外,對于基于傳統(tǒng)算子的邊緣檢測,其閾值的難以確定,使得到的人體肖像線稿圖的效果較差。
傳統(tǒng)邊緣提取生成圖像線稿圖的缺點是明顯的:閾值的不確定,以及圖像細節(jié)處的線稿丟失。因此,有學者提出了基于圖片分割的生成線稿的圖案,如圖2所示。
(a) 真實圖 (b) 線稿圖圖2 分割生成線稿
在圖2(b)中,該學者根據(jù)其提出的圖像分割理論,首先將圖像分割成不同部分,然后采用其提出的算法進行處理,并借助BSDS300 Benchmack數(shù)據(jù)集進行實驗[5]??梢钥闯銎渖傻耐獠枯喞€稿具有較好的效果,但是丟失了人體景物的細節(jié)。如果利用該算法生成人體肖線稿,人臉部對應的鼻子、眉毛、嘴巴等細節(jié)處的描述將會缺失。
引言中闡述了傳統(tǒng)的邊緣檢測生成線稿圖的不足與缺點,同時也介紹了相關學者的改進算法。這些方法并不能很好地處理人體肖像線稿的細節(jié)。因此,本文提出了基于條件生成對抗網絡生成人體肖像線稿,并在最終實驗中取得較好效果。
在生成對抗網絡提出之前,深度學習產生的模型更多的是判別模型。但為了進一步提高判別模型的準確率,有學者提出了利用某一個模型去生成真實事物的fake并賦予假標簽,去干擾判別模型,進而提高判別模型的準確率。同時,在這一過程中,判別模型與生成模型互相影響,共同提高。最終的效果是生成模型產生的fake更加逼近實物,判別模型判別對象的真假更具準確。
因此,在GAN中存在著兩個模型:生成模型和判別模型。
最初的GAN模型如下:
在GAN[7]中,用于判別模型的D和用于生成模型的G采用的均是多層感知機。GAN定義了一個噪聲pz(x),用于生成模型G學習訓練數(shù)據(jù)x的概率分布pg,G(z)表示將輸入的噪聲z生成相應的數(shù)據(jù)或者圖像。D(x)為x的真實數(shù)據(jù)分布pdata。因此,優(yōu)化的目標函數(shù)定義為min(G) max(D)的形式:
Ez~pz(z)[1-logD(z)]
(8)
在GAN中,每對判模型D更新k次,就對生成模型G更新一次。式(8)表示當更新G時,需要最小化右邊等式,而當更新D時,需要最大化右邊等式。分析如下:
對于訓練數(shù)據(jù)x的真實分布pdata,理論上D(x)的輸出越接近于1越好,即logD(x)越大越好;對于由噪聲z生成的數(shù)據(jù)G(z),理論上D(G(z))越接近于0越好(即判別模型D能夠很好地識別出數(shù)據(jù)是生成模型產生的),因此log(1-D(G(z)))越大越好。根據(jù)上述,當更新D時,等式右邊應該取最大值。
對生成模型G進行更新時:理論上G(z)越接近真實數(shù)據(jù)越好,即pg=pdata。因此式(8)中D(G(z))最好接近于1,即log(1-D(G(z))越小越好。logD(x)是與G(z)無關的項,在求導時直接為0。 根據(jù)上述,當更新G時,等式右邊應取最小值。
通過對式(8)的定量分析:當G不變更新D時,D的最大值為:
(9)
在更新G時,目標函數(shù)應取到最小值,此時,需滿足條件pg=pdata。
最后生成模型與對抗模型的博弈結果是:生成模型G可以生成以假亂真的數(shù)據(jù)G(z),而判別模型難以判定G生成的數(shù)據(jù)是否真實,即D(G(z))=0.5。
在GAN中,具體的對抗算法如下:
在生成對抗網絡中,隨機梯度下降訓練應用于判別模型,假定超參數(shù)k=1:
for 訓練迭代次數(shù):
forkdo:
將m個噪聲作為一個最小批處理{z1,z2,…,zm}
進行處理,其由函數(shù)pg(z)生成。
將m個樣本作為一個最小批處理{x1,x2,…,xm}
進行處理,其由函數(shù)pdata(x)生成。
end for
每m個噪聲作為一個最小批處理{z1,z2,…,zm}
進行處理,其由函數(shù)pg(z)生成。
通過隨機梯度更新生成器。
end for
生成對抗網絡的對抗過程圖如圖3所示。
圖3 GAN對抗過程圖
在生成對抗網絡的具體執(zhí)行過程中。生成模型的初始輸入條件為隨機噪聲序列,這與判別器中待判別的實物不存在相關關系,即隨機噪聲數(shù)據(jù)與實物數(shù)據(jù)的相關性為0。
從理論上講,隨機噪聲產生的生成模型對判別模型具有一定的輔助作用。但是,基于初始條件的隨機性使得生成模型的數(shù)據(jù)與真實數(shù)據(jù)的相關性從0開始逐漸提升,并且其提升的速度與最終可達到的效果并沒有一個直接測量的標準。同時,原始生成模型從隨機數(shù)據(jù)開始訓練,其收斂時間從理論上講是一個相對漫長的過程。鑒于此,在基于條件生成對抗網絡生成人體肖像線稿研究中,對生成對抗網絡進行調整,調整的主要內容如圖4所示。
DEA方法是用于評價具有相同類型的多投入、多產出決策單元(DMU)相對有效性的一種非參數(shù)方法,其中CCR模型和BCC模型是最基本和最重要的兩個DEA模型[17]。假設有n家高新技術企業(yè),對于第p家企業(yè)(DMUp)來說,有m個投入指標和s個產出指標,記Xp為企業(yè)的投入指標集Xp=(x1p,x2p,…,xmp),Yp為企業(yè)的產出指標集 Yp=(y1p,y2p,…,yrp)。由此,CCR模型可以表示為:
(a) (b)圖4 訓練圖
圖4(a)是目標生成模型最終要生成的線稿圖,也是判別模型進行判別的實物圖,圖4(b)是輸入生成模型的初始數(shù)據(jù)(以具體圖像表示)。
生成對抗網絡輸入生成模型中的初始數(shù)據(jù)往往是隨機噪聲序列。在該次研究中,生成模型的初始數(shù)據(jù)類似于圖4(b),而輸出數(shù)據(jù)則類似于圖4(a)。通過圖4,容易得到生成模型的原始輸入數(shù)據(jù)與待判別模型判別的真實圖像之間滿足這樣的關系:輸入生成模型的初始圖像對應著待輸入判別模型的該圖像的線稿圖。假設圖g為輸入生成模性的原始圖像,g*為g所對應的真實線稿圖,g′為g通過生成模型生成的偽線稿圖,即滿足下述關系:
g′=G(g)
(10)
因此,生成模型最終的目標是:
g′=G(g)≈g*
(11)
以圖4為例,在判別模型中,輸入的圖像是(a);在生成模型中,輸入的圖像是(b)。從這里可以看出,判別模型輸入的原始數(shù)據(jù)圖像是生成模型輸入的原始數(shù)據(jù)圖像的線稿。因此,生成模型的輸入數(shù)據(jù)與判別模型的輸入數(shù)據(jù)存在著很強的相關性,而不是隨機噪聲的無關性。這使得生成對抗網絡具有了條件性。
上文解釋了條件生成對抗網絡的條件性[9,11-12]。接下來,構造網絡模型。在生成模型中,采用unet網絡;在判別模型中,則采用resnet網絡。
實驗目的為獲得生成模型,判別模型僅用來改善生成模型。根據(jù)生成模型,輸入一幅人體肖像,生成其對應的線稿圖。unet網絡在處理這樣的問題中是最為合適的網絡,因此采用unet網絡進行實驗,其結構如圖5所示。對于判別網絡,具有基本的圖像識別網絡即可。在研究中選取了resnet網絡作為判別網絡模型。
圖5 unet網絡結構圖
因此,構造的條件生成對抗網絡結構圖如圖6所示。
圖6 條件生成對抗網絡結構圖
該研究的目的是獲得條件生成對抗網絡的生成模型,即G模型。
實驗數(shù)據(jù):收集了500組人物肖像實物圖與其對應的線稿圖,分為A組和B組,并且A組中的實物圖與B組中的線稿圖一一對應。假定圖4(b)為A組中的某一圖,則圖4(a)為B組中其對應的線稿圖。
將B組圖中的數(shù)據(jù)置標簽為1,輸入判別網絡(resnet網絡模型)。
將B組中每一批圖像對應的A組中的一組圖像輸入生成網絡(unet網絡模型),并將生成的數(shù)據(jù)標簽置為0,然后將其送入判別網絡(resnet網絡模型)。
訓練前對數(shù)據(jù)進行上述處理是為了滿足生成模型的輸入數(shù)據(jù)與判別模型的輸入數(shù)據(jù)存在相關關系。
需要注意的是,數(shù)據(jù)預處理需要將圖片尺寸調整為256×256,因為該研究中采用的生成模型為unet256網絡模型。
在對數(shù)據(jù)進行預處理后,即可開始進行網絡訓練。
實驗的最終結果是獲得生成模型G,并利用生成模型G,通過輸入一張人體肖像圖片,得到人體肖像線稿圖。圖7展示了實驗的一組結果圖。
(a) (b)圖7 實驗結果圖
在整個實驗過程中,對500組照片進行了2 000個epoch的訓練。圖8展示了訓練過程中識別準確率的變化趨勢圖。其中D_real表示在判別模型中,對真實的線稿圖識別正確的準確率;D_fake表示判別模型將生成模型G生成的偽線稿圖識別正確的準確率。X軸標值i表示第i×100個epoch的訓練結果??梢钥闯觯谇?00個epoch周期內,D_real的識別準確率從0.9左右逐漸下降到了0.55左右,D_fake的識別準確率在該周期內則從0.1左右逐漸提升到了0.4左右。這表明生成模型確實學到了相關性信息,近似地實現(xiàn)了式(11)的要求。在第500到2 000個epoch周期中,D_real的識別準確率在0.55到0.65之間波動,D_fake的識別準確率則在0.3到0.35之間波動,這樣的波動趨于穩(wěn)定,且D_real值穩(wěn)定于0.60,D_fake值穩(wěn)定于0.35。理想狀態(tài)下,D_fake與D_real的值應當穩(wěn)定于0.5。未出現(xiàn)這樣的結果,主要由以下原因導致:
(1) 數(shù)據(jù)集的不充分。
(2) 訓練網絡存在的固有問題。
(3) 網絡參數(shù)的設定。
(4) 非可預見性問題。
但是,從圖8中可以看出,D_real和D_fake可以認為是在嘗試逼近0.5。
圖8 訓練過程識別準確率圖
在該實驗中,只需要獲得條件生成對抗網絡中的生成模型即可。圖9展示了將一幅人體肖像輸入生成模型中,輸出的對應線稿圖。
(a) (b)圖9 人體肖像與線稿
圖9(a)是待輸入生成的原始圖片,(b)是生成網絡根據(jù)輸入的圖像生成的線稿圖。觀察圖9的線稿圖,與實體圖進行比對,實體圖中人體肖像的眼睛、眉毛、鼻子、嘴巴五官都在線稿圖中充分地展現(xiàn)了出來,具體可見鼻子處鼻孔的線條、眉毛的刻畫、眼睛線條的眼角處。值得注意的是,線稿圖將頭發(fā)處的紋理甚至衣物的線條和隨身佩戴的項鏈也刻畫了出來。這些在傳統(tǒng)的邊緣檢測方法中是難以實現(xiàn)的。
表1列出了實驗相關的數(shù)據(jù)。在該研究中,生成的模型大小為207.6 MB,處理一幅圖片的時間代價為7~25 ms,采用的深度學習框架為Pytorch。生成模型大小是該實驗中仍需要改進的關鍵點。
表1 實驗相關指標
現(xiàn)在社會中存在著大量的圖像處理娛樂軟件,例如美圖app、天天p圖等。但是在這些軟件中并不存在根據(jù)用戶拍照的肖像,生成用戶的肖像線稿圖功能。而在市場中確實存在著獲取個人肖像線稿進行相關娛樂的需求。因此,本文提出基于條件生成對抗網絡生成人體肖像線稿,并將其應用到移動設備端。下一步還需壓縮生成模型,使得生成模型的大小適合于移動設備端。