深度學習在計算機視覺領域的前沿進展

引言

在今年的神經網路頂級會議NIPS2016上,深度學習三大牛之一的Yann Lecun教授給出了一個關於機器學習中的有監督學習無監督學習增強學習的一個有趣的比喻,他說:如果把智能(Intelligence)比作一個蛋糕,那麼無監督學習就是蛋糕本體,增強學習是蛋糕上的櫻桃,那麼監督學習,僅僅能算作蛋糕上的糖霜(圖1)。

圖1. Yann LeCun 對監督學習,增強學習和無監督學習的價值的形象比喻

本文結合本人最近看的一些論文和文章,給出一個深度學習在計算機視覺領域的前沿進展的一個簡介,如有錯誤或瑕疵,請留言告知我,不勝感激!

1. 深度有監督學習在計算機視覺領域的進展

1.1 圖像分類(Image Classification)

自從Alex和他的導師Hinton(深度學習鼻祖)在2012年的ImageNet大規模圖像識別競賽(ILSVRC2012)中以超過第二名10個百分點的成績(83.6%的Top5精度)碾壓第二名(74.2%,使用傳統的計算機視覺方法)後,深度學習真正開始火熱,卷積神經網路(CNN)開始成為家喻戶曉的名字,從12年的AlexNet(83.6%),到2013年ImageNet 大規模圖像識別競賽冠軍的88.8%,再到2014年VGG的92.7%和同年的GoogLeNet的93.3%,終於,到了2015年,在1000類的圖像識別中,微軟提出的殘差網(ResNet)以96.43%的Top5正確率,達到了超過人類的水平(人類的正確率也只有94.9%).

Top5精度是指在給出一張圖片,模型給出5個最有可能的標籤,只要在預測的5個結果中包含正確標籤,即為正確

圖2. 2010-2015年ILSVRC競賽圖像識別錯誤率演進趨勢

1.2 圖像檢測(Image Dection)

伴隨著圖像分類任務,還有另外一個更加有挑戰的任務–圖像檢測,圖像檢測是指在分類圖像的同時把物體用矩形框給圈起來。從14年到16年,先後湧現出R-CNN,Fast R-CNN, Faster R-CNN, YOLO, SSD等知名框架,其檢測平均精度(mAP),在計算機視覺一個知名數據集上PASCAL VOC上的檢測平均精度(mAP),也從R-CNN的53.3%,到Fast RCNN的68.4%,再到Faster R-CNN的75.9%,最新實驗顯示,Faster RCNN結合殘差網(Resnet-101),其檢測精度可以達到83.8%。深度學習檢測速度也越來越快,從最初的RCNN模型,處理一張圖片要用2秒多,到Faster RCNN的198毫秒/張,再到YOLO的155幀/秒(其缺陷是精度較低,只有52.7%),最後出來了精度和速度都較高的SSD,精度75.1%,速度23幀/秒。

圖3. 圖像檢測示例

1.3 圖像分割(Semantic Segmentation)

圖像分割也是一項有意思的研究領域,它的目的是把圖像中各種不同物體給用不同顏色分割出來,如下圖所示,其平均精度(mIoU,即預測區域和實際區域交集除以預測區域和實際區域的並集),也從最開始的FCN模型(圖像語義分割全連接網路,該論文獲得計算機視覺頂會CVPR2015的最佳論文榮譽獎)的62.2%,到DeepLab框架的72.7%,再到牛津大學的CRF as RNN的74.7%。該領域是一個仍在進展的領域,仍舊有很大的進步空間。

圖4. 圖像分割的例子

1.4 圖像標註–看圖說話(Image Captioning)

圖像標註是一項引人注目的研究領域,它的研究目的是給出一張圖片,你給我用一段文字描述它,如圖中所示,圖片中第一個圖,程序自動給出的描述是「一個人在塵土飛揚的土路上騎摩托車」,第二個圖片是「兩隻狗在草地上玩耍」。由於該研究巨大的商業價值(例如圖片搜索),近幾年,工業界的百度,谷歌和微軟 以及學術界的加大伯克利,深度學習研究重地多倫多大學都在做相應的研究。

