最近看到了一個比較好玩的項目,號稱可以將非常小的圖片表情恢復原狀。通過一個機器學習模型對面部的標志進行漸進式的超分辨,訓練后的網絡可以輸入小至16×16像素的圖像進行面部圖像的重建,并重新縮放到128×128像素大小作為輸出圖像,以下是他們給出的例子:
相關論文介紹
該機器學習模型來自論文:Progressive Face Super-Resolution via Attention to Facial Landmark(https://arxiv.org/abs/1908.08239),論文提出了一種新的人臉識別方法,用這個方法可生成逼真的8倍超分辨率的人臉圖像的同時,完全保留其面部細節。該神經網絡的訓練方法是漸進式的,通過將網絡分割成連續的步驟,使訓練穩定下來,每一步輸出的分辨率都在不斷提高。論文還提出了一種新的面部注意力丟失方法,并將其應用于每一步的訓練中,通過增加像素差和熱圖值來更詳細地恢復面部屬性。最后,論文還提出一個壓縮版本的人臉對齊網絡(FAN)的標志熱圖提取。利用所提出的FAN,可以提取出適合于人臉SR的熱圖,并減少了整體訓練時間。實驗結果證明,該方法在定性和定量測量方面都優于目前最先進的方法,尤其是在面部感知質量方面。
然而,論文中有一個沒被提及的細節,就是最后輸出的圖片帶有疤痕的比例非常高?,活脫脫都變成了哈利波特呢。
左:真人,中:原輸入表情,右:輸出結果
仔細一看右圖還真的怪嚇人的,幸好農歷七月已經過去了
另外,該模型的最佳訓練場景是輸入的圖像大小應該為16×16像素,并且需要使用與訓練和測試模型完全相同的代碼。
如果原圖像不是16×16像素的呢?
如上圖所示,在Twitter上有一組大小正好為16×16像素的表情符號(大家也可以自行到Twitter表情的Github項目查看:https://github.com/twitter/twemoji),作者利用這些表情進行了測試,結果可以看下圖:
以上8組表情的的左側都是原圖,右側則是輸出結果,這訓練出來的結果也太老齡化了吧,面部全部都滿臉皺紋,連披薩都烤的毫無食欲(還是叫個必勝客的披薩吃吧,推特牌就算了)。
現在有了新的進展!因為這個模型是專門用于尋找面部標志的,所以任何一個標志都可以在一個像素上畫出眼睛和鼻孔。作者表示非常肯定意大利辣香腸披薩就是模仿人類的嘴唇?制成的…
下面的樣本是經過精心挑選的,然而許多輸出的結果都不是很理想。作者也花了很大力氣鼓勵模型對面部特征做出積極的猜測。例如,雖然推特的圖像已經是16×16像素,但如果首先通過傳統的大小調整將其從16×16像素的輸入調整到128×128像素,然后再降低到16×16像素,通常會得到更好的結果。這顯然增加了很多模糊,但似乎為模型提供了更多創造性的空間來解釋某個事物。作者還將預測的圖像作為輸入發送回模型進行迭代(迭代次數多達10次),其中有許多輸入圖像都是來自后來迭代生成的結果。然而,在10次迭代中只有3次可以看到人的眼睛。
作者還非常喜歡這個綠色的很像龍(或者像蛇)的表情。除了一只眼睛以外,它從來沒有真正擁有過人類的特征,但生成圖片的人造風格令作者非常喜歡。
當你放大或縮小一個StyleGAN面部模型時,作者聯想到這篇Gan可操控性論文(https://arxiv.org/pdf/1907.07171.pdf)。
以下是用Face Super-Resolution模型縮放的圖像結果:
該動圖無法上傳,敬請移步到原文查看:https://iforcedabot.com/photo-realistic-emojis-and-emotes-with-progressive-face-super-resolution/。
Twitch表情的輸出效果如何?
令人驚訝的是,只需要一點點調整,爬行動物圖片的輸出結果,面部看起來更像人類了!說好的建國以后動物不能成精呢?!!
Twitch表情并不完全適用于16×16,其中一些具有高分辨率版本,而另一些則沒有。作者嘗試了所有種類,因此對于以下的某些圖片,輸入的時候已經是高分辨率,但在進入模型之前被調整為16×16像素大小。圖片輸出結果也在下方,因為與真正的高分辨率表情經常有一種有趣的對比。
最后來看看游戲精靈們的生成結果
由于篇幅有限,作者沒有拿更多的精靈進行測試,不過可以期待作者之后的更新~
進一步探索
我認為可以做更多的事情來鼓勵模型在應用人類特征方面具有創造性 —— 目前我只是嘗試對管道進行一些調整并迭代,幾乎沒有做其他的事情。使用其他模型的可能性是無窮無盡的。作者立即聯想到StyleGAN編碼:https://twitter.com/jonathanfly/status/1138236372572135424
在 https://selfie2anime.com/上也有一個快速測試,可以告訴你在動漫里長什么樣子,輸出的結果會發送到郵箱中。
更新1:更多Minecraft
我被要求嘗試用更多的Minecraft紋理去進行測試,當然是以16×16像素的圖片作為樣本。結果很顯然,絕大多數的樣本并沒有真正發揮作用......?
完整數據集地址:https://drive.google.com/open?id=1kzmgMAshMeO8dOs6gnr0IzHWHsn_MBux
面部特征通常非常微妙,實際上會比明顯的面部特征更令人毛骨悚然。想象一下在玩游戲的時候,隱隱約約感覺看到了一張臉,但是又不能對這張圖像做出什么操作......
更新2:不能停止嘗試的事情
為了尋找更多可以用來進行測試的像素圖像,作者在這顆恒星的圖像上嘗試了 Face Super-Resolution 訓練。只花了大約40次迭代,(輸出的圖像)就揭示它實際上是一個可愛的小外星人的形象。很確定天文學是如何運作的?https://t.co/dUQjERGllq
更新3:視頻的 Face Super-Resolution
繼續用Face Super-Resolution神經網絡對一個16x16像素的視頻進行超分辨,結果大家也都看到了,Face Super-Resolution 基本上把它變成了DeepFake里的魔鬼。?
YouTube視頻:https://youtu.be/H8qH_mdceNM
最后,對 Face Super-Resolution 感興趣的同學,可以到Colab進行嘗試。如果大家知道為什么會出現如此恐怖的現象,也可以在留言區進行留言~
https://gist.github.com/JonathanFly/80b669a72bf624d17b56a1cfec742588#file-progressivefacesuperresolutiondemo-ipynb
快速在線體驗地址:
https://colab.research.google.com/gist/JonathanFly/80b669a72bf624d17b56a1cfec742588/progressivefacesuperresolutiondemo.ipynb
彩蛋時間到
以下是小編自己在Colab上測試的結果,圖片都是在網絡找的,只需要在代碼中修改網絡圖片的地址即可運行。具體效果如何,請大家自行感受吧
(不能讓我一個人辣眼睛)
via https://iforcedabot.com/photo-realistic-emojis-and-emotes-with-progressive-face-super-resolution/