10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現)

2020-11-29 搜狐網

原標題:10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現)

選自Analytics Vidhya

作者:FAIZAN SHAIKH

參與:路雪、李亞洲、黃小天

近日,Faizan Shaikh 在 Analytics Vidhya 發表了一篇題為《10 Advanced Deep Learning Architectures Data Scientists Should Know!》的文章,總結了計算機視覺領域已經成效卓著的 10 個深度學習架構,並附上了每篇論文的地址連結和代碼實現。機器之心對該文進行了編譯,原文連結請見文末。

時刻跟上深度學習領域的最新進展變的越來越難,幾乎每一天都有創新或新應用。但是,大多數進展隱藏在大量發表的 ArXiv / Springer 研究論文中。

為了時刻了解最新動態,我們創建了一個閱讀小組,在 Analytics Vidhya 內部分享學習成果。我想和大家分享的是一項關於研究社區開發出的高級架構的調查。

本文包括深度學習領域的最新進展、keras 庫中的代碼實現以及論文連結。為保證文章簡明,我只總結了計算機視覺領域的成功架構。

什麼是高級架構?

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

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

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

正如下文所描述的每一個架構,其中每一個都與常見的模型有細微不同,在解決問題時這成了一種優勢。這些架構同樣屬於「深度」模型的範疇,因此有可能比淺層模型表現更好。

計算機視覺任務的類型

本文主要聚焦於計算機視覺,因此很自然地描述了計算機視覺任務的分類。顧名思義,計算機視覺即通過創建人工模型來模擬本由人類執行的視覺任務。其本質是人類的感知與觀察是一個過程,它可在人工系統中被理解和實現。

計算機視覺任務的主要類型如下:

  • 物體識別/分類:在物體識別中,給出一張原始圖像,你的任務是識別出該圖像屬於哪個類別。

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

  • 物體檢測:在物體檢測中,你的任務是找到圖像中多個物體的各自位置。這些物體可能屬於同一類別,或者各自不同。

  • 圖像分割:圖像分割是一個稍微複雜的任務,其目標是將每一個像素映射到正確的分類。

深度學習架構清單

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

1. AlexNet

AlexNet 是首個深度架構,它由深度學習先驅 Geoffrey Hinton 及其同僚共同引入。AlexNet 是一個簡單卻功能強大的網絡架構,為深度學習的開創性研究鋪平了道路。下圖是論文作者提出架構的示圖。

如圖所示,分解後的 AlexNet 像是一個簡單的架構,卷積層和池化層層疊加,最上層是全連接層。這是一個非常簡單的架構,其早在 80 年代就已被概念化。但是該模型的突出特徵是其執行任務的規模與使用 GPU 進行訓練。20 世紀 80 年代,訓練神經網絡使用的是 CPU,而 AlexNet 藉助 GPU 將訓練提速了 10x。

論文:ImageNet Classification with Deep Convolutional Neural Networks

2. VGG Net

VGG 網絡由牛津可視化圖形組(Visual Graphics Group)開發,因此其名稱為 VGG。該網絡的特點是金字塔形,與圖像最近的底層比較寬,而頂層很深。

如上圖所示,VGG 包含池化層之後的卷積層,池化層負責使層變窄。他們在論文中提出多個此類網絡,不同之處在於架構深度的變化。

VGG 的優勢:

另一方面,它的主要缺陷在於如果從頭訓練,則過程緩慢。即使在性能很好的 GPU 上,也需要一周多的時間才能完成訓練。

論文:Very Deep Convolutional Networks for Large-Scale Image Recognition

3. GoogleNet

GoogleNet(或 Inception 網絡)是谷歌研究者設計的一種架構。GoogleNet 是 ImageNet 2014 的冠軍,是當時最強大的模型。

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

如上圖所示,它與我們之前看到的序列架構發生了很大改變。單個層中出現了多種「特徵抽取器(feature extractor)」。這間接地改善了該網絡的性能,因為該網絡在訓練過程中有多個選項可以選擇,來解決該任務。它可以選擇與輸入進行卷積,也可以直接將其池化。

