1
本文作者: 張丹 | 2017-01-10 09:07 | 專題:雷峰網(wǎng)公開課 |
人工智能濾鏡曾一度刷爆朋友圈,Prisma、電影《你的名字》同款濾鏡都是如此,但人工智能在圖像方面的進(jìn)展遠(yuǎn)不止這些。
除了打造“藝術(shù)濾鏡”,人工智能還可以幫助用戶根據(jù)需要生成圖片、增加紋理、對(duì)原本像素很差的圖片進(jìn)行超分辨率處理,助你成為“畫家”。其中用到的技術(shù)也與最近很火的“生成對(duì)抗網(wǎng)絡(luò)”(GANs)有關(guān)。
本期公開課,雷鋒網(wǎng)請(qǐng)到了圖普科技機(jī)器學(xué)習(xí)工程師 Vincent 為大家揭開 AI 可以助你成為“畫家”的秘密。 Vincent 曾在英國留學(xué)兩年,回國后加入圖普,擔(dān)任機(jī)器學(xué)習(xí)工程師一職,參與圖普多個(gè)產(chǎn)品的研發(fā)工作,立誓要搞深度學(xué)習(xí)搞到死。
嘉賓介紹:
Vincent,圖普科技機(jī)器學(xué)習(xí)工程師,主要從事工業(yè)級(jí)深度學(xué)習(xí)算法的研發(fā)。曾任摩根大通歐洲技術(shù)中心分析師,IBM愛丁堡辦公室軟件工程師。熟悉自然語言處理(文本分類,語言模型等),圖像轉(zhuǎn)換(藝術(shù)濾鏡、圖片上色等)和分類算法。
以下內(nèi)容章整理自公開課分享。
|深度神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別領(lǐng)域的進(jìn)展
自從 2012 年 Alexnet 橫空出世,一舉奪得 ImageNet 圖片分類大賽冠軍之后,深度學(xué)習(xí)一飛沖天,以卷積網(wǎng)絡(luò)為首的深度神經(jīng)網(wǎng)絡(luò)不斷刷新各種計(jì)算機(jī)視覺任務(wù)的 State-of –the-art 。過去四五年間,我們可以看到學(xué)術(shù)界不斷地開發(fā)出各種不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò),而且,這些結(jié)構(gòu)并不僅僅是在 Alexnet 的基礎(chǔ)上加深層數(shù),而是自成一派,各有所長。
本次公開課重點(diǎn)分享三種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):
Network in Network(NIN,網(wǎng)絡(luò)中的網(wǎng)絡(luò)):卷積網(wǎng)絡(luò)是一種線性操作,非線性的表現(xiàn)能力有限,NIN 的研發(fā)者設(shè)計(jì)了比起傳統(tǒng)的卷積網(wǎng)絡(luò)更復(fù)雜的操作 —— MLPconv,并用 Global average pooling 極大的改進(jìn)了卷積網(wǎng)絡(luò)的大小。
VGG 和 GoogLeNet(inception_v1):二者是 2014 年 ImageNet 競賽的雙雄。VGG 的設(shè)計(jì)理念,全部都用了 3x3 卷積,增加了網(wǎng)絡(luò)的深度。 GoogLeNet 屬于Google 的 Inception 系列,用了比較花式的網(wǎng)絡(luò)設(shè)計(jì),旨在減少網(wǎng)絡(luò)的運(yùn)算量,加快訓(xùn)練 。
Resnet(深度殘差網(wǎng)絡(luò)): 根據(jù)無限逼近定理(Universal Approximation Theorem),我們可以用一個(gè)一層的神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)任意的維到維的映射,但網(wǎng)絡(luò)的參數(shù)量(網(wǎng)絡(luò)的寬度)會(huì)隨著問題復(fù)雜度的增加變得非常大,而增加網(wǎng)絡(luò)的深度則可以讓我們用更少的參數(shù)量實(shí)現(xiàn)同樣的映射。但是,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,它們的訓(xùn)練也會(huì)變得越來越困難,因?yàn)樵谟?xùn)練時(shí)會(huì)出現(xiàn)梯度消失的狀況。Resnet 很好的解決了這個(gè)問題,讓訓(xùn)練達(dá)1000多層的神經(jīng)網(wǎng)絡(luò)變得可能。
除了圖片分類,以 RCNN 系列為首的神經(jīng)網(wǎng)絡(luò)技術(shù)在物體檢測任務(wù)上也取得了重大進(jìn)展,近年來也出現(xiàn)了速度更快(YOLO),效果更好的算法(SSD)。
最近很火的 GAN 是一個(gè)訓(xùn)練框架,在 GAN 出現(xiàn)之前, 生成模型的訓(xùn)練是一件相對(duì)較困難的事情,GAN 出現(xiàn)后,生成模型訓(xùn)練的效率大大提高。
GAN的應(yīng)用大部分也是生成模型的應(yīng)用,用來生成圖片、音樂、文字等。但是對(duì)抗訓(xùn)練對(duì)訓(xùn)練判別模型也是有非常大的幫助的,因?yàn)殡m然有非線性的激活函數(shù),但深度網(wǎng)絡(luò)依然是高度線性的,會(huì)對(duì)誤差進(jìn)行累積,累積的誤差結(jié)果通過肉眼分辨不出來,但是可以從卷積網(wǎng)絡(luò)中看出。但與普通線性模型不同,深度神經(jīng)網(wǎng)絡(luò)可以擬合對(duì)抗訓(xùn)練可以很好的解決這個(gè)問題,解決方式是生成對(duì)抗樣本,使得網(wǎng)絡(luò)對(duì)對(duì)抗樣本的容忍性更強(qiáng)些。
GAN這一兩年來產(chǎn)生了許多非常有意思的應(yīng)用,其中包括上期公開課中馮佳時(shí)博士提到的超分辨率,旨在把低分辨率的圖片放大,而盡量不讓其清晰度受影響。
|紋理轉(zhuǎn)換
近幾個(gè)月比較火的紋理轉(zhuǎn)換也就是所謂的圖片風(fēng)格化,在深度學(xué)習(xí)之前,這也是一個(gè)非常困難的問題。其本質(zhì)原因在于之前非深度學(xué)習(xí)的方法只能獲取到目標(biāo)圖片低層次的圖片特征,這導(dǎo)致這些方法無法獨(dú)立的對(duì)圖片的語義內(nèi)容和風(fēng)格的變化進(jìn)行有效地建模,從而無法很好地對(duì)兩者進(jìn)行解耦和合成。
風(fēng)格化算法現(xiàn)在更迭了兩代。
第一代風(fēng)格化算法:Neural Style
2015年的時(shí)候,德國圖賓根大學(xué)的學(xué)者們提出了一種用深度神經(jīng)網(wǎng)絡(luò)各層的響應(yīng)來表達(dá)圖片的風(fēng)格和內(nèi)容的辦法,方法可概括為:
準(zhǔn)備好在 ImageNet 數(shù)據(jù)集上訓(xùn)練好的 VGG 網(wǎng)絡(luò),然后選取其中的某些層作為風(fēng)格語義的提取層,某些層作為內(nèi)容語義的提取層;
用這個(gè)訓(xùn)練好的 VGG 提取風(fēng)格圖片代表風(fēng)格的高層語義信息,具體為,把風(fēng)格圖片作為 VGG 的輸入,然后提取在風(fēng)格語義選取層激活值的格拉姆矩陣(Gramian Matrix)。值得一提的是,格拉姆矩陣的數(shù)學(xué)意義使得其可以很好地捕捉激活值之間的相關(guān)性,所以能很好地表現(xiàn)圖片的風(fēng)格特征;
用 VGG 提取被風(fēng)格化圖片代表內(nèi)容的高層語義信息,具體為,把該圖片作為 VGG 的輸入,然后提取內(nèi)容語義提取層的激活值。這個(gè)方法很好地利用了卷積神經(jīng)網(wǎng)絡(luò)的性質(zhì),既捕捉了圖片元素的結(jié)構(gòu)信息,又對(duì)細(xì)節(jié)有一定的容錯(cuò)度;
隨機(jī)初始化一張圖片,然后用2,3介紹的方法提取其風(fēng)格,內(nèi)容特征,然后將它們分別與風(fēng)格圖片的風(fēng)格特征,內(nèi)容圖片的內(nèi)容特征相減,再按一定的權(quán)重相加,作為優(yōu)化的目標(biāo)函數(shù)。
保持 VGG 的權(quán)重不不變,直接對(duì)初始化的圖?做梯度下降,直至目標(biāo)函數(shù)降至一個(gè)比較小的值。
這個(gè)方法的風(fēng)格化效果震驚了學(xué)術(shù)界,但它的缺點(diǎn)也是顯而易見的,由于這種風(fēng)格化方式本質(zhì)上是一個(gè)利用梯度下降迭代優(yōu)化的過程,所以盡管其效果不不錯(cuò),但是風(fēng)格化的速度較慢,處理一張圖片在GPU上大概需要十幾秒。deepart.io這個(gè)網(wǎng)站就是運(yùn)用這個(gè)技術(shù)來進(jìn)行圖片紋理轉(zhuǎn)換的。
第二代風(fēng)格化算法:Fast Neural Style
有了可以解耦圖片風(fēng)格和內(nèi)容的方式,我們就能訓(xùn)練一個(gè)端到端的網(wǎng)絡(luò),使得我們只需要做一次前向,就能得到風(fēng)格化圖片。因此生成圖片大概的步驟是,根據(jù)轉(zhuǎn)化的網(wǎng)絡(luò)得到輸出,輸出至 VGG 網(wǎng)絡(luò),提取風(fēng)格特征后,跟風(fēng)格圖片的特質(zhì)做比較,內(nèi)容圖片的特征也會(huì)被提取,跟內(nèi)容圖片做比較。
這種算法的有點(diǎn)是速度快,可以在GPU上做到實(shí)時(shí)生成。去年年中火爆全世界的 Prisma,背后就是這個(gè)技術(shù)。但這個(gè)技術(shù)還是有缺陷的,比如由于卷積網(wǎng)絡(luò)固有的性質(zhì),它無法像手動(dòng)繪圖一樣對(duì)圖片的細(xì)節(jié)進(jìn)行精挑細(xì)選的處理,所以它像是一個(gè)豪放的印象派畫家,對(duì)一些對(duì)細(xì)節(jié)要求比較高的任務(wù),比如人物的動(dòng)漫化,這種方式是不太適合的。
所以,前段時(shí)間?較流行的《你的名字》同款濾鏡所用到的技術(shù)跟Prisma 并不一樣,我們猜測這個(gè)濾鏡不是端到端的,而是會(huì)先對(duì)原圖做像素分割,找出可能是天空的部分,然后加上新海誠特色的云,其他部分則會(huì)做一些濾鏡化處理。
紋理轉(zhuǎn)換的另外一個(gè)非常有意思的應(yīng)用是Neural Doodle,運(yùn)用這個(gè)技術(shù),我們可以讓三歲的小孩子都輕易地像莫奈一樣成為繪畫大師。這個(gè)技術(shù)本質(zhì)上其實(shí)就是先對(duì)一幅世界名畫(比如皮埃爾-奧古斯特·雷諾阿的Bank of a River)做一個(gè)像素分割,得出它的語義圖,讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)每個(gè)區(qū)域的風(fēng)格。
然后,我們只需要像小孩子一樣在這個(gè)語義圖上面涂鴉(比如,我們想要在圖片的中間畫一條河,在右上方畫一棵樹),神經(jīng)網(wǎng)絡(luò)就能根據(jù)語義圖上的區(qū)域渲染它,最后得出一幅印象派的大作。
大家如果有關(guān)注 AI 領(lǐng)域信息的話,可能也知道 Facebook 宣布了他們的 caffe2go 框架,并展示了他們?cè)谑謾C(jī)上的實(shí)時(shí)風(fēng)格化視頻,這項(xiàng)成果意義重大,主要體現(xiàn)在可以在手機(jī)端非常有效率的運(yùn)行人工智能的算法,把有趣的人工智能技術(shù)實(shí)現(xiàn)到你的手掌心。例如現(xiàn)在直播或視頻中可以在人臉上添加各種可愛小動(dòng)物表情的技術(shù)也是人工智能的技術(shù),其主要運(yùn)用了人臉關(guān)鍵點(diǎn)檢測技術(shù)。
實(shí)現(xiàn)視頻風(fēng)格化的難點(diǎn)在于:
像圖像風(fēng)格化這樣的重型應(yīng)用,如果要在手機(jī)上做到實(shí)時(shí)效果,需要有非常多工程上的優(yōu)化和算法方面,在盡量不影響效果的前提下減少網(wǎng)絡(luò)的參數(shù)量;
?起單圖片風(fēng)格化,視頻風(fēng)格化需要考量的東西會(huì)更多,單獨(dú)對(duì)視頻的每一幀進(jìn)行處理,不考慮幀與幀之間的關(guān)聯(lián),會(huì)造成風(fēng)格化的視頻抖動(dòng)和不協(xié)調(diào)。
|黑白照片上色
最后一個(gè)要介紹的技術(shù)為黑白照片上色(Colourful Image Colourization),想象一下,如果人工智能出色地完成這個(gè)任務(wù),我們便可以用它來為老照片,老電影增色,輕易地為漫畫上色了。本次公開課我會(huì)主要介紹去年 ECCV 里加州大學(xué)伯克利分校的一篇文章介紹的方法。這個(gè)方法與之前方法的不同之處在于,它把照片上色看成是一個(gè)分類問題——預(yù)測三百多種顏色在圖片每一個(gè)像素點(diǎn)上的概率分布。這種方法tackle了這個(gè)任務(wù)本身的不確定性,例如,當(dāng)你看到一個(gè)黑白的蘋果時(shí),你可能會(huì)覺得它是紅色的,但如果這個(gè)蘋果是青色的,其實(shí)也并沒有多少違和感。大家也可以到作者的網(wǎng)站網(wǎng)站來試用他們的demo。
這篇文章里面介紹的方法有兩個(gè)非常重要的trick:
顏色重平衡(Class rebalancing)
我們都知道,各個(gè)顏色在全世界所有彩色照片里面的分布是不一樣的。比如,大部分照片里面可能會(huì)有天空,墻壁,草地等。論文作者給出了 ImageNet 數(shù)據(jù)集中顏色的分布,可以看出,如果用 LAB 的方式來表示圖片(L 通道為像素的亮度,AB 通道表示顏色),ab 值比較低的顏色出現(xiàn)的頻率遠(yuǎn)高于其他顏色。
如果不考慮這個(gè)問題,我們的目標(biāo)函數(shù)會(huì)對(duì) ab 值?比較高的顏色極其不敏感。所以,論文作者提出了了一種方法——在訓(xùn)練時(shí)讓每一個(gè)像素點(diǎn)乘上一個(gè)系數(shù),系數(shù)的大小與該像素點(diǎn) ab 值的分布有關(guān)。運(yùn)用這個(gè)trick,輸出圖片的顏色會(huì)更有多樣性,更接近真實(shí)的圖片。
從概率分布得出預(yù)測顏色值(Point estimate)
我們知道,這個(gè)網(wǎng)絡(luò)的輸出是各個(gè)像素點(diǎn)ab值的概率分布,那么我們?nèi)绾稳ネㄟ^這個(gè)概率分布得出這個(gè)ab值呢?當(dāng)然,我們可以直接選擇概率最大的值作為我們的 prediction,這種做法下輸出圖片的顏色會(huì)更加鮮艷,但很多時(shí)候會(huì)有不自然的patch出現(xiàn)。另外一種做法是,取這個(gè)概率分布的均值作為prediction,這會(huì)導(dǎo)致我們的輸出圖片對(duì)比度非常低。作者在這篇文章里提出了一個(gè)折中的做法:我們可以調(diào)整Softmax 函數(shù)的 temperature,然后再求新的概率分布的均值。
這篇文章介紹的方法雖然效果很好,但它還是有缺陷的。比如,對(duì)狗的圖片上色時(shí),即使它沒有伸出舌頭,神經(jīng)網(wǎng)絡(luò)總是會(huì)“想象”它伸出了,然后在鼻子下面的一小塊區(qū)域涂上紅色。而且,上色后的圖片有時(shí)會(huì)出現(xiàn)一小塊突兀的 patch。
以上介紹的幾個(gè)技術(shù)都并不是完美的,但是瑕不掩瑜,我們能從中看到深度學(xué)習(xí)的潛力,明白它能做的遠(yuǎn)遠(yuǎn)不止是分類和檢測。我相信隨著社會(huì)對(duì)深度學(xué)習(xí)的熱情越來越大,更多有趣的成果會(huì)不斷產(chǎn)生。如果你覺得以上的技術(shù)很酷,那我保證,你的驚訝才剛剛開始。
|有關(guān)產(chǎn)品化的思考
當(dāng)然,要把學(xué)術(shù)界的成果應(yīng)用到工業(yè)界其實(shí)并不是一件容易的事情。我們做機(jī)器學(xué)習(xí)的都知道一個(gè)著名的定理叫No Free Lunch Theorem,它說的就是,我們并不可能找到對(duì)所有問題都最優(yōu)的算法。在ImageNet數(shù)據(jù)集上表現(xiàn)最好的算法,在工業(yè)級(jí)龐大、復(fù)雜、多變的數(shù)據(jù)上并不一定就會(huì)表現(xiàn)好。所以我們也根據(jù)各個(gè)客戶數(shù)據(jù)分布的不同做了很多特定的優(yōu)化。比如我們?cè)跒橛晨吞峁徍朔?wù),直播場景本身就非常多樣和復(fù)雜,我們發(fā)現(xiàn)當(dāng)直播視頻界面出現(xiàn)大量用手機(jī)或者電腦等電子產(chǎn)品播放另一個(gè)界面的內(nèi)容,相對(duì)整個(gè)圖片來說,內(nèi)容呈現(xiàn)部分所占比例很小且十分模糊、不明顯,當(dāng)出現(xiàn)色情、暴恐等不良信息的時(shí)候,人工以及標(biāo)準(zhǔn)化的審核模型難以精準(zhǔn)識(shí)別,誤判、漏判的概率較高。于是我們需要針對(duì)這個(gè)問題具體優(yōu)化,針對(duì)畫中畫的數(shù)據(jù)再做識(shí)別,然后再調(diào)用普通的審核模型。雷鋒網(wǎng)雷鋒網(wǎng)
圖普的產(chǎn)品目前已經(jīng)在多個(gè)行業(yè)領(lǐng)域取得很好的應(yīng)用,但它們暫時(shí)只能在一定程度上減少大部分審核人力,無法完全替代人工。這一輪融資過后,我們將加大在服務(wù)和計(jì)算能力方面的投入,提升產(chǎn)品運(yùn)行速度和魯棒性;在算法方面,繼續(xù)提高圖像識(shí)別準(zhǔn)確率和召回率,我們的愿景是完全解放審核人力,我們也將往審核之外的其他方向擴(kuò)張業(yè)務(wù),如人臉識(shí)別,增強(qiáng)現(xiàn)實(shí)等,提供更直接,高效和多樣化的任務(wù)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。