10 大深度學習架構 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

10 大深度學習架構:計算機視覺優秀從業者必備(附程式碼實現) · 1. AlexNet · 2. VGG Net · 3. GoogleNet · 5. ResNeXt · 6. RCNN (基於區域的CNN) · 7. YOLO ... 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具10大深度學習架構2018.07.19程式語言10轉換成10,實驗10,正規表示式10,水晶報表10,深度學習,程式10HOME程式語言10大深度學習架構Advertisementhttps://zhuanlan.zhihu.com/p/2850383610大深度學習架構:計算機視覺優秀從業者必備(附程式碼實現)Yuyang3小時前本文經機器之心(微信公眾號:almosthuman2014)授權轉載,禁止二次轉載。

時刻跟上深度學習領域的最新進展變的越來越難,幾乎每一天都有創新或新應用。

但是,大多數進展隱藏在大量發表的ArXiv/Springer研究論文中。

為了時刻了解最新動態,我們建立了一個閱讀小組,在AnalyticsVidhya內部分享學習成果。

我想和大家分享的是一項關於研究社群開發出的高階架構的調查。

本文包括深度學習領域的最新進展、keras庫中的程式碼實現以及論文連結。

為保證文章簡明,我只總結了計算機視覺領域的成功架構。

什麼是高階架構?相比於單一的傳統機器學習演算法,深度學習演算法由多樣化的模型組成;這是由於神經網路在構建一個完整的端到端的模型時所提供的靈活性。

神經網路有時可比作樂高塊,藉助想象力你幾乎可以用它建構從簡單到複雜的任何結構。

我們可以把高階架構定義為一個具有良好記錄的成功模型;這主要見於挑戰賽中,比如ImageNet,其中你的任務是藉助給定的資料解決影象識別等問題。

正如下文所描述的每一個架構,其中每一個都與常見的模型有細微不同,在解決問題時這成了一種優勢。

這些架構同樣屬於「深度」模型的範疇,因此有可能比淺層模型表現更好。

計算機視覺任務的型別本文主要聚焦於計算機視覺,因此很自然地描述了計算機視覺任務的分類。

顧名思義,計算機視覺即通過建立人工模型來模擬本由人類執行的視覺任務。

其本質是人類的感知與觀察是一個過程,它可在人工系統中被理解和實現。

計算機視覺任務的主要型別如下:物體識別/分類:在物體識別中,給出一張原始影象,你的任務是識別出該影象屬於哪個類別。

分類定位:如果影象中只有一個物體,你的任務是找到該物體在影象中的位置,一個更專業的稱謂是定位。

物體檢測:在物體檢測中,你的任務是找到影象中多個物體的各自位置。

這些物體可能屬於同一類別,或者各自不同。

影象分割:影象分割是一個稍微複雜的任務,其目標是將每一個畫素對映到正確的分類。

深度學習架構清單現在我們明白了什麼是高階架構,並探討了計算機視覺的任務分類,現在讓我們列舉並描述一下最重要的深度學習架構吧。

1.AlexNetAlexNet是首個深度架構,它由深度學習先驅GeoffreyHinton及其同僚共同引入。

AlexNet是一個簡單卻功能強大的網路架構,為深度學習的開創性研究鋪平了道路。

下圖是論文作者提出架構的示圖。

如圖所示,分解後的AlexNet像是一個簡單的架構,卷積層和池化層層疊加,最上層是全連線層。

這是一個非常簡單的架構,其早在80年代就已被概念化。

但是該模型的突出特徵是其執行任務的規模與使用GPU進行訓練。

20世紀80年代,訓練神經網路使用的是CPU,而AlexNet藉助GPU將訓練提速了10x。

論文:ImageNetClassificationwithDeepConvolutionalNeuralNetworks連結:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf程式碼實現:https://gist.github.com/JBed/c2fb3ce8ed299f197eff2.VGGNetVGG網路由牛津視覺化圖形組(VisualGraphicsGroup)開發,因此其名稱為VGG。

該網路的特點是金字塔形,與影象最近的底層比較寬,而頂層很深。

如上圖所示,VGG包含池化層之後的卷積層,池化層負責使層變窄。

他們在論文中提出多個此類網路,不同之處在於架構深度的變化。

VGG的優勢:適合在特定任務上進行基準測試。

VGG的預訓練網路可在網際網路上免費獲取,因此被廣泛用於各種應用。

另一方面,它的主要缺陷在於如果從頭訓練,則過程緩慢。

即使在效能很好的GPU上,也需要一週多的時間才能完成訓練。

論文:VeryDeepConvolutionalNetworksforLarge-ScaleImageRecognition連結:https://arxiv.org/abs/1409.1556程式碼實現:https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py3.GoogleNetGoogleNet(或Inception網路)是谷歌研究者設計的一種架構。

GoogleNet是ImageNet2014的冠軍,是當時最強大的模型。

該架構中,隨著深度增加(它包含22層,而VGG只有19層),研究者還開發了一種叫作「Inception模組」的新型方法。

如上圖所示,它與我們之前看到的序列架構發生了很大改變。

單個層中出現了多種「特徵抽取器(featureextractor)」。

這間接地改善了該網路的效能,因為該網路在訓練過程中有多個選項可以選擇,來解決該任務。

它可以選擇與輸入進行卷積,也可以直接將其池化。

最終架構包括堆疊在一起的多個inception模組。

GoogleNet的訓練過程也有稍許不同,即最上層有自己的輸出層。

這一細微差別幫助模型更快地進行卷積,因為模型記憶體在聯合訓練和層本身的並行訓練。

GoogleNet的優勢在於:GoogleNet訓練速度比VGG快。

預訓練GoogleNet的規模比VGG小。