最終架構包括堆疊在一起的多個 inception 模塊。GoogleNet 的訓練過程也有稍許不同,即最上層有自己的輸出層。這一細微差別幫助模型更快地進行卷積,因為模型內存在聯合訓練和層本身的並行訓練。

GoogleNet 的優勢在於:

GoogleNet 本身沒有短期劣勢,但是該架構的進一步改變使模型性能更佳。其中一個變化是 Xception 網絡,它增加了 inception 模塊的發散極限(我們可以從上圖中看到 GoogleNet 中有 4 個 inception 模塊)。現在從理論上講,該架構是無限的(因此又叫極限 inception!)。

論文:Rethinking the Inception Architecture for Computer Vision

4.ResNet

ResNet 是一個妖怪般的架構,讓我們看到了深度學習架構能夠有多深。殘差網絡(ResNet)包含多個後續殘差模塊,是建立 ResNet 架構的基礎。下圖是殘差模塊的表示圖:

簡言之,一個殘差模塊有兩個選擇:完成輸入端的一系列函數,或者跳過此步驟。

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

ResNet 引入的新技術有:

ResNet 主要的優勢是數百,甚至數千的殘差層都能被用於創造一個新網絡,然後訓練。這不同於平常的序列網絡,增加層數量時表現會下降。

論文:Deep Residual Learning for Image Recognition

5. ResNeXt

ResNeXt 據說是解決目標識別問題的最先進技術。它建立在 inception 和 resnet 的概念上,並帶來改進的新架構。下圖是對 ResNeXt 模塊中的殘差模塊的總結。

