整理 | 專知
本文主要介紹了一些經典的用於圖像識別的深度學習模型,包括AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet的網絡結構及創新之處,並展示了其在ImageNet的圖像分類效果。這些經典的模型其實在很多博文中早已被介紹過,作者的創新之處在於透過這些經典的模型,討論未來圖像識別的新方向,並提出圖像識別無監督學習的趨勢,並引出生成對抗網絡,以及討論了加速網絡訓練的新挑戰。文章梳理了用於圖像識別的深度學習方法的脈絡,並對將來的挑戰和方法做了分析,非常值得一讀!專知內容組編輯整理。
在過去的幾年中,深度學習絕對主導了計算機視覺,在許多任務和相關競賽中取得了最好效果。 這些計算機視覺競賽中最受歡迎、最知名的競賽是ImageNet。ImageNet競賽任務是:讓研究人員創建一個模型,對給定的圖像進行分類。
過去的幾年裡,深度學習技術極大推進了這場比賽,甚至超越了人類的表現。
今天我們要回顧一下這方面的進展,從而了解深度學習是如何推動其發展的,了解我們可以從中學到什麼,以及我們走到哪一步。
▌ImageNet的挑戰
那麼ImageNet挑戰有什麼難的呢? 讓我們先看看數據。ImageNet分類任務的數據是從Flickr和其他搜尋引擎收集的,由人類手動標記,總共有1000個類別,每個圖像屬於其中一個。
數據集的分布如下表所示。
ImageNet Dataset
到2012年,ImageNet擁有近130萬個訓練圖像。 這樣一個大規模的圖像分類任務的主要挑戰是圖像的多樣性。在這裡我們可以看一下這個例子。
看看下面的圖片。 在左側,我們看到來自另一個圖像分類challange的一些示例圖像:PASCAL。在PASCAL挑戰中,只有大約20,000個訓練圖像和20個對象類別。 這個挑戰的類別:如「鳥」,「狗」和「貓」,如下所示。說到ImageNet的挑戰,這是一個全新的比賽。 ImageNet並沒有一個叫做「狗」的普通類,它包含了各種各樣的狗。 事實上,ImageNet並沒有PASCAL的「狗」類別,而是有120種不同品種的狗類(更加細粒度:如哈士奇、德國牧羊犬、秋田犬等,而不是統一的「狗」類)!因此,我們用於此任務的任何模型/算法都必須能夠處理這些非常「細粒度」和「特定」的類,即使它們看起來非常相似並且很難區分。
更技術性地講,我們希望最大化類間差異性。這意味著我們需要兩個圖像,每個圖像包含一種不同類型的鳥類,因此即使它們都是鳥類,但在我們的數據集中,它們都屬於不同的類別。
Inter-class Variability(類間差異性)
這是ImageNet的另一個具有挑戰性的特性:同一個類的對象可以看起來很不一樣。 讓我們看看下面的圖片。左邊的兩個都來自「orange」類,右邊的兩個都來自「pool table」類。 然而,每一對圖像看起來都不一樣!對於人類,我們可以看到其中一個桔子被切開,另一個桔子沒被切開。 我們也可以看到一張桌子的圖片放大了,另一張沒有放大。這就是所謂的類內差異性。 我們希望儘量減少這種變化,因為我們希望在我們的深度學習模型中,同一類的兩幅圖像看起來是相似的。
Intra-class Variability(類內差異性)
有了這些圖像分類的挑戰,讓我們來回顧一下深度學習是如何在這個任務上取得重大進展的。
▌深度學習在圖像分類方面的快速發展
自2012年以來,幾乎每年都在為圖像分類任務開發深度學習模式方面取得重大突破。由於數據規模龐大且具有挑戰性,ImageNet挑戰一直是衡量進展的主要標杆。在這裡,我們要看看深度學習這個任務的進展,以及一些主要網絡結構。
早在2012年,多倫多大學就在NIPS上發表一篇論文,效果則是令人震驚的。該論文是「ImageNet Classification with Deep Convolutional Neural Networks」。
(地址:
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf )
在ImageNet挑戰中錯誤率降低了近50%,它成為「現有領域中最有潛力的論文之一」,這在當時是前所未有的進展。
本文提出使用深度卷積神經網絡(CNN)進行圖像分類任務。與今天使用的相比,這是相對簡單的。這篇論文的主要貢獻是:
第一個成功使用深度卷及網絡進行大規模圖像分類。這是因為ImageNet提供了大量標記數據,以及在兩個GPU上使用並行計算來訓練模型。
他們使用ReLU作為非線性激活函數,發現它們相對於tanh函數表現更好,訓練時間更短。ReLU非線性激活函數現在幾乎成為深度網絡的默認激活函數。
他們使用數據增強技術,包括圖像翻轉,水平反射(horizontal reflections)和均值減法(mean subtraction)。 這些技術如今被廣泛用於許多計算機視覺任務。
他們使用dropout層來解決訓練數據過擬合的問題。
他們提出的連續卷積和pooling層的方式,最後是全連接層,仍然是當今許多最先進網絡的基礎。
基本上,AlexNet提供的設置和baseline都稱為計算機視覺領域CNN的默認技術!
VGGNet的論文「Very Deep Convolutional Neural Networks for Large-Scale Image Recognition」於2014年出版,進一步使用更多卷積和ReLU加深卷積網絡。他們的主要想法是,你並不需要任何花哨的技巧來提高高精度。只要有很多小的3x3卷積和非線性激活函數的更深層的網絡就可以做到這一點! VGGNets的主要貢獻是:
隨著每層輸入volumes(input volumes)的空間尺寸減小(作為pooling層的結果),volumes的深度增加。這背後的想法是,隨著空間信息的減少(從max pooling下採樣),它應該被編碼為更多的可區分特徵,以用於更準確的分類。因此,特徵圖的數量隨著深度增加而增加,以便能夠捕獲這些用於分類的特徵。
它引入了一種新的數據增強方式: scale jittering。
使用Caffe工具箱構建模型。 此時,深度學習庫越來越受歡迎。
VGGNet:https://arxiv.org/pdf/1409.1556.pdf
GoogLeNet架構是第一個真正解決計算資源問題以及「Going Deeper with Convolutions」論文中的多尺度處理。隨著我們的分類網絡越來越深,我們必須得使用大量的內存。另外,過去已經提出了不同的計算濾波器尺寸:從1x1到11x11; 你怎麼決定該用哪一個?inception模塊和GoogLeNet解決了所有這些問題,具體貢獻如下:
GoogLeNet:
https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf
通過在每個3x3和5x5之前使用1x1卷積,初始模塊減少了通過每層的特徵映射的數量,從而減少了計算量和內存消耗!
初始模塊具有全部並行的1x1,3x3和5x5卷積。這背後的想法是通過訓練讓網絡決定什麼信息將被學習和使用。它還允許進行多尺度處理:模型可以通過較小的卷積和較大卷積的高抽象特徵來恢復局部特徵。
GoogLeNet是第一個提出CNN層並不總是必須按順序排列。本文的作者表示,您還可以增加網絡寬度而不僅僅是深度以獲得更好的性能。
自2015年在「圖像識別的深度殘差學習」一文中發布以來,ResNet已經在很多計算機視覺任務中提高了準確性。ResNet架構是ImageNet上第一個超過人類級別的性能測試的模型,而他們在residual learning方面的主要貢獻在今天許多最先進的網絡中經常被默認使用:
ResNet:https://arxiv.org/pdf/1512.03385.pdf
文章揭露了:將層進行簡單的堆疊,從而使網絡非常深並不總是有幫助,也可能取得相反的結果。
為了解決上述問題,他們引入了結合skip-connections的殘差學習(residual learning)。這個想法是,通過添加skip連接作為快捷方式,每一層層可以直接訪問前一層的函數,允許特徵信息更容易地在網絡上進行傳播。 它也有助於訓練,因為梯度能更高效地反向傳播。
第一個「超深」網絡,通常使用超過100-200層。
▌把shortcuts做到極致:DenseNet
「Densely Connected Convolutional Networks」文章中引入DenseNets,Shortcut被發揮到了極致。DenseNets擴展了Shortcut的想法,但比ResNet具有更密集的連接:
DenseNet:https://arxiv.org/pdf/1608.06993.pdf
DenseNets中每層以前饋的方式連接到其他層。 這允許每一層使用所有前面的層的所有特徵圖作為輸入,並且它自己的特徵圖被用作所有後續層的輸入。
這裡通過串聯而不是在ResNets中使用的附加來完成的,這樣原始特徵直接能流過每一層。
效果比ResNets更好。 DenseNets幫助緩解梯度消失問題,加強特徵傳播,促進特徵重用,大幅減少參數數量。
這些是在過去幾年中圖像分類領域的主要網絡架構。 目前已經取得了很大的進展,這個新技術可以解決許多現實世界的問題,這是令人興奮的。 現在只剩下一個問題了..
▌我們該何去何從
圖像分類的深度學習研究一直蓬勃發展! 我們已經採取了更多的步驟來改進這項任務的方法,其表現甚至超越了人類的表現。 深度神經網絡現在被廣泛用於許多企業的圖像分類,甚至是許多新的啟動技術的基礎。
所有這些進展非常令人鼓舞的,但我們必須始終努力改進。 深度學習模型在圖像分類中仍然存在很多挑戰。 如果我們想要向前發展,必須重視這些挑戰。 在這裡,我將回顧一些我認為重要的研究人員正在積極嘗試解決的問題:
示例圖:有監督學習和無監督學習
目前,大多數用於計算機視覺任務深度學習方法都是有監督學習。 這意味著我們需要大量標記的訓練數據。 這些數據既繁瑣又昂貴。想一想:ImageNet的挑戰有130萬個訓練樣例,有1000個不同的類別! 一個人需要獲取所有的數據,瀏覽每張圖片,然後貼上標籤; 這可是一個體力活。
大多數情況下,當一個企業想為自己的特定應用程式應用圖像分類網絡時,他們必須使用遷移學習來微調預先訓練好的ImageNet網絡。為了做到這一點,他們仍然需要收集大量自己的數據並打標籤; 這是很乏味和昂貴的工作。
研究人員正在努力解決這個問題。 並取得了一系列進展,如快速有效的遷移學習,半監督學習和一次性學習等方法,越來越多的工作正在進行。我們可能不會直接跳到無監督學習,但是這些方法的研究是朝著正確的方向邁出的重要一步。
使用生成對抗網絡(GANs)的日益流行已經揭示了圖像分類的新挑戰:對抗圖像(Adversarial Images)。 對抗圖像是一個簡單的圖像,其類別對人類看起來是很容易區分的,但在深度網絡中導致很大的失敗。 看看上面的圖片。 雖然只有輕微的扭曲(看起來),但是深度網絡卻把圖像從熊貓分類到長臂猿!
對我們人類來說,類別很明顯,形象仍然是一隻熊貓,但由於某種原因,它會導致深層網絡的任務失敗。 這在現實世界的應用中可能是非常危險的:如果你的自動駕駛汽車不能識別行人,而是將其運行過來呢? 部分問題可能源於我們對深度網絡內部沒有充分理解。無論如何,研究人員正在積極研究這個具有挑戰性的問題。
深度學習的進步很多是基於硬體進步,特別是GPU的改進所推動的。 GPU允許並行高速計算。深度學習需要大量的矩陣運算; GPU擅長執行這些操作。 這進步太棒了,但並不是任何地方都有GPU!
許多最先進的網絡,包括上面已經討論過的網絡,只能在高端GPU上才能勉強運行。行動裝置是一個巨大的市場,怎麼服務於這個市場是很重要的。此外,隨著網絡越來越深,往往需要更多的內存,這使更多的設備無法訓練網絡!
這方面的研究最近實際上已經有了很大的提高。MobileNets是一種在行動裝置上直接運行深層網絡的結構。 他們使用不同的卷積風格來減少內存消耗和訓練時間。
▌總結
我們看到了圖像分類的難點,並回顧了在深度學習領域取得的驚人進展,我們也看到了當前的一些挑戰,以及如何用新的科學的方法來應對這些挑戰。
參考連結:
https://towardsdatascience.com/deep-learning-for-image-classification-why-its-challenging-where-we-ve-been-and-what-s-next-93b56948fcef
今日推薦
《Hadoop深度學習》
一本書讀懂深度學習來龍去脈,概覽Hadoop如何玩轉深度學習
快速了解深度學習基本概念
深度學習模型在大數據上的表現
HDFS、Map-Reduce、YARN、Deeplearning4j如何實現深度學習模型
Hadoop如何實現分布式卷積神經網絡和循環神經網絡
受限玻爾茲曼機以及分布式深度信念網絡及其實現示例
自動編碼器
分布式環境中常見機器學習應用的設計