AI一鍵去紋身,幾秒鐘讓你看見明星「真面目」
有些時(shí)候,我們需要把一些人身上的紋身覆蓋掉,以避免引人效仿。有的時(shí)候人們只是單純地好奇,想知道一些大明星如果沒有紋身會(huì)是什么樣子。來自印度的機(jī)器學(xué)習(xí)研究者 Vijish Madhavan 最近開源的一個(gè)機(jī)器學(xué)習(xí)工具 SkinDeep 滿足了我們的需求。
網(wǎng)友們也使用這一工具去處理了一些畫了重度紋身的人物照片,效果還不錯(cuò)。
該項(xiàng)目的作者 Vijish Madhavan 在看完加拿大歌手賈斯汀 · 比伯的 MV《Anyone》后,萌生了做這個(gè)項(xiàng)目的計(jì)劃。賈斯汀 · 比伯在化妝師的幫助下花了好幾個(gè)小時(shí)的時(shí)間才把他的一身紋身覆蓋掉。
MV 視頻的效果非常完美,因?yàn)橹谱饕曨l輸出是非常困難的,因此項(xiàng)目作者選擇圖像來處理。該項(xiàng)目的起點(diǎn)是深度學(xué)習(xí)能否勝任這項(xiàng)工作,與 photoshop 相比又如何?

項(xiàng)目地址:
https://github.com/vijishmadhavan/SkinDeep
有人會(huì)問,為什么不把紋身直接 PS 掉?Photoshop 可以產(chǎn)生非常好的效果,但問題是使用 Photoshop 需要專業(yè)知識(shí),如果用 PS 處理紋身的話,你可能需要花費(fèi)幾個(gè)小時(shí)的時(shí)間去修飾整個(gè)圖像。
我們先來看一下效果如何?阿倫 · 艾弗森(美國籃球運(yùn)動(dòng)員)的紋身就是用這個(gè)模型去掉的。

下圖中第一行為輸入圖像,第二行為輸出圖像,輸出結(jié)果明顯感覺到紋身被去除了。

臉部有大量密集紋身的圖像,還有其他裝飾,AI 的紋身去除效果也非常好:

與專業(yè)圖像處理軟件 photoshop 相比,效果也不錯(cuò):

看起來 SkinDeep 的效果還不錯(cuò),但如果紋身是彩色的,還會(huì)有一些殘留的痕跡。
項(xiàng)目介紹
根據(jù)作者介紹,完成這個(gè)項(xiàng)目需要大量的圖像對(duì),因?yàn)闆]有合適的數(shù)據(jù)集,很多時(shí)候訓(xùn)練內(nèi)容采用合成數(shù)據(jù)來完成,具體來說:
首先將 APDrawing 數(shù)據(jù)集圖像對(duì)與一些背景去掉紋身設(shè)計(jì)的圖像疊加在一起,使用 Python OpenCV 實(shí)現(xiàn);
繪制數(shù)據(jù)集有線條藝術(shù)對(duì),可以模擬紋身線條,這將有助于模型學(xué)習(xí)和刪除這些線條;
APDrawing 數(shù)據(jù)集只有頭像,對(duì)于全身圖像,項(xiàng)目作者采用了以前的項(xiàng)目 ArtLine,并將輸出與輸入圖像疊加在一起;


ImageDraw.Draw 與森林綠色(forest green colour)色碼一起使用,并隨機(jī)放置在身體圖像上,類似于 fast.ai 中的 Crappify ;
Photoshop 也被用來在需要彎曲和角度改變的對(duì)象上放置紋身。

這一項(xiàng)目是由 Fast.AI 庫構(gòu)建的,你需要安裝 fastai 1.0.61 版(及其依賴庫),以及 PyTorch 1.6.0,不支持更高的版本。
嘗試這一項(xiàng)目的最快方法就是在 Colab 上:
https://colab.research.google.com/github/vijishmadhavan/SkinDeep/blob/master/SkinDeep.ipynb
它的輸出限制為 500 像素。
限制
去紋身的機(jī)器學(xué)習(xí)模型雖然看起來并不復(fù)雜,但在現(xiàn)實(shí)世界千奇百怪的情況下,有時(shí)仍然會(huì)出現(xiàn)一些「貼圖錯(cuò)誤」的情況。該項(xiàng)目的構(gòu)建者表示,由于缺乏數(shù)據(jù)集支持,所以用于訓(xùn)練的數(shù)據(jù)集容量有限。另外,如果有人紋了彩色紋身,恐怕人工智能目前還是認(rèn)不出來的。

如果這個(gè)效果被做成網(wǎng)站,或者成為美顏 app 的一個(gè)濾鏡,那就太好了。最后,SkinDeep 能不能反過來給人加紋身呢?「試穿」的效果或許會(huì)火起來。