圖5.圖像標註,根據圖片生成描述文字

1.5 圖像生成–文字轉圖像(Image Generator)

圖片標註任務本來是一個半圓,既然我們可以從圖片產生描述文字,那麼我們也能從文字來生成圖片。如圖6所示,第一列「一架大客機在藍天飛翔」,模型自動根據文字生成了16張圖片,第三列比較有意思,「一群大象在乾燥草地行走」(這個有點違背常識,因為大象一般在雨林,不會在乾燥草地上行走),模型也相應的生成了對應圖片,雖然生成的質量還不算太好,但也已經中規中矩。

圖6.根據文字生成圖片

2.強化學習(Reinforcement Learning)

在監督學習任務中,我們都是給定樣本一個固定標籤,然後去訓練模型,可是,在真實環境中,我們很難給出所有樣本的標籤,這時候,強化學習就派上了用場。簡單來說,我們給定一些獎勵或懲罰,強化學習就是讓模型自己去試錯,模型自己去優化怎麼才能得到更多的分數。2016年大火的AlphaGo就是利用了強化學習去訓練,它在不斷的自我試錯和博弈中掌握了最優的策略。利用強化學習去玩flyppy bird,已經能夠玩到幾萬分了。

圖7. 強化學習玩flappy bird

谷歌DeepMind發表的使用增強學習來玩Atari遊戲,其中一個經典的遊戲是打磚塊(breakout),DeepMind提出的模型僅僅使用像素作為輸入,沒有任何其他先驗知識,換句話說,模型並不認識球是什麼,它玩的是什麼,令人驚訝的是,在經過240分鐘的訓練後,它不光學會了正確的接球,擊打磚塊,它甚至學會了持續擊打同一個位置,遊戲就勝利的越快(它的獎勵也越高)。視頻鏈接:Youtbe(需翻牆),優酷

圖8.使用深度增強學習來玩Atari Breakout 

強化學習在機器人領域和自動駕駛領域有極大的應用價值,當前arxiv上基本上每隔幾天就會有相應的論文出現。機器人去學習試錯來學習最優的表現,這或許是人工智慧進化的最優途徑,估計也是通向強人工智慧的必經之路。

3深度無監督學習(Deep Unsupervised Learning)–預測學習

相比有限的監督學習數據,自然界有無窮無盡的未標註數據。試想,如果人工智慧可以從龐大的自然界自動去學習,那豈不是開啟了一個新紀元?當前,最有前景的研究領域或許應屬無監督學習,這也正是Yann Lecun教授把無監督學習比喻成人工智慧大蛋糕的原因吧。

深度學習牛人Ian Goodfellow在2014年提出生成對抗網路後,該領域越來越火,成為16年研究最火熱的一個領域之一。大牛Yann LeCun曾說:「對抗網路是切片麵包發明以來最令人激動的事情。」大牛這句話足以說明生成對抗網路有多重要。

生成對抗網路的一個簡單解釋如下:假設有兩個模型,一個是生成模型(Generative Model,下文簡寫為G),一個是判別模型(Discriminative Model,下文簡寫為D),判別模型(D)的任務就是判斷一個實例是真實的還是由模型生成的,生成模型(G)的任務是生成一個實例來騙過判別模型(D),兩個模型互相對抗,發展下去就會達到一個平衡,生成模型生成的實例與真實的沒有區別,判別模型無法區分自然的還是模型生成的。以贗品商人為例,贗品商人(生成模型)製作出假的畢加索畫作來欺騙行家(判別模型D),贗品商人一直提升他的高仿水平來區分行家,行家也一直學習真的假的畢加索畫作來提升自己的辨識能力,兩個人一直博弈,最後贗品商人高仿的畢加索畫作達到了以假亂真的水平,行家最後也很難區分正品和贗品了。下圖是Goodfellow在發表生成對抗網路論文中的一些生成圖片,可以看出,模型生成的模型與真實的還是有大差別,但這是14年的論文了,16年這個領域進展非常快,相繼出現了條件生成對抗網路(Conditional Generative Adversarial Nets)和信息生成對抗網路(InfoGAN),深度卷積生成對抗網路(Deep Convolutional Generative Adversarial Network, DCGAN),更重要的是,當前生成對抗網路把觸角伸到了視頻預測領域,眾所周知,人類主要是靠視頻序列來理解自然界的,圖片只佔非常小的一部分,當人工智慧學會理解視頻後,它也真正開始顯現出威力了。

