卡通化-二次元的你長(zhǎng)什么樣
點(diǎn)擊上方“AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
來源:CVPy

文末可以自己嘗試下卡通化效果~
CVPR2020收錄了一篇卡通化的文章,Xinrui Wang和Jinze Yu的《Learning to Cartoonize Using White-box Cartoon Representations》。可以把人物或者風(fēng)景畫轉(zhuǎn)換為卡通風(fēng)格的圖片,效果非常驚艷。
相比于之前深度學(xué)習(xí)為人詬病的“黑盒”學(xué)習(xí),文章中提出了生成卡通化圖片的“白盒”表示法,將圖像分解為三種卡通表示,指導(dǎo)網(wǎng)絡(luò)優(yōu)化生成卡通照片,三種表示分別是surface表示、structure表示、texture表示。

我個(gè)人的理解是,圖像的三種表示分別是表示圖像的低頻特征、中頻(結(jié)構(gòu))特征和高頻特征,就像是從遠(yuǎn)處、不遠(yuǎn)處和近處的視角分別看同一個(gè)人的過程:
低頻表示就是圖像的整體外觀,去掉了所有的紋理和細(xì)節(jié)。就像是遙望一個(gè)人,重點(diǎn)在“遙望”二字。這時(shí)只有一個(gè)整體的、模糊的觀感,能看到這是一個(gè)人形生物,只能看到人身上衣服的主色調(diào)等信息,人物與周圍背景的邊界是模糊不清的。近似的人可以摘掉眼鏡看看周圍,近視700度的我摘了眼鏡確認(rèn)了下,大致就是這種感覺沒跑了。 結(jié)構(gòu)表示或者中頻表示,就像是更近一點(diǎn)看這個(gè)人,但是距離感仍然在,鼻子眼睛等細(xì)節(jié)還是看不清楚,但是人物輪廓甚至上下衣的輪廓可以看清了,仍然看不清臉。各部分的主色調(diào)也更加清晰了。 高頻表示就是近看了,細(xì)節(jié)、紋理和更精細(xì)的輪廓等信息都能看到了,這個(gè)時(shí)候就是所謂“有鼻子有眼”了。
圖像被分解為surface表示、structure表示、texture表示之后,卡通化的任務(wù)也就比之前端對(duì)端的黑盒式學(xué)習(xí)明確了很多。作者提出用三個(gè)獨(dú)立的模塊分別去學(xué)習(xí)圖像的這三種表示,即三個(gè)模塊分別提取圖像的低頻、中頻和高頻的特征。

文章提出了一個(gè)包含一個(gè)生成器G(Generator)和兩個(gè)判別器Ds(D_surface)和Dt(D_texture)的GAN框架。
Ds用于判別模型從源圖像中提取的圖像的低頻表示與卡通圖片(標(biāo)注)
Dt用于判別模型從源圖像中提取的圖像的高頻表示與卡通圖片(標(biāo)注)
用預(yù)訓(xùn)練的VGG網(wǎng)絡(luò)提取源圖像的high-leval特征,并在提取的結(jié)構(gòu)(中頻)特征和輸出之間以及輸入照片和輸出之間對(duì)全局內(nèi)容施加空間約束
過程可以理解為,
將輸入圖像通過導(dǎo)向?yàn)V波器處理,得到低頻表示; 通過超像素處理,得到中頻表示; 通過隨機(jī)色彩變幻得到高頻表示。 卡通圖像也一樣。
將GAN生成器產(chǎn)生的fake_image分別于上述表示結(jié)果做損失。其中
紋理(中頻)表示與表面(低頻)表示通過判別器得到損失 中頻特征比較復(fù)雜,fake_image的中頻表示與fake_image,輸入圖像與fake_image,分別通過vgg19網(wǎng)絡(luò)抽取特征,進(jìn)行損失的計(jì)算。
總損失由以上各種損失加權(quán),可以通過改變損失函數(shù)中每個(gè)特征loss的權(quán)重來調(diào)整卡通化結(jié)果的樣式。
這樣處理之后,對(duì)于大部分圖片的卡通化處理都非常驚艷。來幾張圖看看效果吧。



想自己試試的小伙伴可以點(diǎn)擊右下角閱讀原文上傳自己的圖片嘗試。
