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