這裡推薦一篇2017年初Ian GoodFellow結合他在NIPS2016的演講寫出的綜述性論文NIPS 2016 Tutorial: Generative Adversarial Networks

圖9 生成對抗網路生成的一些圖片,最後邊一列是與訓練集中圖片最相近的生產圖片

3.1條件生成對抗網路(Conditional Generative Adversarial Nets,CGAN)

生成對抗網路一般是根據隨機雜訊來生成特定類型的圖像等實例,條件生成對抗網路則是根據一定的輸入來限定輸出,例如根據幾個描述名詞來生成特定的實例,這有點類似1.5節介紹的由文字生成圖像,下圖是Conditioanal Generative Adversarial Nets論文中的一張圖片,根據特定的名詞描述來生成圖片。(注意:左邊的一列圖片的描述文字是訓練集中不存在的,也就是說是模型根據沒有見過的描述來生成的圖片,右邊的一列圖片的描述是訓練集中存在的)

圖10. 根據文字來生成圖片

條件生成對抗網路的另一篇有意思的論文是圖像到圖像的翻譯,該論文提出的模型能夠根據一張輸入圖片,然後給出模型生成的圖片,下圖是論文中的一張圖,其中左上角第一對非常有意思,模型輸入圖像分割的結果,給出了生成的真實場景的結果,這類似於圖像分割的反向工程。

圖11. 根據特定輸入來生成一些有意思的輸出圖片

生成對抗網路也用在了圖像超解析度上,2016年有人提出SRGAN模型,它把原高清圖下採樣後,試圖用生成對抗網路模型來還原圖片來生成更為自然的,更逼近原圖像的圖像。下圖中最右邊是原圖,把他降採樣後採用三次差值(Bicubic Interpolation)得到的圖像比較模糊,採用殘差網路的版本(SRResNet)已經乾淨了很多,我們可以看到SRGAN生成的圖片更為真實一些。

圖12.生成對抗網路做超解析度的例子,最右邊是原始圖像

生成對抗網路的另一篇有影響力的論文是深度卷積生成對抗網路DCGAN,作者把卷積神經網路和生成對抗網路結合起來,作者指出該框架可以很好的學習事物的特徵,論文在圖像生成和圖像操作上給出了很有意思的結果,例如圖13,帶眼睛的男人-不戴眼鏡的男人+不帶眼睛的女人=帶眼睛的女人,該模型給出了圖片的類似向量化操作。

圖13. DCGAN論文中的例圖

生成對抗網路的發展是在是太火爆,一篇文章難以羅列完全,對此感興趣的朋友們可以自己在網路搜素相關論文來研究

openAI的一篇描述生成對抗網路的博客非常棒,因為Ian Goodfellow就在OpenAI工作,所以這篇博客的質量還是相當有保障的。鏈接為:Open AI 生成對抗網路博客

3.2 視頻預測

該方向是筆者自己最感興趣的方向,Yann LeCun也提出,「用預測學習來替代無監督學習」,預測學習通過觀察和理解這個世界是如何運作的,然後對世界的變化做出預測,機器學會了感知世界的變化,然後對世界的狀態進行了推斷。

今年的NIPS上,MIT的學者Vondrick等人發表了一篇名為Generating Videos with Scene Dynamics的論文,該論文提出了基於一幅靜態的圖片,模型自動推測接下來的場景,例如給出一張人站在沙灘的圖片,模型自動給出一段接下來的海浪涌動的小視頻。該模型是以無監督的方式,在大量的視頻上訓練而來的。該模型表明它可以自動學習到視頻中有用的特徵。下圖是作者的官方主頁上給出的圖,是動態圖,如果無法正常查看,請轉入官方網站