VGG模型大於500MB,而GoogleNet的大小隻有96MB。

GoogleNet本身沒有短期劣勢,但是該架構的進一步改變使模型效能更佳。

其中一個變化是Xception網路,它增加了inception模組的發散極限(我們可以從上圖中看到GoogleNet中有4個inception模組)。

現在從理論上講,該架構是無限的(因此又叫極限inception!)。

論文:RethinkingtheInceptionArchitectureforComputerVision連結:https://arxiv.org/abs/1512.00567程式碼實現:https://github.com/fchollet/keras/blob/master/keras/applications/inception_v3.py4.ResNetResNet是一個妖怪般的架構,讓我們看到了深度學習架構能夠有多深。

殘差網路(ResNet)包含多個後續殘差模組,是建立ResNet架構的基礎。

下圖是殘差模組的表示圖:簡言之,一個殘差模組有兩個選擇:完成輸入端的一系列函式,或者跳過此步驟。

類似於GoogleNet,這些殘差模組一個接一個地堆疊,組成了完整的端到端網路。

ResNet引入的新技術有:使用標準的SGD,而非適應性學習技術。

它聯通一個合理的初始化函式(保持訓練的完整性)做到的這一點。

輸入預處理的變化,輸入首先被區分到影象塊中,然後輸送到網路中。

ResNet主要的優勢是數百,甚至數千的殘差層都能被用於創造一個新網路,然後訓練。

這不同於平常的序列網路,增加層數量時表現會下降。

論文:DeepResidualLearningforImageRecognition連結:https://arxiv.org/abs/1512.03385程式碼實現:https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py5.ResNeXtResNeXt據說是解決目標識別問題的最先進技術。

它建立在inception和resnet的概念上,並帶來改進的新架構。

下圖是對ResNeXt模組中的殘差模組的總結。

圖1.左:ResNet塊。

右:基數=32的ResNeXt塊,複雜度大致相同。

層顯示為(#inchannels,filtersize,#outchannels)。

論文:AggregatedResidualTransformationsforDeepNeuralNetworks連結:https://arxiv.org/pdf/1611.05431.pdf程式碼實現:https://github.com/titu1994/Keras-ResNeXt6.RCNN(基於區域的CNN)基於區域的CNN架構據說是所有深度學習架構中對目標檢測問題最有影響力的架構。

為了解決檢測問題,RCNN嘗試在影象中所有物體上畫出邊界框,然後識別影象中的物體。

工作原理如下:RCNN結構如下:論文:FasterR-CNN:TowardsReal-TimeObjectDetectionwithRegionProposalNetworks連結:https://arxiv.org/abs/1506.01497程式碼實現:https://github.com/yhenon/keras-frcnn7.YOLO(YouOnlyLookonce)YOLO是當前深度學習領域解決影象檢測問題最先進的實時系統。

如下圖所示,YOLO首先將影象劃分為規定的邊界框,然後對所有邊界框並行執行識別演算法,來確定物體所屬的類別。

確定類別之後,yolo繼續智慧地合併這些邊界框,在物體周圍形成最優邊界框。

這些步驟全部並行進行,因此YOLO能夠實現實時執行,並且每秒處理多達40張影象。

儘管相比於RCNN它的表現有所降低,但在日常實時的問題中它還是有優勢的。

下圖是YOLO架構的示圖:論文:YouOnlyLookOnce:Unified,Real-TimeObjectDetection連結:https://pjreddie.com/media/files/papers/yolo.pdf程式碼實現:https://github.com/allanzelener/YAD2K8.SqueezeNetSqueeNet架構是在移動平臺這樣的低寬頻場景中極其強大的一種架構。

這種架構只佔用4.9MB的空間,而Inception架構大小為100MB。

這種巨大的差距由一種名為FireModule的特殊結構引起。

下圖是FireModule的表示圖:SqueezeNet的完整架構如下:論文:SQUEEZENET:ALEXNET-LEVELACCURACYWITH50XFEWERPARAMETERSAND<0.5MBMODELSIZE連結:https://arxiv.org/abs/1602.07360程式碼實現:https://github.com/rcmalli/keras-squeezenet9.SegNetSegNet是一個用於解決影象分割問題的深度學習架構。

它包含處理層(編碼器)序列,之後是對應的解碼器序列,用於分類畫素。

下圖是SegNet解析圖:SegNet的一個主要特徵是在編碼器網路的池化指標與解碼器網路的池化指標連線時,分割影象保留高頻細節。

簡言之,直接進行資訊遷移,而非卷積它們。

在處理影象分割問題時,SgeNet是最好的模型之一。

論文:SegNet:ADeepConvolutionalEncoder-DecoderArchitectureforImageSegmentation連結:https://arxiv.org/abs/1511.00561程式碼實現:https://github.com/imlab-uiip/keras-segnet10.GANGAN是神經網路架構中完全不同的類別。

GAN中,一種神經網路用於生成全新的、訓練集中未曾有過的影象,但卻足夠真實。

例如,以下是GAN工作原理的解析圖。

論文:GenerativeAdversarialNetworks連結:https://arxiv.org/abs/1406.2661程式碼實現:https://github.com/bstriner/keras-adversarial原文地址:https://www.analyticsvidhya.com/blog/2017/08/10-advanced-deep-learning-architectures-data-scientists/宣告:本文由機器之心編譯出品,原文來自AnalyticsVidhya,作者FAIZANSHAIKH,轉載請檢視要求,機器之心對於違規侵權者保有法律追訴權。

Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Vue中容易被忽視的知識點2019.12.09if我是前端Leader,談談前端框架體系建設2019.12.09Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08AdvertisementAdvertisement



請為這篇文章評分?