只用C++和Python,让你的简笔画实时动起来!
讓蒙娜麗莎笑起來對AI來說已經(jīng)不是什么新鮮事了。
試想,如果在畫紙上創(chuàng)作的圖像能夠?qū)崟r(shí)地生成動(dòng)畫,達(dá)芬奇可能會(huì)嚇個(gè)半死。
沒錯(cuò),文摘菌今天要給大家介紹的,就是捷克技術(shù)大學(xué)和Snap研究小組合作開發(fā)的一種全新的樣式轉(zhuǎn)換技術(shù),在論文“使用基于少量補(bǔ)丁的培訓(xùn)進(jìn)行交互式視頻樣式化”中,他們提出,該技術(shù)將夠?qū)⒛撤N繪畫風(fēng)格的靜態(tài)圖像實(shí)時(shí)格轉(zhuǎn)換為動(dòng)態(tài)動(dòng)畫。
效果嘛還是自己看了才知道:
據(jù)了解,研究小組利用了深度學(xué)習(xí),在將手寫樣式轉(zhuǎn)換為圖像或視頻的過程中,僅僅對樣式進(jìn)行轉(zhuǎn)換,內(nèi)容原型的創(chuàng)作風(fēng)格絲毫不會(huì)受到影響。
同時(shí),與此前的轉(zhuǎn)換方法相比而言,這項(xiàng)技術(shù)無需借助龐大的數(shù)據(jù)集,甚至無需進(jìn)行預(yù)訓(xùn)練,對關(guān)鍵幀進(jìn)行的樣式設(shè)置就是訓(xùn)練網(wǎng)絡(luò)的唯一數(shù)據(jù)來源。
20萬參數(shù)設(shè)置,每秒17幀進(jìn)行風(fēng)格轉(zhuǎn)換
整個(gè)實(shí)驗(yàn)中,研究人員主要利用的編程語言是C++和Python。
對于選定的評估序列中的幀,研究人員計(jì)算了它們的樣式化,在有48個(gè)Nvidia Tesla V100 GPU環(huán)境下模擬3天后就完成了。
整個(gè)實(shí)驗(yàn)總共抽查了大約200,000個(gè)不同設(shè)置的超參數(shù)(hyperparameters),并在以下區(qū)間內(nèi)進(jìn)行了對比實(shí)驗(yàn),Wp∈(12,188),Nb∈(5,1000),Nr∈(1,40),α∈(0.0002,0.0032),最終發(fā)現(xiàn)最佳的補(bǔ)丁大小(optimal patch size)為Wp=36。
下圖比較了不同超參數(shù)設(shè)置的視覺質(zhì)量,其中超參數(shù)優(yōu)化一個(gè)很有趣的結(jié)果是,在左邊的圖像中,一個(gè)批次的補(bǔ)丁Nb=40相對較少,這與選擇的基于補(bǔ)丁的訓(xùn)練方案相互作用。雖然常見的策略是盡可能擴(kuò)大Nb,以利用GPU能力,但在案例中,增加Nb實(shí)際上卻只會(huì)適得其反,因?yàn)樗鼘⒂?xùn)練方案變成了全幀方案,往往會(huì)使網(wǎng)絡(luò)在關(guān)鍵幀上過度擬合。
中間的圖像即是最佳補(bǔ)丁大小Wp=36,較小的補(bǔ)丁可能無法提供足夠的上下文,較大的補(bǔ)丁可能會(huì)使網(wǎng)絡(luò)對目標(biāo)對象的變形,從而使得網(wǎng)絡(luò)對目標(biāo)對象的變形引起的外觀變化的抵抗力較差。
但在右圖中,令人驚訝的是,ResNet區(qū)塊數(shù)Nr對質(zhì)量沒有明顯影響,盡管有一個(gè)微妙的鞍點(diǎn)(saddle point),對學(xué)習(xí)率參數(shù)α進(jìn)行實(shí)驗(yàn)也能發(fā)現(xiàn)類似的效果。
在將所有的超參數(shù)優(yōu)化后,研究人員發(fā)現(xiàn),對于有效像素10%、分辨率640×640的視頻序列,可以以每秒17幀的速度進(jìn)行風(fēng)格轉(zhuǎn)換。
研究人員利用了一組分辨率從350×350到960×540的視頻序列對系統(tǒng)進(jìn)行了評估,這些視頻包含不同的視覺內(nèi)容,如人臉、人體等,以及不同的藝術(shù)風(fēng)格,如油畫、粉筆畫等。
對于相對簡單的序列而言,僅使用一個(gè)關(guān)鍵幀就可以進(jìn)行樣式轉(zhuǎn)換,更復(fù)雜的序列則需要使用多個(gè)關(guān)鍵幀。在訓(xùn)練前,研究人員利用雙側(cè)時(shí)間濾波器(bilateral temporal filter)對目標(biāo)序列進(jìn)行了預(yù)濾波,當(dāng)序列包含有不明確內(nèi)容時(shí),計(jì)算一個(gè)輔助輸入層利用到了隨機(jī)有色的高斯混合,以跟蹤目標(biāo)序列中的運(yùn)動(dòng)。
在訓(xùn)練階段,研究人員從所有關(guān)鍵幀k中隨機(jī)抽取掩碼Mk內(nèi)的補(bǔ)丁,將它們分批反饋給網(wǎng)絡(luò)來計(jì)算丟失和反向傳播錯(cuò)誤,隨后在Nvidia RTX 2080 GPU上進(jìn)行訓(xùn)練和推理。訓(xùn)練時(shí)間與輸入補(bǔ)丁數(shù)量成正比,例如,對于包含掩碼內(nèi)所有像素的512×512關(guān)鍵幀,訓(xùn)練時(shí)間為5分鐘。訓(xùn)練完成后,整個(gè)序列可以以大約每秒17幀的速度進(jìn)行風(fēng)格轉(zhuǎn)換。
實(shí)時(shí)樣式轉(zhuǎn)換如何煉成?
相關(guān)樣式轉(zhuǎn)換的技術(shù)早在2016年就有人想到了,當(dāng)時(shí),在一篇名為“使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像樣式轉(zhuǎn)換”的論文中,研究人員提出了一種結(jié)合了VGG與CNN的轉(zhuǎn)換技術(shù),能夠做到把內(nèi)容與樣式有效區(qū)分的同時(shí),保留內(nèi)容轉(zhuǎn)換樣式。
在這之后,出現(xiàn)了一些將該項(xiàng)技術(shù)推廣到電影或視頻領(lǐng)域的應(yīng)用,其中找到分離圖像內(nèi)容和樣式的損失函數(shù)是關(guān)鍵。
2019年,有研究人員提出了一種機(jī)制更改視頻的一個(gè)關(guān)鍵幀,并將其傳輸?shù)搅硪粋€(gè)序列(整個(gè)視頻)中的方法,這種基于補(bǔ)丁的輸出能夠得到高質(zhì)量的結(jié)果輸出。
不過,這些轉(zhuǎn)換技術(shù)仍然只能針對連續(xù)視頻進(jìn)行樣式轉(zhuǎn)換,也就是說,它們不支持隨機(jī)訪問、并行處理和實(shí)時(shí)交互,而這些正是能夠?qū)崟r(shí)轉(zhuǎn)換圖像的技術(shù)核心。
為了實(shí)現(xiàn)實(shí)時(shí)樣式轉(zhuǎn)換,研究人員在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)對之前的研究進(jìn)行了一定程度的參考,比如在設(shè)計(jì)濾波器時(shí),他們采用了一種基于U-net的圖像到圖像轉(zhuǎn)換框架,這種自定義網(wǎng)絡(luò)架構(gòu)能夠保留原始風(fēng)格范例的重要高頻細(xì)節(jié)。
但是在訓(xùn)練過程中,他們發(fā)現(xiàn)系統(tǒng)產(chǎn)生的結(jié)果質(zhì)量無法達(dá)到標(biāo)準(zhǔn),這是因?yàn)樵季W(wǎng)絡(luò)是基于FaceStyle算法產(chǎn)生的大量風(fēng)格樣本數(shù)據(jù)集訓(xùn)練,這導(dǎo)致該方法在很多場景下不可使用。同時(shí),原始方法沒有考慮到時(shí)間的連貫性,生成的序列也包含了明顯的時(shí)間閃爍。
為此,研究人員改變了網(wǎng)絡(luò)的訓(xùn)練方式,并提出了一個(gè)優(yōu)化問題,允許對網(wǎng)絡(luò)的結(jié)構(gòu)和超參數(shù)進(jìn)行微調(diào),以獲得與當(dāng)前最先進(jìn)的風(fēng)格化質(zhì)量相媲美的風(fēng)格化質(zhì)量,這樣的話,即使只有少量的訓(xùn)練樣本也可實(shí)現(xiàn)目的,而且訓(xùn)練時(shí)間較短。
當(dāng)然,除了濾波器設(shè)計(jì)之外,要實(shí)現(xiàn)實(shí)時(shí)樣式的轉(zhuǎn)換,研究團(tuán)隊(duì)還做出了不少創(chuàng)新,文摘菌在這里就不過多劇透了,想要了解更多細(xì)節(jié)的小伙伴們快去原文挖寶吧~
總結(jié)
以上是生活随笔為你收集整理的只用C++和Python,让你的简笔画实时动起来!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《趁早》原版歌词 《趁早》谁唱的?
- 下一篇: 【IT之家开箱】华为 P40 Pro+