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