近年來,深度學(xué)習(xí)的發(fā)展勢頭迅猛,,要跟上深度學(xué)習(xí)的進(jìn)步速度變得越來越困難了,。幾乎每一天都有關(guān)于深度學(xué)習(xí)的創(chuàng)新,而大部分的深度學(xué)習(xí)創(chuàng)新都隱藏在那些發(fā)表于ArXiv和Spinger等研究論文中,。 本文介紹了部分近期深度學(xué)習(xí)的進(jìn)展和創(chuàng)新,,以及Keras庫中的執(zhí)行代碼,本文還提供了原論文的鏈接,。 簡潔起見,,本文中只介紹了計(jì)算機(jī)視覺領(lǐng)域內(nèi)比較成功的深度學(xué)習(xí)架構(gòu)。 另外,,文章基于已經(jīng)掌握了神經(jīng)網(wǎng)絡(luò)的知識,,并且對Keras已經(jīng)相當(dāng)熟悉了的基礎(chǔ),。如果你對這些話題還不太了解,強(qiáng)烈建議先閱讀以下文章:
何為深度學(xué)習(xí)“高級架構(gòu)”? 與一個(gè)簡單的機(jī)器學(xué)習(xí)算法相比,,深度學(xué)習(xí)算法包含了更加多樣的模型,。其中的原因是在建立一個(gè)完整的模型時(shí),神經(jīng)網(wǎng)絡(luò)具有很大的靈活性,。 有時(shí),,我們還可以把神經(jīng)網(wǎng)絡(luò)比作樂高積木,可以用它搭建任何簡單或者復(fù)雜的小建筑,。 我們其實(shí)可以將“高級架構(gòu)”簡單地定義為一個(gè)有著成功模型記錄的深度學(xué)習(xí)架構(gòu),,這樣的“高級架構(gòu)”主要出現(xiàn)在類似ImageNet的挑戰(zhàn)中,在這些挑戰(zhàn)中,,你的任務(wù)是解決問題,,比如用給定的數(shù)據(jù)完成圖像識別。簡單來說,,ImageNet就是一項(xiàng)關(guān)于數(shù)據(jù)集的挑戰(zhàn),,而其中的數(shù)據(jù)集是從ILSVR(ImageNet大規(guī)模視覺識別)中獲得的。 就像下文即將提到的架構(gòu),,其中的每個(gè)架構(gòu)之間都有細(xì)微的差別,,而正是這些差別使它們區(qū)別于普通的模型,讓它們在解決問題的時(shí)候發(fā)揮出普通模型不具備的優(yōu)勢,。這些架構(gòu)同樣屬于“深度模型”的范疇,,因此它們的性能也很可能優(yōu)于其相對應(yīng)的“淺層模型”。 不同類型的“計(jì)算機(jī)視覺任務(wù)” 本文主要關(guān)注于“計(jì)算機(jī)視覺”,,所以很自然地會(huì)涉及到“計(jì)算機(jī)視覺”的任務(wù),。顧名思義,“計(jì)算機(jī)視覺任務(wù)”就是建立一個(gè)能夠復(fù)制完成人類視覺任務(wù)的計(jì)算機(jī)模型,。這實(shí)質(zhì)上意味著,,我們視力所見和感知的內(nèi)容是一個(gè)能夠在人造系統(tǒng)中被理解和完成的程序。 計(jì)算機(jī)視覺任務(wù)的主要類型有:
各種深度學(xué)習(xí)架構(gòu) 目前,我們已經(jīng)了解了深度學(xué)習(xí)“高級架構(gòu)”,,并探究了各種類型的計(jì)算機(jī)視覺任務(wù),。那么接下來,我們將列舉出最重要的深度學(xué)習(xí)架構(gòu),,并且對這些架構(gòu)進(jìn)行簡單的介紹: 1. AlexNet AlexNet是第一個(gè)深度學(xué)習(xí)架構(gòu),,它是由深度學(xué)習(xí)先鋒之一——Geoffrey Hinton和他的同事們共同研究并引入的。AlexNet是一個(gè)看似簡單但功能非常強(qiáng)大的網(wǎng)絡(luò)架構(gòu),,它為現(xiàn)在深度學(xué)習(xí)的突破性研究鋪平了道路,。下圖是AlexNet架構(gòu): 從分解圖中我們可以看出,AlexNet其實(shí)就是一個(gè)簡單的架構(gòu),,其中的卷積層和聚積層相互疊加,,最頂部的是全連接層。早在二十世紀(jì)八十年代,,AlexNet模型就已經(jīng)被概念化描述了,。AlexNet區(qū)別于其他模型的關(guān)鍵在于它的任務(wù)規(guī)模,以及它用于訓(xùn)練的GPU規(guī)模,。在八十年代,,用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的是CPU。而AlexNet率先使用GPU,,將訓(xùn)練的速度提高了十倍左右,。 雖然AlexNet現(xiàn)在有些過時(shí)了,但它仍然是運(yùn)用神經(jīng)網(wǎng)絡(luò)完成各種任務(wù)的起點(diǎn),。不管是完成計(jì)算機(jī)視覺任務(wù),,還是語音識別任務(wù),都仍然需要AlexNet,。
2. VGG Net “VGG Net”是由牛津大學(xué)“視覺圖像研究組”的研究人員引入的,。VGG網(wǎng)絡(luò)的最大特點(diǎn)是它的金字塔狀,靠近圖像的底部比較寬闊,,而頂部的層相對窄且深,。 如圖所示,VGG Net包含了連續(xù)的卷積層,,卷積層后緊接著聚積層,。聚積層負(fù)責(zé)讓各個(gè)層變得更窄,。在這篇由組內(nèi)研究人員共同完成的論文中,,他們提出了各種類型的網(wǎng)絡(luò),這些網(wǎng)絡(luò)架構(gòu)的主要差異是深度不同。 VGG網(wǎng)絡(luò)的優(yōu)勢在于: 這是對一個(gè)特定任務(wù)進(jìn)行基準(zhǔn)測試非常有效的網(wǎng)絡(luò)架構(gòu),。 同時(shí),,網(wǎng)上有大量免費(fèi)的VGG預(yù)訓(xùn)練網(wǎng)絡(luò),因此,,VGG通常會(huì)被用于各種各樣的應(yīng)用程序,。 而另一方面,VGG主要的缺陷在于如果從頭開始訓(xùn)練的話,,其訓(xùn)練速度會(huì)非常慢,。即使是用一個(gè)相當(dāng)不錯(cuò)的GPU,它還是需要超過一周的時(shí)間才能正常運(yùn)行,。
3. GoogleNet GoogleNet(又稱“InceptionNet”)是由谷歌的研究人員們設(shè)計(jì)的一個(gè)網(wǎng)絡(luò)架構(gòu),。GoogleNet在2014年的ImageNet大賽中獲得了冠軍,證明了它是一個(gè)功能強(qiáng)大的模型,。 在這個(gè)網(wǎng)絡(luò)架構(gòu)中,,研究人員們不僅加深了網(wǎng)絡(luò)深度(GoogleNet包含22個(gè)層,而VGG網(wǎng)絡(luò)只有19個(gè)層),,還研究出了一個(gè)叫做“Inception模塊”的新方法,。 如上圖所示,這個(gè)架構(gòu)與我們之前看到的有序性架構(gòu)相比,,發(fā)生了巨大的改變,。在單個(gè)層中出現(xiàn)了各種各樣的“特征提取器”。這間接地提高了網(wǎng)絡(luò)的性能,,因?yàn)楫?dāng)處理任務(wù)時(shí),,網(wǎng)絡(luò)在自我訓(xùn)練過程中的選擇非常廣泛。它既可以選擇卷積輸入,,也可以選擇直接將輸入聚積起來,。 最終的架構(gòu)包含了許多一個(gè)個(gè)相互疊加的Inception模塊。大部分最上面的層都有它們自己的輸出層,,所以GoogleNet的訓(xùn)練與其他模型有細(xì)微的差別,。但這些差別能夠幫助模型更快地完成卷積,因?yàn)檫@些層不僅有共同的訓(xùn)練,,還有各自獨(dú)立的訓(xùn)練,。 GoogleNet的優(yōu)勢有:
目前為止,,GoogleNet還沒有直接的缺陷,但是文章中提出了一些有助于GoogleNet進(jìn)一步完善的改變方案。其中有一個(gè)改變方案被稱作“XceptionNet”,,在這個(gè)網(wǎng)絡(luò)中,,“初始模塊”的散度限制被提高了。理論上來說,,其散度現(xiàn)在可以是無限的了,。
4. ResNet ResNet是一個(gè)真正地定義了深度學(xué)習(xí)架構(gòu)深度的網(wǎng)絡(luò)架構(gòu)?!皻埐罹W(wǎng)絡(luò)”,,也就是我們所說的ResNet,包含了許多連續(xù)的“殘差模塊”,,這些“殘差模塊”構(gòu)成了ResNet架構(gòu)的基礎(chǔ),。“殘差模塊”如下圖所示: 簡單來說,,一個(gè)“殘差模塊”有兩個(gè)選擇——它可以選擇在輸入上執(zhí)行一組函數(shù),,也可以選擇跳過這些步驟。 與GoogleNet類似,,這些“殘差模塊”相互疊加,,從而形成一個(gè)完整的網(wǎng)絡(luò)的。 由ResNet引入的一些新技術(shù)有:
ResNet的主要優(yōu)勢在于,,成千上萬的殘差層都能用于建立一個(gè)網(wǎng)絡(luò),,而且都能被用于訓(xùn)練。這與平常的“時(shí)序網(wǎng)絡(luò)”稍有不同,,“時(shí)序網(wǎng)絡(luò)”的性能會(huì)因?yàn)閷訑?shù)的增加而降低,。 Original Paper link(https:///abs/1512.03385) Link for code implementation(https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py) 5. ResNeXt 據(jù)稱,ResNeXt是目前為止最先進(jìn)的物體識別技術(shù),。ResNeXt建立于inception和ResNet的基礎(chǔ)之上,,是一個(gè)全新的、改良的網(wǎng)絡(luò)架構(gòu),。下圖總結(jié)了ResNeXt的一個(gè)殘差模塊: Original Paper link(https:///pdf/1611.05431.pdf) Link for code implementation(https://github.com/titu1994/Keras-ResNeXt) 6. RCNN(Region Based CNN) RCNN據(jù)說是用于解決物體識別問題的深度學(xué)習(xí)架構(gòu)中最具影響力的網(wǎng)絡(luò)架構(gòu),。為了解決識別檢測問題,RCNN試圖框出圖像中的所有物體,,然后再識別圖像中的物體具體是什么,。其操作流程如下: RCNN的結(jié)構(gòu)如下圖:
7. YOLO (You Only Look Once) YOLO是目前為止最先進(jìn)的實(shí)時(shí)圖像識別系統(tǒng),,它是以深度學(xué)習(xí)為基礎(chǔ)的。正如我們在下圖中所看到的,,它首先將圖像分成一個(gè)個(gè)小方格;然后將識別算法一一運(yùn)行于這些格子,判斷每個(gè)格子分別屬于什么物體類別,,之后把同一類別的方格合并起來,,形成一個(gè)個(gè)最準(zhǔn)確的物體框。 這些操作都是各自獨(dú)立完成的,,因此能夠?qū)崿F(xiàn)實(shí)時(shí)運(yùn)行,。一秒內(nèi)最多能夠處理40張圖像。 雖然與其對應(yīng)的RCNN相比,,YOLO的性能降低了,,但是它的實(shí)時(shí)處理功能在處理日常問題中仍有巨大的優(yōu)勢。以下是YOLO網(wǎng)絡(luò)架構(gòu):
8. SqueezeNet SqueezeNet架構(gòu)是一個(gè)功能更加強(qiáng)大的網(wǎng)絡(luò)架構(gòu),,它在類似移動(dòng)平臺這樣的低寬帶場景中非常有用,。這個(gè)網(wǎng)絡(luò)架構(gòu)僅占4.9MB的空間,而Inception則占超過100MB空間,。這樣顯著的變化來源于一個(gè)叫做“fire模塊”的結(jié)構(gòu),。“fire模塊”如下圖所示: 下圖為squeezeNet的最終架構(gòu):
9. SegNet SegNet是一個(gè)用于解決圖像分割的深度學(xué)習(xí)架構(gòu),。它包含了一系列處理層(編碼器)以及一組用于像素分類的對應(yīng)的解碼器,。下圖總結(jié)了SegNet的操作過程: SegNet的一個(gè)關(guān)鍵特征是:在分割圖像中保留了高頻率的細(xì)節(jié),因?yàn)榫幋a網(wǎng)絡(luò)的聚積索引與解碼網(wǎng)絡(luò)的聚積索引是相互連接的,。簡言之,,信息的傳遞是直接的,而不是通過間接的卷積實(shí)現(xiàn)的,。SegNet是處理圖像分割問題時(shí)的最佳模型,。
10. GAN (Generative Adversarial Network) GAN是一個(gè)完全不同的神經(jīng)網(wǎng)絡(luò)架構(gòu),其中的神經(jīng)網(wǎng)絡(luò)被用于生成一個(gè)全新的不存在的圖像,,這個(gè)圖像看似在訓(xùn)練數(shù)據(jù)集中出現(xiàn)過,,但實(shí)際上并沒有(https://www./blog/2017/06/introductory-generative-adversarial-networks-gans/)。下圖是GAN的分解示意圖,。
|
|