圖 1. 左:ResNet 塊。右:基數=32 的 ResNeXt 塊,複雜度大致相同。層顯示為(# in channels, filter size, # out channels)。

論文:Aggregated Residual Transformations for Deep Neural Networks

6. RCNN (基於區域的 CNN)

基於區域的 CNN 架構據說是所有深度學習架構中對目標檢測問題最有影響力的架構。為了解決檢測問題,RCNN 嘗試在圖像中所有物體上畫出邊界框,然後識別圖像中的物體。工作原理如下:

RCNN 結構如下:

論文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

7. YOLO (You Only Look once)

YOLO 是當前深度學習領域解決圖像檢測問題最先進的實時系統。如下圖所示,YOLO 首先將圖像劃分為規定的邊界框,然後對所有邊界框並行運行識別算法,來確定物體所屬的類別。確定類別之後,yolo 繼續智能地合併這些邊界框,在物體周圍形成最優邊界框。

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

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

論文:You Only Look Once: Unified, Real-Time Object Detection

8.SqueezeNet

SqueeNet 架構是在移動平臺這樣的低寬帶場景中極其強大的一種架構。這種架構只佔用 4.9 MB 的空間,而 Inception 架構大小為 100MB。這種巨大的差距由一種名為 Fire Module 的特殊結構引起。下圖是 Fire Module 的表示圖:

SqueezeNet 的完整架構如下:

論文:SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE

9.SegNet

SegNet 是一個用於解決圖像分割問題的深度學習架構。它包含處理層(編碼器)序列,之後是對應的解碼器序列,用於分類像素。下圖是 SegNet 解析圖:

SegNet 的一個主要特徵是在編碼器網絡的池化指標與解碼器網絡的池化指標連接時,分割圖像保留高頻細節。簡言之,直接進行信息遷移,而非卷積它們。在處理圖像分割問題時,SgeNet 是最好的模型之一。

論文:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

10.GAN

GAN 是神經網絡架構中完全不同的類別。GAN 中,一種神經網絡用於生成全新的、訓練集中未曾有過的圖像,但卻足夠真實。例如,以下是 GAN 工作原理的解析圖。

論文:Generative Adversarial Networks

原文地址:https://www.analyticsvidhya.com/blog/2017/08/10-advanced-deep-learning-architectures-data-scientists/

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權返回搜狐,查看更多

責任編輯:

相關焦點

  • 數據科學家必須知道的 10 個深度學習架構
    本文介紹了部分近期深度學習的進展和創新,以及Keras庫中的執行代碼,本文還提供了原論文的連結。簡潔起見,本文中只介紹了計算機視覺領域內比較成功的深度學習架構。不同類型的計算機視覺任務各種深度學習架構何為深度學習「高級架構」?與一個簡單的機器學習算法相比,深度學習算法包含了更加多樣的模型。其中的原因是在建立一個完整的模型時,神經網絡具有很大的靈活性。有時,我們還可以把神經網絡比作樂高積木,可以用它搭建任何簡單或者複雜的小建築。
  • 反思深度學習與傳統計算機視覺的關係
    如今,深度學習在眾多領域都有一席之地,尤其是在計算機視覺領域。大量有關深度學習的成功或失敗事例給我們上了寶貴的一課,教會我們正確處理數據。在這篇文章中,我們將深入剖析深度學習的潛力,深度學習與經典計算機視覺的關係,以及深度學習用於關鍵應用程式的潛在危險。視覺問題的簡單與複雜首先,我們需要就視覺/計算機視覺問題提出一些看法。
  • 2018最具突破性計算機視覺論文Top 10
    新智元報導 來源; topbots.com編輯:肖琴、三石【新智元導讀】本文總結了2018年以來最重要的10篇計算機視覺/圖像生成相關的研究,包括許多新穎的架構設計,圖像生成方面的突破等。自從卷積神經網絡在特定的圖像識別任務上開始超越人類以來,計算機視覺領域的研究一直在飛速發展。
  • 一文全覽深度學習在計算機視覺領域的應用
    已經是很熱的深度學習,大家都看到不少精彩的故事,我就不一一重複。簡單的回顧的話,2006年Geoffrey Hinton的論文點燃了「這把火」,現在已經有不少人開始潑「冷水」了,主要是AI泡沫太大,而且深度學習不是包治百病的藥方。計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。
  • AI和ML(NLP、計算機視覺、強化學習)技術總結和19年趨勢(上)
    你可以使用PyTorch實現或Google的TensorFlow代碼嘗試在自己的計算機上得出結果。我很確定你想知道BERT代表什麼,它實際上是Transformers的雙向編碼器表示,如果你能夠領悟到這些,那很不錯了。PyTextFacebook開源了深度學習NLP框架PyText,它在不久之前發布,但我仍然要測試它,但就早期的評論來說非常有希望。
  • 一文帶你讀懂計算機視覺
    https://github.com/nodefluxio/face-detector-benchmark 提供了這些方法在速度上的基準,並且易於重用實現代碼。為了避免每次都要在這些大數據集上進行重新訓練,找到一些其他代替方法是十分重要的,而遷移學習和嵌入embeddings就是這樣的方法。
  • 35 萬行代碼,曠視重磅開源天元深度學習框架 ,四大特性實現簡單開發
    Keras的創造者是谷歌AI研究員FrancoisChollet,自2015年11月開源以來,已發展成為第二大流行深度學習框架。這個由Python編寫的開源人工神經網絡庫可以作為Tensorflow、CNTK和Theano的高階應用程式接口,進行深度學習模型的設計、調試、評估、應用和可視化,目標是只需幾行代碼就能讓你構建一個神經網絡。
  • PyTorch版《動手學深度學習》開源了,最美DL書遇上最贊DL框架
    李沐等人的開源中文書《動手學深度學習》現在有 PyTorch 版實現了。不論是原書中的示例代碼,還是實戰項目,原來的 MXNet 都可以無縫轉化到 PyTorch 代碼。項目作者在保持原書內容基本不變的情況下,將 MXNet 代碼都轉換為了 PyTorch,想要學習 DL 和 PyTorch 的小夥伴們可以試試啊。
  • 深度學習框架比較,我該選擇哪一個?
    使用深度學習框架完成模型構建有如下兩個優勢: 節省編寫大量底層代碼的精力:屏蔽底層實現,用戶只需關注模型的邏輯結構。同時,深度學習工具簡化了計算,降低了深度學習入門門檻。
  • 通過深度學習來創作自己的音樂(附代碼)
    概述學習如何開發自動生成音樂的端到端模型理解WaveNet架構,並使用Keras從頭實現它比較WaveNet與建立自動音樂生成模型的LSTM的性能介紹「如果我不是物理學家,我可能會成為音樂家。我經常在音樂上思考。
  • 通過對比深度學習各大框架的優缺點尋找最優
    開源的深度學習神經網絡正步入成熟,而現在有許多框架具備為個性化方案提供先進的機器學習和人工智慧的能力。那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?
  • AI 從業者該如何選擇深度學習開源框架丨雷鋒網公開課
    正如程序語言一樣,深度學習開源框架同樣各有優劣和適用的場景,那麼 AI 從業者該如何有針對性地選擇這些平臺來玩轉深度學習?本期公開課特邀了先後在谷歌、亞馬遜、微軟供職的機器學習科學家彭河森博士為大家講述《MXNet火了,AI從業者該如何選擇深度學習開源框架》。彭河森博士親眼見證並深入參與了這三家巨頭布局深度學習的過程。嘉賓介紹彭河森,埃默裡大學統計學博士。
  • 教你用PyTorch實現「看圖說話」(附代碼、學習資源)
    本文用淺顯易懂的方式解釋了什麼是「看圖說話」(Image Captioning),藉助github上的PyTorch代碼帶領大家自己做一個模型,並附帶了很多相關的學習資源。介紹深度學習目前是一個非常活躍的領域---每天都會有許多應用出現。
  • 為什麼說用現有馮諾伊曼架構的計算機即可實現通用人工智慧AGI?
    象人腦一樣通用的人工智慧是AI皇冠上的明珠,也是人工智慧的終極追求目標,許多人認為,現有的基於馮諾伊曼架構的計算機是不可能實現AGI的,於是,為了實現這一崇高目標,就另闢蹊徑,想出了不同於現有計算機的新架構,如,類腦晶片、量子計算機、人造電子大腦(模擬大腦皮層神經元網絡結構,用光電器件組合出的光電器件網絡結構)等,而事實上,筆者的研究表明
  • 計算機視覺及智能影像行業深度研究報告
    快速增長的視頻內容規模蘊含海 量信息,也為計算機視覺的深度學習算法進化提供了大數據支持。 5G技術加速視頻信息流增長,信息視覺化趨勢繼續強化。5G 將帶來超高速(4G 速度 100X)、低 延時(4G 延時 1/50)以及海量連結(連接設備超過地球人口100x)。
  • 嵌入式硬體工程師必備 21個計算機體系架構面試題
    【IT168 應用】小編為大家匯總了嵌入式硬體工程師必備的21個計算機體系架構面試題,大家收藏了!▲     1)解釋什麼是計算機體系結構?       計算機體系結構是詳細說明一組軟體和硬體標準如何相互交互以形成計算機系統或平臺的規範。  2)計算機體系結構的特徵如何?
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。本文從向量的概念與運算擴展到矩陣運算的概念與代碼實現,對機器學習或者是深度學習的入門者提供最基礎,也是最實用的教程指導,為以後的機器學習模型開發打下基礎。
  • 人工智慧利用單眼強度圖像進行面部深度圖估計的對抗架構深度學習
    人工智慧利用單眼強度圖像進行面部深度圖估計的對抗架構深度學習 人工智慧利用單眼強度圖像進行面部深度圖估計的對抗架構深度學習 2018-06-05 11:36:53  來源:今日頭條
  • 10行Python代碼也能實現,親測好用!
    大數據文摘出品編譯:朱一輝、雪清、小魚短短10行代碼就可以實現目標檢測?!本文作者和他的團隊構建了一個名為ImageAI 的Python庫,集成了現今流行的深度學習框架和計算機視覺庫。本文將手把手教你構建自己的第一個目標檢測應用,而且文摘菌已經幫你踩過坑了,親測有效!
  • 15 年架構設計經驗:我眼中的那些優秀架構師
    去年底,我曾經面試過一位架構師的候選人。這位候選人是一位大廠高級工程師,因為技術好,在團隊中承擔一些管理工作。從他簡歷上的項目經驗,我能看出他的編程能力和技術深度都屬於優秀行列,在某些項目上,已經承擔了一部分架構設計職責,是個潛力型人選。