視頻生成例子,下圖的視頻是模型自動生成的,我們可以看到圖片不太完美,但已經能相當好的表示一個場景了。

圖14. 隨機生成的視頻,沙灘上波濤涌動,火車賓士的場景

條件視頻生成,下圖是輸入一張靜態圖,模型自動推演出一段小視頻。

圖15.根據一張草地靜態圖,模型自動推測人的移動場景,該圖為動圖,如果無法查看,請訪問

圖16.給出一張鐵道圖,模型自動推測火車跑過的樣子,該圖為動圖,如果無法查看,請訪問

MIT的CSAIL實驗室也放出了一篇博客,題目是《教會機器去預測未來》,該模型在youtube視頻和電視劇上(例如The Office和《絕望主婦》)訓練,訓練好以後,如果你給該模型一個親吻之前的圖片,該模型能自動推測出加下來擁抱親吻的動作,具體的例子見下圖。

圖17. 給出一張靜態圖,模型自動推測接下來的動作

哈佛大學的Lotter等人提出了PredNet,該模型也是在KITTI數據集上訓練,然後該模型就可以根據前面的視頻,預測行車記錄儀接下來幾幀的圖像,模型是用長短期記憶神經網路(LSTM)訓練得到的。具體例子見下圖,給出行車記錄儀前幾張的圖片,自動預測接下來的五幀場景,模型輸入幾幀圖像後,預測接下來的5幀,由圖可知,越往後,模型預測的越是模糊,但模型已經可以給出有參加價值的預測結果了。圖片是動圖,如果無法正常查看,請訪問論文作者的博客

圖18. 給出行車記錄儀前幾張的圖片,自動預測接下來的五幀場景,該圖為動圖,如果無法查看,請訪問

4 總結

生成對抗網路,無監督學習視頻預測的論文實在是太多,本人精力實在有限,對此感興趣的讀者可以每天刷一下arxiv的計算機視覺版塊的計算機視覺和模型識別,神經網路和進化計算和人工智慧等相應版塊,基本上每天都有這方面新論文出現。圖像檢測和分割,增強學習,生成對抗網路,預測學習都是人工智慧發展火熱的方向,希望對深度學習感興趣的我們在這方面能做出來點成果。謝謝朋友們的閱讀,對深度無監督學習感興趣的朋友,歡迎一起學習交流,請私信我。

5 參考文獻

在寫本文的過程中,我盡量把論文網址以鏈接的形式附著在正文中.本文參考的大部分博客和論文整理如下,方便大家和自己以後研究查看。

參考博客

    1. 【NIPS 主旨演講】Yann LeCun:用預測學習替代無監督學習
    2. 計算機視覺和 CNN 發展十一座里程碑
    3. Generative Models
    4. Generating Videos with Scene Dynamics
    5. Teaching machines to predict the future

  • 參考論文

    1. 圖像分類,超過人類的計算機識別水平。Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification
    2. 圖像檢測 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    3. 圖像分割Conditional Random Fields as Recurrent Neural Networks
    4. 圖像標註,看圖說話 Show and Tell: A Neural Image Caption Generator
    5. 文字生成圖像Generative Adversarial Text to Image Synthesis
    6. 強化學習玩flyppy bird Using Deep Q-Network to Learn How To Play Flappy Bird
    7. 強化學習玩Atari遊戲 Playing Atari with Deep Reinforcement Learning
    8. 生成對抗網路 Generative Adversarial Networks
    9. 條件生成對抗網路Conditional Generative Adversarial Nets
    10. 生成對抗網路做圖像超解析度Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
    11. 深度卷積生成對抗網路Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
    12. 由圖片推演視頻Generating Videos with Scene Dynamics
    13. 視頻預測和無監督學習Deep Predictive Coding Networks for Video Prediction and Unsupervised Learning

推薦閱讀:

為什麼稀疏自編碼器很少見到多層的?
一個無監督學習演算法,如何判斷其好壞呢?

TAG:深度学习DeepLearning | 计算机视觉 | 无监督学习 |