深度學(xué)習(xí)與計(jì)算機(jī)視覺 看這一篇就夠了
人工智能是人類一個(gè)非常美好的夢(mèng)想,跟星際漫游和長(zhǎng)生不老一樣。我們想制造出一種機(jī)器,使得它跟人一樣具有一定的對(duì)外界事物感知能力,比如看見世界。
本文引用地址:http://butianyuan.cn/article/201708/363733.htm在上世紀(jì)50年代,數(shù)學(xué)家圖靈提出判斷機(jī)器是否具有人工智能的標(biāo)準(zhǔn):圖靈測(cè)試。即把機(jī)器放在一個(gè)房間,人類測(cè)試員在另一個(gè)房間,人跟機(jī)器聊天,測(cè)試員事先不知道另一房間里是人還是機(jī)器 。經(jīng)過(guò)聊天,如果測(cè)試員不能確定跟他聊天的是人還是機(jī)器的話,那么圖靈測(cè)試就通過(guò)了,也就是說(shuō)這個(gè)機(jī)器具有與人一樣的感知能力。
但是從圖靈測(cè)試提出來(lái)開始到本世紀(jì)初,50多年時(shí)間有無(wú)數(shù)科學(xué)家提出很多機(jī)器學(xué)習(xí)的算法,試圖讓計(jì)算機(jī)具有與人一樣的智力水平,但直到2006年深度學(xué)習(xí)算法的成功,才帶來(lái)了一絲解決的希望。
眾星捧月的深度學(xué)習(xí)
深度學(xué)習(xí)在很多學(xué)術(shù)領(lǐng)域,比非深度學(xué)習(xí)算法往往有20-30%成績(jī)的提高。很多大公司也逐漸開始出手投資這種算法,并成立自己的深度學(xué)習(xí)團(tuán)隊(duì),其中投入最大的就是谷歌,2008年6月披露了谷歌腦項(xiàng)目。2014年1月谷歌收購(gòu)DeepMind,然后2016年3月其開發(fā)的Alphago算法在圍棋挑戰(zhàn)賽中,戰(zhàn)勝了韓國(guó)九段棋手李世石,證明深度學(xué)習(xí)設(shè)計(jì)出的算法可以戰(zhàn)勝這個(gè)世界上最強(qiáng)的選手。
在硬件方面,Nvidia最開始做顯示芯片,但從2006及2007年開始主推用GPU芯片進(jìn)行通用計(jì)算,它特別適合深度學(xué)習(xí)中大量簡(jiǎn)單重復(fù)的計(jì)算量。目前很多人選擇Nvidia的CUDA工具包進(jìn)行深度學(xué)習(xí)軟件的開發(fā)。
微軟從2012年開始,利用深度學(xué)習(xí)進(jìn)行機(jī)器翻譯和中文語(yǔ)音合成工作,其人工智能小娜背后就是一套自然語(yǔ)言處理和語(yǔ)音識(shí)別的數(shù)據(jù)算法。
百度在2013年宣布成立百度研究院,其中最重要的就是百度深度學(xué)習(xí)研究所,當(dāng)時(shí)招募了著名科學(xué)家余凱博士。不過(guò)后來(lái)余凱離開百度,創(chuàng)立了另一家從事深度學(xué)習(xí)算法開發(fā)的公司地平線。
Facebook和Twitter也都各自進(jìn)行了深度學(xué)習(xí)研究,其中前者攜手紐約大學(xué)教授Yann Lecun,建立了自己的深度學(xué)習(xí)算法實(shí)驗(yàn)室;2015年10月,F(xiàn)acebook宣布開源其深度學(xué)習(xí)算法框架,即Torch框架。Twitter在2014年7月收購(gòu)了Madbits,為用戶提供高精度的圖像檢索服務(wù)。
前深度學(xué)習(xí)時(shí)代的計(jì)算機(jī)視覺
互聯(lián)網(wǎng)巨頭看重深度學(xué)習(xí)當(dāng)然不是為了學(xué)術(shù),主要是它能帶來(lái)巨大的市場(chǎng)。那為什么在深度學(xué)習(xí)出來(lái)之前,傳統(tǒng)算法為什么沒有達(dá)到深度學(xué)習(xí)的精度?
在深度學(xué)習(xí)算法出來(lái)之前,對(duì)于視覺算法來(lái)說(shuō),大致可以分為以下5個(gè)步驟:特征感知,圖像預(yù)處理,特征提取,特征篩選,推理預(yù)測(cè)與識(shí)別。早期的機(jī)器學(xué)習(xí)中,占優(yōu)勢(shì)的統(tǒng)計(jì)機(jī)器學(xué)習(xí)群體中,對(duì)特征是不大關(guān)心的。
我認(rèn)為,計(jì)算機(jī)視覺可以說(shuō)是機(jī)器學(xué)習(xí)在視覺領(lǐng)域的應(yīng)用,所以計(jì)算機(jī)視覺在采用這些機(jī)器學(xué)習(xí)方法的時(shí)候,不得不自己設(shè)計(jì)前面4個(gè)部分。
但對(duì)任何人來(lái)說(shuō)這都是一個(gè)比較難的任務(wù)。傳統(tǒng)的計(jì)算機(jī)識(shí)別方法把特征提取和分類器設(shè)計(jì)分開來(lái)做,然后在應(yīng)用時(shí)再合在一起,比如如果輸入是一個(gè)摩托車圖像的話,首先要有一個(gè)特征表達(dá)或者特征提取的過(guò)程,然后把表達(dá)出來(lái)的特征放到學(xué)習(xí)算法中進(jìn)行分類的學(xué)習(xí)。
過(guò)去20年中出現(xiàn)了不少優(yōu)秀的特征算子,比如最著名的SIFT算子,即所謂的對(duì)尺度旋轉(zhuǎn)保持不變的算子。它被廣泛地應(yīng)用在圖像比對(duì),特別是所謂的structure from motion這些應(yīng)用中,有一些成功的應(yīng)用例子。另一個(gè)是HoG算子,它可以提取物體,比較魯棒的物體邊緣,在物體檢測(cè)中扮演著重要的角色。
這些算子還包括Textons,Spin image,RIFT和GLOH,都是在深度學(xué)習(xí)誕生之前或者深度學(xué)習(xí)真正的流行起來(lái)之前,占領(lǐng)視覺算法的主流。
幾個(gè)(半)成功例子
這些特征和一些特定的分類器組合取得了一些成功或半成功的例子,基本達(dá)到了商業(yè)化的要求但還沒有完全商業(yè)化。
一是八九十年代的指紋識(shí)別算法,它已經(jīng)非常成熟,一般是在指紋的圖案上面去尋找一些關(guān)鍵點(diǎn),尋找具有特殊幾何特征的點(diǎn),然后把兩個(gè)指紋的關(guān)鍵點(diǎn)進(jìn)行比對(duì),判斷是否匹配。
然后是2001年基于Haar的人臉檢測(cè)算法,在當(dāng)時(shí)的硬件條件下已經(jīng)能夠達(dá)到實(shí)時(shí)人臉檢測(cè),我們現(xiàn)在所有手機(jī)相機(jī)里的人臉檢測(cè),都是基于它或者它的變種。
第三個(gè)是基于HoG特征的物體檢測(cè),它和所對(duì)應(yīng)的SVM分類器組合起來(lái)的就是著名的DPM算法。DPM算法在物體檢測(cè)上超過(guò)了所有的算法,取得了比較不錯(cuò)的成績(jī)。
但這種成功例子太少了,因?yàn)槭止ぴO(shè)計(jì)特征需要大量的經(jīng)驗(yàn),需要你對(duì)這個(gè)領(lǐng)域和數(shù)據(jù)特別了解,然后設(shè)計(jì)出來(lái)特征還需要大量的調(diào)試工作。說(shuō)白了就是需要一點(diǎn)運(yùn)氣。
另一個(gè)難點(diǎn)在于,你不只需要手工設(shè)計(jì)特征,還要在此基礎(chǔ)上有一個(gè)比較合適的分類器算法。同時(shí)設(shè)計(jì)特征然后選擇一個(gè)分類器,這兩者合并達(dá)到最優(yōu)的效果,幾乎是不可能完成的任務(wù)。
仿生學(xué)角度看深度學(xué)習(xí)
如果不手動(dòng)設(shè)計(jì)特征,不挑選分類器,有沒有別的方案呢?能不能同時(shí)學(xué)習(xí)特征和分類器?即輸入某一個(gè)模型的時(shí)候,輸入只是圖片,輸出就是它自己的標(biāo)簽。比如輸入一個(gè)明星的頭像,出來(lái)的標(biāo)簽就是一個(gè)50維的向量(如果要在50個(gè)人里識(shí)別的話),其中對(duì)應(yīng)明星的向量是1,其他的位置是0。
這種設(shè)定符合人類腦科學(xué)的研究成果。
1981年諾貝爾醫(yī)學(xué)生理學(xué)獎(jiǎng)?lì)C發(fā)給了David Hubel,一位神經(jīng)生物學(xué)家。他的主要研究成果是發(fā)現(xiàn)了視覺系統(tǒng)信息處理機(jī)制,證明大腦的可視皮層是分級(jí)的。他的貢獻(xiàn)主要有兩個(gè),一是他認(rèn)為人的視覺功能一個(gè)是抽象,一個(gè)是迭代。抽象就是把非常具體的形象的元素,即原始的光線像素等信息,抽象出來(lái)形成有意義的概念。這些有意義的概念又會(huì)往上迭代,變成更加抽象,人可以感知到的抽象概念。
像素是沒有抽象意義的,但人腦可以把這些像素連接成邊緣,邊緣相對(duì)像素來(lái)說(shuō)就變成了比較抽象的概念;邊緣進(jìn)而形成球形,球形然后到氣球,又是一個(gè)抽象的過(guò)程,大腦最終就知道看到的是一個(gè)氣球。
模擬人腦識(shí)別人臉,也是抽象迭代的過(guò)程,從最開始的像素到第二層的邊緣,再到人臉的部分,然后到整張人臉,是一個(gè)抽象迭代的過(guò)程。
再比如看到圖片中的摩托車,我們可能在腦子里就幾微秒的時(shí)間,但是經(jīng)過(guò)了大量的神經(jīng)元抽象迭代。對(duì)計(jì)算機(jī)來(lái)說(shuō)最開始看到的根本也不是摩托車,而是RGB圖像三個(gè)通道上不同的數(shù)字。
所謂的特征或者視覺特征,就是把這些數(shù)值給綜合起來(lái)用統(tǒng)計(jì)或非統(tǒng)計(jì)的形式,把摩托車的部件或者整輛摩托車表現(xiàn)出來(lái)。深度學(xué)習(xí)的流行之前,大部分的設(shè)計(jì)圖像特征就是基于此,即把一個(gè)區(qū)域內(nèi)的像素級(jí)別的信息綜合表現(xiàn)出來(lái),利于后面的分類學(xué)習(xí)。
如果要完全模擬人腦,我們也要模擬抽象和遞歸迭代的過(guò)程,把信息從最細(xì)瑣的像素級(jí)別,抽象到“種類”的概念,讓人能夠接受。
卷積的概念
計(jì)算機(jī)視覺里經(jīng)常使卷積神經(jīng)網(wǎng)絡(luò),即CNN,是一種對(duì)人腦比較精準(zhǔn)的模擬。
什么是卷積?卷積就是兩個(gè)函數(shù)之間的相互關(guān)系,然后得出一個(gè)新的值,他是在連續(xù)空間做積分計(jì)算,然后在離散空間內(nèi)求和的過(guò)程。實(shí)際上在計(jì)算機(jī)視覺里面,可以把卷積當(dāng)做一個(gè)抽象的過(guò)程,就是把小區(qū)域內(nèi)的信息統(tǒng)計(jì)抽象出來(lái)。
比如,對(duì)于一張愛因斯坦的照片,我可以學(xué)習(xí)n個(gè)不同的卷積和函數(shù),然后對(duì)這個(gè)區(qū)域進(jìn)行統(tǒng)計(jì)。可以用不同的方法統(tǒng)計(jì),比如著重統(tǒng)計(jì)中央,也可以著重統(tǒng)計(jì)周圍,這就導(dǎo)致統(tǒng)計(jì)的和函數(shù)的種類多種多樣,為了達(dá)到可以同時(shí)學(xué)習(xí)多個(gè)統(tǒng)計(jì)的累積和。
上圖中是,如何從輸入圖像怎么到最后的卷積,生成的響應(yīng)map。首先用學(xué)習(xí)好的卷積和對(duì)圖像進(jìn)行掃描,然后每一個(gè)卷積和會(huì)生成一個(gè)掃描的響應(yīng)圖,我們叫response map,或者叫feature map。如果有多個(gè)卷積和,就有多個(gè)feature map。也就說(shuō)從一個(gè)最開始的輸入圖像(RGB三個(gè)通道)可以得到256個(gè)通道的feature map,因?yàn)橛?56個(gè)卷積和,每個(gè)卷積和代表一種統(tǒng)計(jì)抽象的方式。
在卷積神經(jīng)網(wǎng)絡(luò)中,除了卷積層,還有一種叫池化的操作。池化操作在統(tǒng)計(jì)上的概念更明確,就是一個(gè)對(duì)一個(gè)小區(qū)域內(nèi)求平均值或者求最大值的統(tǒng)計(jì)操作。
帶來(lái)的結(jié)果是,如果之前我輸入有兩個(gè)通道的,或者256通道的卷積的響應(yīng)feature map,每一個(gè)feature map都經(jīng)過(guò)一個(gè)求最大的一個(gè)池化層,會(huì)得到一個(gè)比原來(lái)feature map更小的256的feature map。
在上面這個(gè)例子里,池化層對(duì)每一個(gè)2X2的區(qū)域求最大值,然后把最大值賦給生成的feature map的對(duì)應(yīng)位置。如果輸入圖像是100×100的話,那輸出圖像就會(huì)變成50×50,feature map變成了一半。同時(shí)保留的信息是原來(lái)2X2區(qū)域里面最大的信息。
操作的實(shí)例:LeNet網(wǎng)絡(luò)
Le顧名思義就是指人工智能領(lǐng)域的大牛Lecun。這個(gè)網(wǎng)絡(luò)是深度學(xué)習(xí)網(wǎng)絡(luò)的最初原型,因?yàn)橹暗木W(wǎng)絡(luò)都比較淺,它較深的。LeNet在98年就發(fā)明出來(lái)了,當(dāng)時(shí)Lecun在AT&T的實(shí)驗(yàn)室,他用這一網(wǎng)絡(luò)進(jìn)行字母識(shí)別,達(dá)到了非常好的效果。
怎么構(gòu)成呢?輸入圖像是32×32的灰度圖,第一層經(jīng)過(guò)了一組卷積和,生成了6個(gè)28X28的feature map,然后經(jīng)過(guò)一個(gè)池化層,得到得到6個(gè)14X14的feature map,然后再經(jīng)過(guò)一個(gè)卷積層,生成了16個(gè)10X10的卷積層,再經(jīng)過(guò)池化層生成16個(gè)5×5的feature map。
從最后16個(gè)5X5的feature map開始,經(jīng)過(guò)了3個(gè)全連接層,達(dá)到最后的輸出,輸出就是標(biāo)簽空間的輸出。由于設(shè)計(jì)的是只要對(duì)0到9進(jìn)行識(shí)別,所以輸出空間是10,如果要對(duì)10個(gè)數(shù)字再加上26個(gè)大小字母進(jìn)行識(shí)別的話,輸出空間就是62。62維向量里,如果某一個(gè)維度上的值最大,它對(duì)應(yīng)的那個(gè)字母和數(shù)字就是就是預(yù)測(cè)結(jié)果。
壓在駱駝身上的最后一根稻草
從98年到本世紀(jì)初,深度學(xué)習(xí)興盛起來(lái)用了15年,但當(dāng)時(shí)成果泛善可陳,一度被邊緣化。到2012年,深度學(xué)習(xí)算法在部分領(lǐng)域取得不錯(cuò)的成績(jī),而壓在駱駝身上最后一根稻草就是AlexNet。
AlexNet由多倫多大學(xué)幾個(gè)科學(xué)家開發(fā),在ImageNet比賽上做到了非常好的效果。當(dāng)時(shí)AlexNet識(shí)別效果超過(guò)了所有淺層的方法。此后,大家認(rèn)識(shí)到深度學(xué)習(xí)的時(shí)代終于來(lái)了,并有人用它做其它的應(yīng)用,同時(shí)也有些人開始開發(fā)新的網(wǎng)絡(luò)結(jié)構(gòu)。
其實(shí)AlexNet的結(jié)構(gòu)也很簡(jiǎn)單,只是LeNet的放大版。輸入是一個(gè)224X224的圖片,是經(jīng)過(guò)了若干個(gè)卷積層,若干個(gè)池化層,最后連接了兩個(gè)全連接層,達(dá)到了最后的標(biāo)簽空間。
去年,有些人研究出來(lái)怎么樣可視化深度學(xué)習(xí)出來(lái)的特征。那么,AlexNet學(xué)習(xí)出的特征是什么樣子?在第一層,都是一些填充的塊狀物和邊界等特征;中間的層開始學(xué)習(xí)一些紋理特征;更高接近分類器的層級(jí),則可以明顯看到的物體形狀的特征。
最后的一層,即分類層,完全是物體的不同的姿態(tài),根據(jù)不同的物體展現(xiàn)出不同姿態(tài)的特征了。
可以說(shuō),不論是對(duì)人臉,車輛,大象或椅子進(jìn)行識(shí)別,最開始學(xué)到的東西都是邊緣,繼而就是物體的部分,然后在更高層層級(jí)才能抽象到物體的整體。整個(gè)卷積神經(jīng)網(wǎng)絡(luò)在模擬人的抽象和迭代的過(guò)程。
為什么時(shí)隔20年卷土重來(lái)?
我們不禁要問(wèn):似乎卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)也不是很復(fù)雜,98年就已經(jīng)有一個(gè)比較像樣的雛形了。自由換算法和理論證明也沒有太多進(jìn)展。那為什么時(shí)隔20年,卷積神經(jīng)網(wǎng)絡(luò)才能卷土重來(lái),占領(lǐng)主流?
這一問(wèn)題與卷積神經(jīng)網(wǎng)絡(luò)本身的技術(shù)關(guān)系不太大,我個(gè)人認(rèn)為與其他一些客觀因素有關(guān)。
首先,卷積神經(jīng)網(wǎng)絡(luò)的深度太淺的話,識(shí)別能力往往不如一般的淺層模型,比如SVM或者boosting。但如果做得很深,就需要大量數(shù)據(jù)進(jìn)行訓(xùn)練,否則機(jī)器學(xué)習(xí)中的過(guò)擬合將不可避免。而2006及2007年開始,正好是互聯(lián)網(wǎng)開始大量產(chǎn)生各種各樣的圖片數(shù)據(jù)的時(shí)候。
另外一個(gè)條件是運(yùn)算能力。卷積神經(jīng)網(wǎng)絡(luò)對(duì)計(jì)算機(jī)的運(yùn)算要求比較高,需要大量重復(fù)可并行化的計(jì)算,在當(dāng)時(shí)CPU只有單核且運(yùn)算能力比較低的情況下,不可能進(jìn)行個(gè)很深的卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。隨著GPU計(jì)算能力的增長(zhǎng),卷積神經(jīng)網(wǎng)絡(luò)結(jié)合大數(shù)據(jù)的訓(xùn)練才成為可能。
最后一點(diǎn)就是人和。卷積神經(jīng)網(wǎng)絡(luò)有一批一直在堅(jiān)持的科學(xué)家(如Lecun)才沒有被沉默,才沒有被海量的淺層方法淹沒。然后最后終于看到卷積神經(jīng)網(wǎng)絡(luò)占領(lǐng)主流的曙光。
深度學(xué)習(xí)在視覺上的應(yīng)用
計(jì)算機(jī)視覺中比較成功的深度學(xué)習(xí)的應(yīng)用,包括人臉識(shí)別,圖像問(wèn)答,物體檢測(cè),物體跟蹤。
人臉識(shí)別
這里說(shuō)人臉識(shí)別中的人臉比對(duì),即得到一張人臉,與數(shù)據(jù)庫(kù)里的人臉進(jìn)行比對(duì);或同時(shí)給兩張人臉,判斷是不是同一個(gè)人。
這方面比較超前的是湯曉鷗教授,他們提出的DeepID算法在LWF上做得比較好。他們也是用卷積神經(jīng)網(wǎng)絡(luò),但在做比對(duì)時(shí),兩張人臉?lè)謩e提取了不同位置特征,然后再進(jìn)行互相比對(duì),得到最后的比對(duì)結(jié)果。最新的DeepID-3算法,在LWF達(dá)到了99.53%準(zhǔn)確度,與肉眼識(shí)別結(jié)果相差無(wú)幾。
圖片問(wèn)答問(wèn)題
這是2014年左右興起的課題,即給張圖片同時(shí)問(wèn)個(gè)問(wèn)題,然后讓計(jì)算機(jī)回答。比如有一個(gè)辦公室靠海的圖片,然后問(wèn)“桌子后面有什么”,神經(jīng)網(wǎng)絡(luò)輸出應(yīng)該是“椅子和窗戶”。
這一應(yīng)用引入了LSTM網(wǎng)絡(luò),這是一個(gè)專門設(shè)計(jì)出來(lái)具有一定記憶能力的神經(jīng)單元。特點(diǎn)是,會(huì)把某一個(gè)時(shí)刻的輸出當(dāng)作下一個(gè)時(shí)刻的輸入。可以認(rèn)為它比較適合語(yǔ)言等,有時(shí)間序列關(guān)系的場(chǎng)景。因?yàn)槲覀冊(cè)谧x一篇文章和句子的時(shí)候,對(duì)句子后面的理解是基于前面對(duì)詞語(yǔ)的記憶。
圖像問(wèn)答問(wèn)題是基于卷積神經(jīng)網(wǎng)絡(luò)和LSTM單元的結(jié)合,來(lái)實(shí)現(xiàn)圖像問(wèn)答。LSTM輸出就應(yīng)該是想要的答案,而輸入的就是上一個(gè)時(shí)刻的輸入,以及圖像的特征,及問(wèn)句的每個(gè)詞語(yǔ)。
物體檢測(cè)問(wèn)題
Region CNN
深度學(xué)習(xí)在物體檢測(cè)方面也取得了非常好的成果。2014年的Region CNN算法,基本思想是首先用一個(gè)非深度的方法,在圖像中提取可能是物體的圖形塊,然后深度學(xué)習(xí)算法根據(jù)這些圖像塊,判斷屬性和一個(gè)具體物體的位置。
為什么要用非深度的方法先提取可能的圖像塊?因?yàn)樵谧鑫矬w檢測(cè)的時(shí)候,如果你用掃描窗的方法進(jìn)行物體監(jiān)測(cè),要考慮到掃描窗大小的不一樣,長(zhǎng)寬比和位置不一樣,如果每一個(gè)圖像塊都要過(guò)一遍深度網(wǎng)絡(luò)的話,這種時(shí)間是你無(wú)法接受的。
所以用了一個(gè)折中的方法,叫Selective Search。先把完全不可能是物體的圖像塊去除,只剩2000左右的圖像塊放到深度網(wǎng)絡(luò)里面判斷。那么取得的成績(jī)是AP是58.5,比以往幾乎翻了一倍。有一點(diǎn)不盡如人意的是,region CNN的速度非常慢,需要10到45秒處理一張圖片。
Faster R-CNN方法
而且我在去年NIPS上,我們看到的有Faster R-CNN方法,一個(gè)超級(jí)加速版R-CNN方法。它的速度達(dá)到了每秒七幀,即一秒鐘可以處理七張圖片。技巧在于,不是用圖像塊來(lái)判斷是物體還是背景,而把整張圖像一起扔進(jìn)深度網(wǎng)絡(luò)里,讓深度網(wǎng)絡(luò)自行判斷哪里有物體,物體的方塊在哪里,種類是什么?
經(jīng)過(guò)深度網(wǎng)絡(luò)運(yùn)算的次數(shù)從原來(lái)的2000次降到一次,速度大大提高了。
Faster R-CNN提出了讓深度學(xué)習(xí)自己生成可能的物體塊,再用同樣深度網(wǎng)絡(luò)來(lái)判斷物體塊是否是背景?同時(shí)進(jìn)行分類,還要把邊界和給估計(jì)出來(lái)。
Faster R-CNN可以做到又快又好,在VOC2007上檢測(cè)AP達(dá)到73.2,速度也提高了兩三百倍。
YOLO
去年FACEBOOK提出來(lái)的YOLO網(wǎng)絡(luò),也是進(jìn)行物體檢測(cè),最快達(dá)到每秒鐘155幀,達(dá)到了完全實(shí)時(shí)。它讓一整張圖像進(jìn)入到神經(jīng)網(wǎng)絡(luò),讓神經(jīng)網(wǎng)絡(luò)自己判斷這物體可能在哪里,可能是什么。但它縮減了可能圖像塊的個(gè)數(shù),從原來(lái)Faster R-CNN的2000多個(gè)縮減縮減到了98個(gè)。
同時(shí)取消了Faster R-CNN里面的RPN結(jié)構(gòu),代替Selective Search結(jié)構(gòu)。YOLO里面沒有RPN這一步,而是直接預(yù)測(cè)物體的種類和位置。
YOLO的代價(jià)就是精度下降,在155幀的速度下精度只有52.7,45幀每秒時(shí)的精度是63.4。
SSD
在arXiv上出現(xiàn)的最新算法叫Single Shot MultiBox Detector,即SSD。
它是YOLO的超級(jí)改進(jìn)版,吸取了YOLO的精度下降的教訓(xùn),同時(shí)保留速度快的特點(diǎn)。它能達(dá)到58幀每秒,精度有72.1。速度超過(guò)Faster R-CNN 有8倍,但達(dá)到類似的精度。
物體跟蹤
所謂跟蹤,就是在視頻里面第一幀時(shí)鎖定感興趣的物體,讓計(jì)算機(jī)跟著走,不管怎么旋轉(zhuǎn)晃動(dòng),甚至躲在樹叢后面也要跟蹤。
深度學(xué)習(xí)對(duì)跟蹤問(wèn)題有很顯著的效果。DeepTrack算法是我在澳大利亞信息科技研究院時(shí)和同事提出的,是第一在線用深度學(xué)習(xí)進(jìn)行跟蹤的文章,當(dāng)時(shí)超過(guò)了其它所有的淺層算法。
今年有越來(lái)越多深度學(xué)習(xí)跟蹤算法提出。去年十二月ICCV 2015上面,馬超提出的Hierarchical Convolutional Feature算法,在數(shù)據(jù)上達(dá)到最新的記錄。它不是在線更新一個(gè)深度學(xué)習(xí)網(wǎng)絡(luò),而是用一個(gè)大網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,然后讓大網(wǎng)絡(luò)知道什么是物體什么不是物體。
將大網(wǎng)絡(luò)放在跟蹤視頻上面,然后再分析網(wǎng)絡(luò)在視頻上產(chǎn)生的不同特征,用比較成熟的淺層跟蹤算法來(lái)進(jìn)行跟蹤,這樣利用了深度學(xué)習(xí)特征學(xué)習(xí)比較好的好處,同時(shí)又利用了淺層方法速度較快的優(yōu)點(diǎn)。效果是每秒鐘10幀,同時(shí)精度破了記錄。
最新的跟蹤成果是基于Hierarchical Convolutional Feature,由一個(gè)韓國(guó)的科研組提出的MDnet。它集合了前面兩種深度算法的集大成,首先離線的時(shí)候有學(xué)習(xí),學(xué)習(xí)的不是一般的物體檢測(cè),也不是ImageNet,學(xué)習(xí)的是跟蹤視頻,然后在學(xué)習(xí)視頻結(jié)束后,在真正在使用網(wǎng)絡(luò)的時(shí)候更新網(wǎng)絡(luò)的一部分。這樣既在離線的時(shí)候得到了大量的訓(xùn)練,在線的時(shí)候又能夠很靈活改變自己的網(wǎng)絡(luò)。
基于嵌入式系統(tǒng)的深度學(xué)習(xí)
回到ADAS問(wèn)題(慧眼科技的主業(yè)),它完全可以用深度學(xué)習(xí)算法,但對(duì)硬件平臺(tái)有比較高的要求。在汽車上不太可能把一臺(tái)電腦放上去,因?yàn)楣β适莻€(gè)問(wèn)題,很難被市場(chǎng)所接受。
現(xiàn)在的深度學(xué)習(xí)計(jì)算主要是在云端進(jìn)行,前端拍攝照片,傳給后端的云平臺(tái)處理。但對(duì)于ADAS而言,無(wú)法接受長(zhǎng)時(shí)間的數(shù)據(jù)傳輸?shù)?,或許發(fā)生事故后,云端的數(shù)據(jù)還沒傳回來(lái)。
那是否可以考慮NVIDIA推出的嵌入式平臺(tái)?NVIDIA推出的嵌入式平臺(tái),其運(yùn)算能力遠(yuǎn)遠(yuǎn)強(qiáng)過(guò)了所有主流的嵌入式平臺(tái),運(yùn)算能力接近主流的頂級(jí)CPU,如臺(tái)式機(jī)的i7。那么慧眼科技在做工作就是要使得深度學(xué)習(xí)算法,在嵌入式平臺(tái)有限的資源情況下能夠達(dá)到實(shí)時(shí)效果,而且精度幾乎沒有減少。
具體做法是,首先對(duì)網(wǎng)絡(luò)進(jìn)行縮減,可能是對(duì)網(wǎng)絡(luò)的結(jié)構(gòu)縮減,由于識(shí)別場(chǎng)景不同,也要進(jìn)行相應(yīng)的功能性縮減;另外要用最快的深度檢測(cè)算法,結(jié)合最快的深度跟蹤算法,同時(shí)自己研發(fā)出一些場(chǎng)景分析算法。三者結(jié)合在一起,目的是減少運(yùn)算量,減少檢測(cè)空間的大小。在這種情況下,在有限資源上實(shí)現(xiàn)了使用深度學(xué)習(xí)算法,但精度減少的非常少。
評(píng)論