早期成果
卷積神經網絡是各種深度神經網絡中應用最廣泛的一種,在機器視覺的很多問題上都取得了當前較好的效果,另外它在自然語言處理,計算機圖形學等領域也有成功的應用。
第一個真正意義上的卷積神經網絡由LeCun在1989年提出[1],后來進行了改進,它被用于手寫字符的識別,是當前各種深度卷積神經網絡的鼻祖。接下來我們介紹LeCun在早期提出的3種卷積網絡結構。
?
文獻[1]的網絡由卷積層和全連接層構成,網絡的輸入是16x16的歸一化圖像,輸出為0-9這10個類,中間是3個隱含層。這個網絡的結構如下圖所示:
? ??
這篇文章提出了權重共享(weight sharing)和特征圖像(feature map)的概念,這些概念被沿用至今,就是卷積層的原型。網絡有1個輸入層,1個輸出層,3個隱含層構成,其中隱含層H1和H2是卷積層,H3是全連接層。網絡的激活函數選用了tanh(雙曲正切)函數,損失函數選用了均方誤差(mean squared error)函數,即歐氏距離的均值。網絡的權重用均勻分布的隨機數進行初始化,訓練時參數梯度值的計算采用了反向傳播算法,梯度值的更新采用了在線(online)的隨機梯度下降法。
?
文獻[2]的網絡結構和文獻[1]類似,用于郵政編碼的識別,在9%拒識率的條件下錯誤率為1%。網絡的輸入為28x28的圖像,輸出為0-9這10個類。整個網絡有4個隱含層,其中H1為4個5x5的卷積核,輸出為4張24x24的特征圖像。H2為下采樣層,對H1的輸出結果進行2x2的下采樣,得到4張12x12的圖像。H3有12個5x5的卷積核,輸出為12張8x8的圖像,這里輸出圖像每個通道的多通道卷積只作用于前一層輸出圖像的部分通道上,為什么采用這樣方式?有兩個原因:1.減少參數,2.這種不對稱的組合連接的方式有利于提取多種組合特征。H2和H3的連接關系如下圖所示:
H4為下采樣層,對H3的輸出圖像進行2x2的下采樣,得到12張4x4的特征圖像。最后為輸出層,接收H4特特征圖像,輸出10個類別的概率。
文獻[3]的網絡即為LeNet-5網絡,這是第一個被廣為流傳的卷積網絡,整個網的結構如下圖所示:
下面是基于LeNet-5的手寫體數字識別案例:
這個網絡的輸入為32x32的圖像,整個網絡有2個卷層,2個池化層,2個全連接層,一個輸出層,輸出層有10個神經元,代表10個數字類。卷積層C1有6個5x5的卷積核,作用于灰度圖像,產生6張28x28的輸出圖像。池化層S2作用于C1的輸出圖像,執行2x2的池化,產生6張14x14的輸出圖像。卷積層C3有16個5x5的卷積核,每個卷積核作用于前一層輸出圖像的部分通道上,產生16張10x10的輸出圖像。C3和S2的連接關系如下圖所示:
池化層S4對C3的輸出圖像進行2x2的池化,得到16張5x5的輸出圖像。全連接層C5有120個節點,全連接層F6有64個節點。
網絡的激活函數選用tanh函數,損失函數采用均方誤差函數,訓練時采用隨機梯度下降法和反向傳播算法。
?
早期的卷積網絡被用于人臉檢測[4][5],人臉識別[6],字符識別[7]等各種問題。但并沒有成為主流的方法,其原因主要是梯度消失問題、訓練樣本數的限制、計算能力的限制3方面因素。梯度消失的問題在之前就已經被發現,對于深層神經網絡難以訓練的問題,文獻[8]進行了分析,但給出的解決方法沒有成為主流。
深度卷積神經網絡
在深入分析比較當前主流深度卷積神經網絡的特點之前,我們從各網絡在ImageNet 2012測試數據集的準確率以及網絡的參數量和計算復雜度三個維度進行分析,希望讀者對當前的主流網絡結構有一個整體的認知。如下圖所示:
深度卷積網絡的大發展起步于2012年的AlexNet網絡,在這之后各種改進的網絡被不斷的提出,接下來我們會介紹各種典型的網絡結構。
AlexNet網絡
現代意義上的深度卷積神經網絡起源于AlexNet網絡[9],它是深度卷積神經網絡的鼻祖。這個網絡相比之前的卷積網絡最顯著的特點是層次加深,參數規模變大。網絡結構如下圖所示:
這個網絡有5個卷積層,它們中的一部分后面接著max-pooling層進行下采樣;最后跟3個全連接層。最后一層是softmax輸出層,共有1000個節點,對應ImageNet圖集中 1000個圖像分類。網絡中部分卷基層分成2個group進行獨立計算,有利于GPU并行化以及降低計算量。
這個網絡有兩個主要的創新點:1. 新的激活函數ReLU,2. dropout機制[10]。dropout的做法是在訓練時隨機的選擇一部分神經元進行休眠,另外一些神經元參與網絡的優化,起到了正則化的作用以減輕過擬合。
網絡的輸入圖像為的彩色三通道圖像。第1個卷積層有96組11x11大小的卷積核,卷積操作的步長為4。這里的卷積核不是2維而是3維的,每個通道對應有3個卷積核(所以是一組卷積核),具體實現時是用3個2維的卷積核分別作用在RGB通道上,然后將三張結果圖像相加。下圖為輸入為3通道,卷積層參數為2組每組3個卷積核,輸出結果為2通道的動態卷積過程
第2個卷積層有256組5x5大小的卷積核,分為兩個group,即每個group通道數為128組,每組有48個卷積核。第3個卷積層有384組3x3大小的卷積核,每組有256個卷積核。第4個卷積層有384組3x3大小的卷積核,分為兩個group,即每個group通道數為192組,每組有192個卷積核。第5個卷積層有256組,3x3大小的卷積核,分為兩個group,即每個group為128組,每組有192個卷積核。
這個網絡沒有使用傳統的sigmoid或tanh函數作為激活函數,而是使用了新型的ReLU函數[11]:
其導數為符號函數sgn。ReLU函數和它的導數計算簡單,在正向傳播和反向傳播時都減少了計算量。由于在時函數的導數值為1,可以在一定程度上解決梯度消失問題,訓練時有更快的收斂速度。當時函數值為0,這使一些神經元的輸出值為0,從而讓網絡變得更稀疏,起到了類似L1正則化的作用,也可以在一定程度上緩解過擬合。
ZFNet網絡
文獻[12]提出通過反卷積(轉置卷積)進行卷積網絡層可視化的方法,以此分析卷積網絡的效果,并指導網絡的改進,在AlexNet網絡的基礎上得到了效果更好的ZFNet網絡。
該論文是在AlexNet基礎上進行了一些細節的改動,網絡結構上并沒有太大的突破。該論文較大的貢獻在于通過使用可視化技術揭示了神經網絡各層到底在干什么,起到了什么作用。如果不知道神經網絡為什么取得了如此好的效果,那么只能靠不停的實驗來尋找更好的模型。使用一個多層的反卷積網絡來可視化訓練過程中特征的演化及發現潛在的問題;同時根據遮擋圖像局部對分類結果的影響來探討對分類任務而言到底那部分輸入信息更重要。下圖為典型反卷積網絡示意圖:
ZFNet網絡結構如下圖所示:
ZFNet在保留AlexNet的基本結構的同時利用反卷積網絡可視化的技術對特定卷積層的卷積核尺寸進行了調整,第一層的卷積核從11*11減小到7*7,將stride從4減小到2,Top5的錯誤率比AlexNet比降低了1.7%。
GoogLeNet網絡
文獻[13]提出了一種稱為GoogLeNet網絡的結構(Inception-V1)。在AlexNet出現之后,針對圖像類任務出現了大量改進的網絡結構,總體來說改進的思路主要是增大網絡的規模,包括深度和寬度。但是直接增加網絡的規模將面臨兩個問題,首先,網絡參數增加之后更容易出現過擬合,在訓練樣本有限的情況下這一問題更為突出。另一個問題是計算量的增加。GoogLeNet致力于解決上面兩個問題。
GoogLeNet由Google在2014年提出,其主要創新是Inception機制,即對圖像進行多尺度處理。這種機制帶來的一個好處是大幅度減少了模型的參數數量,其做法是將多個不同尺度的卷積核,池化層進行整合,形成一個Inception模塊。典型的Inception模塊結構如下圖所示:
上圖的模塊由3組卷積核以及一個池化單元組成,它們共同接受來自前一層的輸入圖像,有三種尺寸的卷積核,以及一個max pooling操作,它們并行的對輸入圖像進行處理,然后將輸出結果按照通道拼接起來。因為卷積操作接受的輸入圖像大小相等,而且卷積進行了padding操作,因此輸出圖像的大小也相同,可以直接按照通道進行拼接。
從理論上看,Inception模塊的目標是用尺寸更小的矩陣來替代大尺寸的稀疏矩陣。即用一系列小的卷積核來替代大的卷積核,而保證二者有近似的性能。
上圖的卷積操作中,如果輸入圖像的通道數太多,則運算量太大,而且卷積核的參數太多,因此有必要進行數據降維。所有的卷積和池化操作都使用了1x1卷積進行降維,即降低圖像的通道數。因為1x1卷積不會改變圖像的高度和寬度,只會改變通道數。
GoogleNet網絡結構如下圖所示:
GoogleNet在ILSVRC 2014的比賽中取得分類任務的第一名,top-5錯誤率6.67%。相較于之前的AlexNet-like網絡,GoogleNet的網絡深度達到了22層,參數量減少到AlexNet的1/12,可以說是非常優秀且非常實用的模型。
為了降低網絡參數作者做了2點嘗試,一是去除了最后的全連接層,用全局平均池化替代。全連接層幾乎占據了AlexNet中90%的參數量,而且會引起過擬合,去除全連接層后模型訓練更快并且減輕了過擬合。用全局平均池化層取代全連接層的做法借鑒了Network In Network(以下簡稱NIN)論文[16]。二是GoogleNet中精心設計的Inception模塊提高了參數的利用效率,這一部分也借鑒了NIN的思想,形象的解釋就是Inception模塊本身如同大網絡中的一個小網絡,其結構可以反復堆疊在一起形成大網絡。不過GoogleNet比NIN更進一步的是增加了分支網絡。
VGG網絡
VGG網絡由著名的牛津大學視覺組(Visual Geometry Group)2014年提出[14],并取得了ILSVRC 2014比賽分類任務的第2名(GoogleNet第一名)和定位任務的第1名。同時VGGNet的拓展性很強,遷移到其他圖片數據上的泛化性非常好。VGGNet的結構非常簡潔,整個網絡都使用了同樣大小的卷積核尺寸(3x3)和池化尺寸(2x2)。到目前為止,VGGNet依然經常被用來提取圖像特征,被廣泛應用于視覺領域的各類任務。
VGG網絡的主要創新是采用了小尺寸的卷積核。所有卷積層都使用3x3卷積核,并且卷積的步長為1。為了保證卷積后的圖像大小不變,對圖像進行了填充,四周各填充1個像素。所有池化層都采用2x2的核,步長為2。全連接層有3層,分別包括4096,4096,1000個節點。除了最后一個全連接層之外,所有層都采用了ReLU激活函數。下圖為VGG16結構圖:
VGG與Alexnet相比,做了以下改進:
1.去掉了LRN層,作者實驗中發現深度卷積網絡中LRN的作用并不明顯
2.采用更小的連續3x3卷積核來模擬更大尺寸的卷積核,例如2層連續的3x3卷積層可以達到一層5x5卷積層的感受野,但是所需的參數量會更少,兩個3x3卷積核有18個參數(不考慮偏置項),而一個5x5卷積核有25個參數。后續的殘差網絡等都延續了這一特點。
殘差網絡
殘差網絡(Residual Network)[15]用跨層連接(Shortcut Connections)擬合殘差項(Residual Representations)的手段來解決深層網絡難以訓練的問題,將網絡的層數推廣到了前所未有的規模,作者在ImageNet數據集上使用了一個152層的殘差網絡,深度是VGG網絡的8倍但復雜度卻更低,在ImageNet測試集上達到3.57%的top-5錯誤率,這個結果贏得了ILSVRC2015分類任務的第一名,另外作者還在CIFAR-10數據集上對100層和1000層的殘差網絡進行了分析。VGG19網絡和ResNet34-plain及ResNet34-Redisual網絡對比如下:
之前的經驗已經證明,增加網絡的層數會提高網絡的性能,但增加到一定程度之后,隨著層次的增加,神經網絡的訓練誤差和測試誤差會增大,這和過擬合還不一樣,過擬合只是在測試集上的誤差大,這個問題稱為退化。
為了解決這個問題,作者設計了一種稱為深度殘差網絡的結構,這種網絡通過跳層連接和擬合殘差來解決層次過多帶來的問題,這種做法借鑒了高速公路網絡(Highway Networks)的設計思想,與LSTM有異曲同工之妙。這一結構的原理如下圖所示:
后面有文獻對殘差網絡的機制進行了分析。得出了以下結論:殘差網絡并不是一個單一的超深網絡,而是多個網絡指數級的隱式集成,由此引入了多樣性的概念,它用來描述隱式集成的網絡的數量;在預測時,殘差網絡的行為類似于集成學習;對訓練時的梯度流向進行了分析,發現隱式集成大多由一些相對淺層的網絡組成,因此,殘差網絡并不能解決梯度消失問題。
為了進一步證明殘差網絡的這種集成特性,并確定刪除掉一部分跨層結構對網絡精度的影響,作者進行了刪除層的實驗,在這里有兩組實驗,第一組是刪除單個層,第二組是同時刪除多個層。為了進行比較,作者使用了殘差網絡和VGG網絡。實驗結果證明,除了個別的層之外,刪掉單個層對殘差網絡的精度影響非常小。相比之下,刪掉VGG網絡的單個層會導致精度的急劇下降。這個結果驗證了殘差網絡是多個網絡的集成這一結論。
第三組實驗是對網絡的結構進行變動,集調整層的順序。在實驗中,作者打亂某些層的順序,這樣會影響一部分路徑。具體做法是,隨機的交換多對層的位置,這些層接受的輸入和產生的輸出數據尺寸相同。同樣的,隨著調整的層的數量增加,錯誤率也平滑的上升,這和第二組實驗的結果一致。
但是筆者認為作者的這種解釋有些牽強。普通意義上的集成學習算法,其各個弱學習器之間是相互獨立的,而這里的各個網絡之間共享了一些層,極端情況下,除了一層不同之外,另外的層都相同。另外,這些網絡是同時訓練出來的,而且使用了相同的樣本。
GoogleNet-Inception-Like網絡改進系列
Inception-V2(GoogleNet-BN)
作者基于GoogleNet的基本結構進行了改進,Top1錯誤率相較減少了2個百分點,主要做了以下的改進:
1.加入了BN層,減少了Internal Covariate Shift(內部neuron的數據分布發生變化),使每一層的輸出都規范化到一個N(0, 1)的高斯。
2.學習VGG用2個3x3的conv替代Inception模塊中的5x5,既降低了參數數量,也加快了計算速度。
Inception-V3
Inception-V3一個最重要的改進是卷積核分解(Factorization),將7x7的卷積核分解成兩個一維的卷積(1x7,7x1),3x3也是一樣(1x3,3x1),我們稱為非對稱分解,如下圖所示。這樣做既可以加速計算減少參數規模,又可以將1個卷積拆成2個卷積,使得網絡深度進一步增加,增加了網絡的非線性。
除此以外作者對這個訓練優化的算法也做了改進:
1.通過改進AdaGrad提出了RMSProp一種新的參數優化的方式。RMSprop是Geoff Hinton提出的一種自適應學習率方法。AdaGrad會累加之前所有的梯度平方,而RMSprop僅僅是計算對應的平均值,因此可緩解AdaGrad算法學習率下降較快的問題。 實驗證明RMSProp在非凸條件下優化結果更好。
AdaGrad的迭代公式為:
RMSProp的迭代公式為:
2.采用了Label Smoothing的策略,該方法是一種通過在輸出標簽中添加噪聲,實現對模型進行約束,降低模型過擬合程度的一種正則化方法。
Inception-V4
Inception-v4相較于v3版本增加了Inception模塊的數量,整個網絡變得更深了。
Xception
Xception是Google針對Inception v3的另一種改進,主要是采用Depthwise Separable Convolution來替換原來Inception v3中的卷積操作, 在基本不增加網絡復雜度的前提下提高了模型的效果。什么是Depthwise Separable Convolution? 通常,在一組特征圖上進行卷積需要三維的卷積核,也即卷積核需要同時學習空間上的相關性和通道間的相關性。Xception通過在卷基層加入group的策略將學習空間相關性和學習通道間相關性的任務分離,大幅降低了模型的理論計算量且損失較少的準確度。
Xception網絡結構如下圖所示:
Inception-ResNet v1/v2
作者基于Inception-v3和Inception-v4將殘差網絡的思想進行融合,分別得到了Inception-ResNet-v1和Inception-ResNet-v2兩個模型。不僅提高了分類精度而且訓練的穩定性也得到增強。
Inception-ResNet-v2 網絡結構如下圖所示:
NASNet
此論文由Google brain出品,是在之前的一篇論文NAS-Neural Architecture Search With Reinforcement Learning的基礎做了突破性的改進,使得能讓機器在小數據集(CIFAR-10數據集)上自動設計出CNN網絡,并利用遷移學習技術使得設計的網絡能夠被很好的遷移到ImageNet數據集,驗證集上達到了82.7%的預測精度,同時也可以遷移到其他的計算機視覺任務上(如目標檢測)。該網絡的特點為:
1.延續NAS論文的核心機制,通過強化學習自動產生網絡結構。?
2.采用ResNet和Inception等成熟的網絡拓撲結構減少了網絡結構優化的搜索空間,大型網絡直接由大量的同構模塊堆疊而成,提高學習效率。
3.在CIFAR-10上進行了架構搜索,并將較好的架構遷移到ImageNet圖像分類和COCO物體檢測上。
下圖為采用AutoML設計的Block結構:
VGG-Residual-Like網絡改進系列
WRN(wide residual network)
作者認為,隨著模型深度的加深,梯度反向傳播時,并不能保證能夠流經每一個殘差模塊(residual block)的權重,以至于它很難學到東西,因此在整個訓練過程中,只有很少的幾個殘差模塊能夠學到有用的表達,而絕大多數的殘差模塊起到的作用并不大。因此作者希望使用一種較淺的,但是寬度更寬的模型,來更加有效的提升模型的性能。
ResNet原作者針對CIFAR-10所使用的的網絡,包含三種Residual Block,卷積通道數量分別是16、32、64,網絡的深度為6*N+2。而在這里,WRN作者給16、32、64之后都加了一個系數k,也就是說,作者是通過增加Residual Block卷積通道的數量來使模型變得更寬,從而N可以保持很小的值,就可以是網絡達到很好的效果。?
CIFAR-10和CIFAR -100性能對比:
? ?
上述實驗表明多帶帶增加模型的寬度是對模型的性能是有提升的。不過也不能完全的就認為寬度比深度更好,兩者只有相互搭配,才能取得更好的效果。
ResNeXt
作者提出 ResNeXt 的主要原因在于:傳統的提高模型準確率的做法,都是加深或加寬網絡,但是隨著超參數數量的增加(比如通道數,卷積核大小等),網絡設計的難度和計算開銷也會增加。因此本文提出的 ResNeXt 結構可以在不增加參數復雜度的前提下提高準確率。
這篇論文提出了ResNeXt網絡,同時采用了VGG堆疊的思想和Inception 的 split-transform-merge 思想,但是可擴展性比較強,可以認為是在增加準確率的同時基本不改變或降低模型的復雜度。這里提到一個名詞cardinality,原文的解釋是the size of the set of transformations,如下圖(a)(b) cardinality=32所示:
通過實驗給出了下面的結論:
1.證明ResNeXt比ResNet更好,而且Cardinality越大效果越好
2.增大Cardinality比增大模型的width或者depth效果更好
當時取得了state-of-art的結果,雖然后來被其它的網絡結構超越,但就在最近Facebook 在圖像識別技術上又有了新突破,基于ResNeXt 101-32x48d在ImageNet測試中準確度達到創紀錄的 85.4%!(使用了35億張圖像,1.7萬主題標簽進行模型訓練,規模史無前例!!!筆者這里不下什么結論,各位看官自行體會...)
DenseNet
DenseNet 是一種具有密集連接的卷積神經網絡。在該網絡中,任何兩層之間都有直接的連接,也就是說,網絡每一層的輸入都是前面所有層輸出的并集,而該層所學習的特征圖也會被直接傳給其后面所有層作為輸入。DenseNet的一個優點是網絡更窄,參數更少,很大一部分原因得益于dense block的設計,后面有提到在dense block中每個卷積層的輸出feature map的數量都很小(小于100),而不是像其他網絡一樣動不動就幾百上千的寬度。同時這種連接方式使得特征和梯度的傳遞更加有效,網絡也就更加容易訓練。下面是DenseNet 的一個示意圖:
DenseNet可以有效地減少網絡參數規模,達到減輕過擬合的效果,對小數據集合的學習很有效果。但是由于中間輸出的feature map數量是多層Concat的結果,導致網絡在訓練和測試的時候顯存占用并沒有明顯的優勢,計算量也沒有明顯的減少!
MobileNet
MobileNets是Google針對手機等嵌入式設備提出的一種輕量級的深層神經網絡,網絡設計的核心Separable Convolution可以在犧牲較小性能的前提下有效的減少參數量和計算量。Separable Convolution將傳統的卷積運算用兩步卷積運算代替:Depthwise convolution與Pointwise convolution,如下圖所示:
從圖中可以明確的看出,由于輸入圖片為三通道,Depthwise conv的filter數量只能為3,而傳統的卷積方法會有3x3總共9個filter。
后續的MobileNet-v2主要增加了殘差結構,同時在Depthwise convolution之前添加一層Pointwise convolution,優化了帶寬的使用,進一步提高了在嵌入式設備上的性能。可分離卷積如下圖所示:
深度神經網絡優化策略匯總
接下來介紹卷積神經網絡的各種改進措施,其中經典網絡的改進措施已經在前面各個網絡中介紹。針對卷積神經網絡的改進措施主要在以下幾個方面:卷積層,池化層,激活函數,損失函數,網絡結構,正則化技術等方面。優化算法對網絡的訓練至關重要,在這里我們多帶帶列出來了。
卷積層
卷積層的改進有以下幾種:卷積核小型化,1x1卷積,Network In Network,Inception機制,卷積分解(Factorization),反卷積運算等,下面分別介紹。
Network In Network[16]的主要思想是用一個小規模的神經網絡來替代卷積層的線性濾波器,在這篇文獻中,小型網絡是一個多層感知器卷積網絡。顯這種小型網絡比線性的卷積運算有更強的的描述能力。
卷積核小型化是現在普遍接受的觀點,在VGG網絡中已經介紹了。1x1卷積可以用于通道降維,也可以用于全卷積網絡,保證卷積網絡能接受任意尺寸的輸入圖像,并能做逐像素的預測。Inception機制在GoogLeNet網絡中已經介紹,這里也不在重復。
卷積操作可以轉化為圖像與一個矩陣的乘積來實現,反卷積[17]也稱為轉置卷積,它的操作剛好和這個過程相反,正向傳播時左乘矩陣的轉置,反向傳播時左乘矩陣。注意這里的反卷積和信號處理里的反卷積不是一回事,它只能得到和原始輸出圖像尺寸相同的圖像,并不是卷積運算的逆運算。反卷積運算有一些實際的用途,包括接下來要介紹的卷積網絡的可視化;全卷積網絡中的上采樣,圖像生成等。反卷積運算通過對卷積運算得到的輸出圖像左乘卷積矩陣的轉置,可以得到和原始圖像尺寸相同的一張圖像。
池化層
池化層的改進主要有以下幾種:L-P池化,混合池化,隨機池化,Spatial pyramid pooling,ROI pooling。
激活函數
除了傳統的sigmoid,tanh函數,深度卷積神經網絡中出現了各種新的激活函數,主要的有:ReLU,ELU,PReLU等,它們取得了不錯的效果,其中ReLU以及它的改進型在卷積網絡中被普遍采用。
損失函數
損失函數也是一個重要的改進點。除了歐氏距離損失之外,交叉熵,對比損失,合頁損失等相繼被使用。
在一些復雜的任務上,出現了多任務損失損失函數。典型的有目標檢測算法,人臉識別算法,圖像分割算法等,這些損失函數在人臉識別、目標檢測系列綜述文章中已經進行介紹,在這里不再重復。
網絡結構
這里的網絡結構指拓撲結構以及層的使用上。連接關系的改進如殘差網絡和DenseNet等結構在前面已經做了介紹。
全卷積網絡Fully Convolutional Networks[31],簡稱FCN,是在標準卷積網絡基礎上所做的改變,它將標準卷積網絡的全連接層替換成卷積層,以適應圖像分割、深度估計等需要對原始圖像每個像素點進行預測的情況。一般情況下,全卷積網絡最后幾個卷積層采用1x1的卷積核。由于卷積和下采樣層導致了圖像尺寸的減小,為了得到與原始輸入圖像尺寸相同的圖像,使用了反卷積層實現上采樣以得到和輸入圖像尺寸相等的預測圖像。
不同層的卷積核有不同的感受野,描述了圖像在不同尺度的信息。多尺度處理也是卷積網絡的一種常用手段,將不同卷積層輸出圖像匯總到一個層中進行處理可以提取圖像多尺度的信息,典型的做法包括GoogLeNet,SSD,Cascade CNN,DenseBox。
歸一化技術
神經網絡在訓練過程中每一層的參數會隨著迭代的進行而不斷變化,這會導致它后面一層的輸入數據的分布不斷發生變化,這種問題稱為internal covariate shift。在訓練時,每一層要適應輸入數據的分布,這需要我們在迭代過程中調整學習率,以及精細的初始化權重參數。為了解決這個問題,我們需要對神經網絡每一層的輸入數據進行歸一化。其中一種解決方案為批量歸一化Batch Normalization[66],它是網絡中一種特殊的層,用于對前一層的輸入數據進行批量歸一化,然后送入下一層進行處理,這種做法可以加速神經網絡的訓練過程。
優化算法
除了標準的mini-batch隨機梯度下降法之外,還有一些改進版本的梯度下降法,它們在很多實驗和實際應用中取得了更好的效果,下面分別進行介紹。
AdaGrad[67]為自適應梯度,即adaptive gradient算法,是梯度下降法最直接的改進。不同的是,AdaGrad根據前幾輪迭代時的歷史梯度值來調整學習率。AdaDelta算法[70]也是梯度下降法的變種,在每次迭代時也利用梯度值構造參數的更新值。Adam算法[68]全稱為adaptive moment estimation,它由梯度項構造了兩個向量m和v,它們的初始值為0。NAG算法是一種凸優化方法,由Nesterov提出。和標準梯度下降法的權重更新公式類似,NAG算法構造一個向量v,初始值為0。RMSProp算法[69]也是標準梯度下降法的變種,它由梯度值構造一個向量,初始化為0,
參數初始化和動量項對算法的收斂都至關重要,文獻[32]對這兩方面的因素進行了分析。它的觀點認為,對于深度神經網絡和循環神經網絡的訓練優化問題求解,權重初始值和動量項都很重要,二者缺一不可。如果初始值設置不當,即使使用動量項也很難收斂到好的效果;另一方面,如果初始值設置的很好,但不使用動量項,收斂效果也打折扣。
理論解釋
卷積網絡一般有很深的層次,要對它進行嚴格而細致的分析比較困難。與網絡的應用和設計相比,對它的理論和運行機理分析與解釋相對較少。如果我們能分析清楚卷積網絡的運行機理,把卷積操作可視化的顯示出來,無論是對于理解卷積網絡,還是對于網絡的設計都具有重要的意義。
對多層卷積神經網絡的理論解釋和分析來自兩個方面。第一個方面是從數學角度的分析,對網絡的表示能力、映射特性的數學分析;第二個方面是多層卷積網絡和人腦視覺系統關系的研究,分析二者的關系有助于理解、設計更好的方法,同時也促進了神經科學的進步。
典型應用
卷積神經網絡在諸多領域得到了成功的應用。接下來我們將介紹它在機器視覺,計算機圖形學,自然語言處理這些典型領域的應用。對于這些應用問題和為它們設計的網絡結構和算法,理解的關鍵點是:
1.網絡的結構。即網絡由那些層組成,各個層的作用是什么,它們的輸入數據是什么,輸出數據是什么。
2.訓練目標即損失函數,這直接取決于要解決的問題。
機器視覺
卷積神經網絡在圖像分類問題上取得成功之后很快被用于人臉檢測問題,在精度上大幅度超越之前的AdaBoost框架,當前已經有一些高精度、高效的算法。直接用滑動窗口加卷積網絡對窗口圖像進行分類的方案計算量太大很難達到實時,使用卷積網絡進行人臉檢測的方法采用各種手段解決或者避免這個問題。在這些方法中,Cascade CNN,DenseBox,Femaleness-Net,MT-CNN是其中的代表。
?
和人臉、行人等特定目標檢測不同,通用目標檢測的任務是同時檢測圖像中多種類型的目標。各類目標的形狀不同,因此目標矩形的寬高比不同,難度更大。典型的算法是R-CNN,SPP網絡,Fast R-CNN,Faster R-CNN,YOLO,SSD,R-FCN,FPN等。
?
人臉關鍵點定位的目標是確定關鍵位置的坐標,如眼睛的中點,鼻尖和嘴尖等。它在人臉識別、美顏等功能中都有應用。這個問題是一個回歸問題,要實現的是如下映射:
文獻[26]提出了一種用級聯的卷積網絡進行人臉關鍵點檢測的方法,通過逐級細化的思路實現。本文檢測5個關鍵點,分別是左右眼的中心LE和RE,鼻尖N,嘴的左右端LM和RM。采用了3個層次的卷積網絡進行級聯,逐步求精。第一個層次上包含3個卷積網絡,分別稱為F1,EN1,NM1,輸入分別為整個人臉圖像,眼睛和鼻子,鼻子和嘴巴。每個網絡都同時預測多個關鍵點。對每個關鍵點,將這些網絡的預測值進行平均以減小方差。系統的結構如下圖所示:
人臉識別也是深度卷積神經網絡成功應用的典型領域。
?
文字定位和識別也是卷積網絡成功應用的方向[27][28][29][30],后者屬于圖像分類問題。在這里我們不詳細介紹。除了圖像分類,目標檢測等大類任務之后,接下來我們重點介紹卷積網絡在機器視覺其他問題上的應用。
?
圖像語義分割和圖像識別是密切相關的問題。分割可看做對每個像素的分類問題。卷積網絡在進行多次卷積和池化后會縮小圖像的尺寸,最后的輸出結果無法對應到原始圖像中的單一像素,卷積層后面接的全連接層將圖像映射成固定長度的向量,這也與分割任務不符。針對這兩個問題有幾種解決方案,最簡單的做法是對一個像素為中心的一塊區域進行卷積,對每個像素都這樣的操作。這種方法有兩個缺點:計算量大,利用的信息只是本像素周圍的一小片區域。更好的方法是全卷積網絡,這是我們接下來要介紹的重點。
文獻[31]提出了一種稱為全卷積網絡FCN的結構來實現圖像的語義分割,這種模型從卷積特征圖像恢復出原始圖像每個像素的類別。網絡能夠接受任意尺寸的輸入圖像,并產生相同尺寸的輸出圖像,輸入圖像和輸出圖像的像素一一對應。這種網絡支持端到端、像素到像素的訓練。
最簡單的FCN的前半部分改裝自AlexNet網絡,將最后兩個全連接層和一個輸出層改成3個卷積層,卷積核均為1x1大小。解決卷積和池化帶來的圖像分辨率縮小的問題的思路是上采樣。
網絡的最后是上采樣層,在這里用反卷積操作實現上采樣,反卷積的卷積核通過訓練得到。在實現時,在最后一個卷積層后面接上一個反卷積層,將卷積結果映射回和輸入圖像相等的尺寸。為了得到更精細的結果,可以將不同卷積層的反卷積結果組合起來。系統結構如下圖所示:
文獻[34]提出了一種稱為DeepLab的圖像分割方法。這個方法的創新有3點:用上采樣的濾波器進行卷積,稱為atrous卷積,以實現密集的、對像素級的預測;采用了atrous空間金字塔下采樣技術,以實現對物體的多尺度分割;第三點是使用了概率圖模型,實現更較精確的目標邊界定位,通過將卷積網絡最后一層的輸出值與一個全連接的條件隨機場相結合得到。算法運行結果如下圖所示:
文獻[35]提出了一種稱為SegNet的圖像語義分割網絡,這也是一個全卷積網絡,其主要特點是整個網絡由編碼器和解碼器構成。網絡的前半部分是編碼器,由多個卷積層和池化層組成。網絡的后半部分為解碼器,由多個上采樣層和卷積層構成。解碼器的最后一層是softmax層,用于對像素進行分類。
編碼器網絡的作用是產生有語義信息的特征圖像;解碼器網絡的作用是將編碼器網絡輸出的低分辨率特征圖像映射回輸入圖像的尺寸,以進行逐像素的分類。解碼器用編碼器max池化時記住的較大元素下標值執行非線性上采樣,這樣上采樣的參數不用通過學習得到。上采樣得到的特征圖像通過卷積之后產生密集的特征圖像。整個框架實現了完全端到端的訓練。
?
邊緣檢測的目標是找出圖像中所有的邊緣像素點。Sobel算子和拉普拉斯算子都可以通過卷積和閾值化的方式提取出圖像的邊緣。更復雜的方法有Canny算子,它首先用Sobel算子得到梯度圖像,在進行閾值化之后進行非較大抑制,最后得到更為干凈的邊緣圖。和圖像分割一樣,純圖像處理的方法只在像素一級進行操作,沒有利用圖像語義和結構信息。邊緣和輪廓檢測可以看做是二分類問題,正樣本為邊緣點的像素,負樣本為非邊緣像素。
文獻[39]提出了一種稱為DeepEdge的邊緣提取方法,這是一種基于圖像塊的方法,卷積網絡作用于原始圖像中以每個像素為中心的小圖像塊,判斷該像素是否為邊緣像素。輪廓檢測流程分為如下幾步:
1.用Canny算子提取候選輪廓點,它輸出的邊緣圖像中所有的邊界點作為候選輪廓點。
2.為所有候選輪廓點提取4個尺度的子圖像,將它們同時送入卷積網絡中進行處理。
3.將卷積的結果送入2個子網絡中進行處理,第一個網絡用于分類,第二個網絡用于回歸。
4.將這兩個網絡的輸出值進行加權平均,得到最后的分數值,這個分數值表示該候選輪廓點是否真的是輪廓點。
5.對上一步的輸出分數進行閾值化,得到最終的輪廓圖像。
邊緣檢測的結果如下圖所示:
文獻[37]提出了一種稱為DeepContour的物體輪廓提取算法,這也是一種基于圖像塊的方法。在這里將正樣本即輪廓劃分為多個子類,并且用不同的模型擬合這些子類。作者設計了一種新的損失函數,稱為positive-sharing loss,各個子類共享正樣本類的損失。在這里用卷積網絡對小的圖像塊進行分類,這些圖像塊從整個圖像中切分出來,可能包括輪廓,也可能不包括輪廓。
文獻[38]提出了一種稱為整體式嵌套(Holistically-Nested)的邊緣檢測算法。整體式是指整個算法是端到端的,嵌套式指在整個邊緣檢測的過程中通過不斷的細化求解,得到較精確的邊界圖像。網絡對輸入圖像進行了多尺度的處理,這通過卷積網絡運行過程中得到的多個尺度的特征圖像進行處理融合而實現。
風格遷移的任務是把輸入圖像變成另一種風格,如油畫風格,但要保持和輸入圖像的內容相同,這是一個根據兩張圖像生成一張圖像的問題。
文獻[40]提出了一種用卷積網絡進行風格遷移的方法。在這里將風格看成是紋理特征,風格遷移看成是提取待遷移圖像的語義及內容信息,然后將紋理風格作用于該圖像,得到想要的風格的輸出圖像。
算法的輸入包括一張風格圖像和一張要進行風格遷移的內容圖像,輸出的新圖像內容和內容圖像保持一致,風格和風格圖像保持一致。處理流程為:
1.用卷積網絡提取風格圖像的風格特征,內容圖像的內容特征。
2.從一張白噪聲圖像開始迭代生成目標圖像,優化的目標是使得目標圖像的風格特征與風格圖像相似,內容特征與內容圖像相似。
?圖像增強的任務是提升圖像的對比度。文獻[90]提出了一種用卷積神經網絡進行圖像增強的方法。其基本思想是學習人工對圖像進行增強調整的模型。這種方法達到了非常好的效果,而且可以在移動設備上做到實時處理。
在進行圖像增強時,卷積網絡輸出的是原始圖像的低分辨版本,進行雙邊空間中的一系列仿射變換,然后對這些仿射變換進行保邊緣的上采樣。然后將上采樣后的變換作用于原始輸出圖像,得到增強后的圖像。
?
卷積神經網絡被成功的用于根據單張圖像估計深度信息。文獻[41]提出了一種用多尺度的卷積網絡從單張圖像估計深度的方法,在這里,深度信息只是相對數據,即圖像中每個像素離攝像機的遠近關系,而不是真實的物理距離。由于每個像素點都會預測出一個深度值,因此這是一個逐像素的回歸問題。
系統的輸入是單張RGB圖像,輸出是深度圖,和輸入圖像尺寸相同。系統由兩個卷積網絡層疊組成,第一個網絡對整個圖像進行粗的全局深度預測,第二個卷積網絡用局部信息對全局預測結果進行求精。
算法運行的結果如下圖所示:
更進一步,文獻[42]提出了一種用多尺度卷積神經網絡從單張圖像估計深度信息、法向量的方法。這個卷積網絡的輸入為單張RGB圖像,輸出為三張圖像,分別為深度圖,法向量圖,以及物體分割標記圖。
這個卷積網絡包括三個尺度,形成級聯結構。每個尺度的第一個層都接受原始RGB圖像作為輸入,另外還接受上一個級卷積網絡的輸出作為輸入,這個輸出是經過上采樣的。
目標跟蹤是機器視覺領域中的一個重要問題,它分為單目標跟蹤與多目標跟蹤兩種問題。前者只跟蹤單個目標,后者要對多個目標同時進行跟蹤。單目標跟蹤是一個狀態預測問題,它根據目標在之前幀中的位置、大小、外觀和運動信息估計在當前幀中的位置、大小等狀態。
文獻[44]用卷積神經網絡來實現目標的檢測以用于目標跟蹤。網絡的輸入為固定尺寸的圖像,包含3個卷積層,輸出為概率圖像,表示該位置為目標的概率。在卷積層和全連接層之間加入了SPP網絡中的SPP池化層,以提高目標定位的精度。整個網絡先用ImageNet的目標檢測數據集進行離線訓練,這樣就具有區分目標和背景的能力。
文獻[46]提出了一種用全卷積網絡進行目標跟蹤的方法,卷積網絡的作用是目標檢測。這種方法用一個在ImageNet數據集上預先訓練好的卷積網絡提取圖像的特征,用于區分目標和背景,卷積網絡采用VGG結構。另外也用卷積網絡的特征生成熱度圖,表示每個位置處是目標的概率。
文獻[45]提出了一種稱為Multi-Domain的卷積網絡結構實現目標跟蹤。這個網絡的前半部分是卷積層和全連接層,后面是多個domain-specific層, 它們用于實現目標的較精確定位。
其他的目標跟蹤文章見參考文獻,在此不一一列舉。
圖形學
計算機圖形學是計算機科學的一個重要分支,它的任務是用計算機程序生成圖像,尤其是真實感圖像。圖形學中有3個主要的問題:幾何模型的建立,物理模型的建立包括光照模型,渲染即由幾何和物理模型生成最終的圖像。
機器學習技術在圖形學中的應用代表了數據驅動這類方法,它通過大量的訓練樣本得到要建立的模型的參數,或者直接由訓練的模型生成圖像。卷積網絡適合處理圖像、2D或者3D空間中的網格數據這里具有空間結構的數據,在圖形學的很多問題上也取得了很好的效果。
文獻[51]提出了一種用基于八叉樹的卷積網絡進行3D形狀分析的方法,稱為O-CNN。在這里用八叉樹表示3D物體,將八叉樹最精細葉子節點的法向量均值作為卷積網絡的輸入,執行3D卷積運算。這種卷積網絡能對3D形狀進行分類,檢索和分割。
在圖形學中,物理模型包括對要繪制的物體進行力學和光學建模。前者主要針對運動的物體,包括剛體和流體。對所有要渲染的物體,都需要建立光學模型,包括物體表面材質的光學特征,以及光照模型。
文獻[53]提出了一種使用單張圖片估計物體表面反射函數的方法,該算法用卷積網絡表示表面反射函數。表面反射函數定義了物體表面的光學反射特性,它決定了給定光照條件下物體表面的顏色和紋理,這對繪制物體至關重要。
?
流體模擬是圖形學中一個重要的問題,它對液體、氣體如煙霧等物體的運動進行建模和繪制。在仿真、游戲與動畫、電影特技里都有這種技術的應用。經典的方法是基于物理的流體模擬。它主要由兩步構成:對流體的運動進行建模,及對流體的表面進行繪制,前者的基礎是流體力學。在流體力學領域,描述流體運動使用的是Navier-Stokes方程,這是一個復雜的偏微分方程組。用離散化的數值方法計算需要求解大規模的方程組,非常耗時,使得高精度的流體模擬很難實時進行。
文獻[58]提出了一種用卷積網絡加速流體模擬的方法,這種方法不再求解大規模的線性方程組,而是直接用卷積網絡進行預測。這個網絡用大量的仿真數據作為訓練集,采用半監督的方法進行訓練,目標是最小化長期速度散度。
文獻[52]提出了一種用卷積網絡進行煙霧合成的方法,其關鍵是用卷積網絡建立煙霧運動的力學模型。在這里采用了一個有4個卷積層和2個全連接層的卷積網絡。卷積網絡的作用是學習描述粗糙尺度煙霧模擬局部和精細尺度煙霧模擬局部對應關系的映射。在新場景中生成精細的煙霧特效時,只需進行快速的粗糙模擬,并根據卷積網絡建立的映射得到與各局部相對應的精細模擬局部,然后將其細節形體信息轉移過來即可。
紋理合成是渲染時重要的一步,它從小的紋理樣圖生成大的紋理圖像,然后映射到物體表面的曲面上,要保證生成的圖像沒有縫隙。和風格遷移一樣,這也是一個從圖像生成圖像的問題。卷積神經網絡的卷積輸出值蘊含了圖像的信息,因此可以根據它來計算紋理特征,用來衡量樣例圖像和生成的圖像的相似度。
文獻[55]提出了一種用卷積網絡合成紋理的方案,其思想和前面介紹的風格遷移類似。這個方法分為兩步。首先是紋理分析,它的輸入是紋理樣圖,送入卷積網絡處理之后,在各個卷積層的輸出特征圖像上計算Gram矩陣。第二步是紋理合成,它的輸入是一張白噪聲圖像,送入卷積網絡進行處理,用紋理模型在卷積網絡的各個層上計算損失函數。然后用梯度下降法迭代更新這張白噪聲圖像,使得損失函數最小化。對白噪聲圖像的優化結果就是合成得到的紋理圖像,它與紋理樣例圖像具有相同的Gram矩陣。
文獻[56]提出了一種用卷積網絡學習紋理的特征,然后合成紋理的方法。它們的方法思路和Leon 的類似,也是用一個卷積網絡提取出圖像在各個層的紋理特征,另外,用同樣的網絡對一張白噪聲圖像進行處理,提取出相同的紋理特征。然后用梯度下降法更新噪聲圖像,目標是使得二者的紋理特征相同。在這里,他們沒有使用Gram矩陣描述紋理特征,而是使用了結構化能量,它基于輸出圖像的相關系數,捕捉紋理的自相似性和規則性。
圖像彩色化的目標是給定一張黑白圖像,在少量的用戶交互作用下生成對應的彩色圖像。在這里的用戶交互一般是讓用戶在黑白圖像的某些位置設置顏色。
文獻[60]提出了一種使用卷積網絡將黑白圖像彩色化的方法。卷積網絡的輸入是灰度圖像以及少量的用戶提示信息,輸出數據是彩色圖像。其目標是根據灰度圖像的結構信息以及用戶在幾個典型位置的輸入顏色,預測出每個像素的顏色值。系統由兩個神經網絡構成。第一個為局部提示網絡,它接受稀疏的用戶輸入;第二個網絡是全局提示網絡,它使用圖像的全局統計信息。
下圖是彩色化的結果:
High Dynamic Range即高度動態范圍,簡稱HDR,它確保在某些極端光照條件下,圖像的高光和弱光區域都很清晰。普通照相機因為傳感器量化范圍的限制,產生的圖像圖像會有欠曝光或者過曝光區域,HDR是解決這個問題的一種方法。
產生HDR圖像的做法一般是用相機拍攝多張有不同曝光度的LDR(Low Dynamic Range,低動態范圍)的圖像,然后合并成一張高動態范圍的圖像。生成HDR圖像需要解決兩個問題:1.需要將多張LDR圖像對齊,2.將這些圖像進行合并,生成HDR圖像。第1個問題可以用光流法等手段解決,但會留下人工痕跡。
文獻[54]提出了一種用機器學習的手段進行HDR圖像合成的方法。這種方法能夠根據3張不同曝光的LDR圖像生成HDR圖像。首先用光流法將高曝光與低曝光圖像與中度曝光圖像對齊,中度曝光圖像為參考圖像。最后生成的HDR圖像與參考圖像對齊,但包含另外兩張圖像即高曝光與低曝光圖像的信息。然后將3張對齊的圖像送入卷積網絡中預測,生成HDR圖像。
自然語言處理
自然語言處理領域大多數的問題都是時間序列問題,這是循環神經網絡擅長處理的問題,在下一章中我們將詳細介紹。但對于有些問題,使用卷積網絡也能進行建模并且得到了很好的結果,在這里我們重點介紹文本分類和機器翻譯。
文獻[64]設計了一種用卷積網絡進行句子分類的方案。這個方法的結構很簡單,使用不同尺寸的卷積核對文本矩陣進行卷積,卷積核的寬度等于詞向量的長度,然后使用max池化。對每一個卷積核提取的向量進行操作,最后每一個卷積核對應一個數字,把這些數據拼接起來,得到一個表征該句子的向量。最后的預測都是基于該句子的。
文獻[65]提出了一種用卷積網絡進行機器翻譯的方法。這篇文章用卷積網絡實現了序列到序列的學習,而之前的經典做法是用循環神經網絡構建序列到序列的學習框架。在WMT 14的英語-德語,英語-法語數據集上,這種方法的精度超越了Google的LSTM循環神經網絡翻譯系統。
工程優化
深度神經網絡的模型需要占用大量的存儲空間,網絡傳輸時也會耗費大量的帶寬和時間,這限制了在移動設備、智能終端上的應用。在Caffe中,AlexNet網絡的模型文件超過200MB,VGG則超過500MB,這樣的模型文件是不適合集成到app安裝包中的。因此需要對模型進行壓縮,在下一節中我們將介紹解決這一問題的典型方法。
復雜的模型不僅帶來存儲空間的問題,還有計算量的增加。運行在服務端的模型可以通過GPU、分布式等并行計算技術進行加速,運行在移動端和嵌入式系統中的模型由于成本等因素的限制,除了采用并行計算等進行加速之外,還需要對算法和模型本身進行裁剪或者優化以加快速度。在下一節中,我們將詳細介紹加快網絡運行速度的方法。
減少存儲空間和計算量的一種方法是對神經網絡的模型進行壓縮。有多種實現手段,包括減小網絡的規模,對模型的權重矩陣進行壓縮,對模型的參數進行編碼,神經網絡二值化等,接下來分別介紹。
權重剪枝
文獻[71]提出了一種卷積神經網絡模型壓縮方法。在不影響精度的前提下,能夠將AlexNet網絡模型的參數減少到1/9,VGG-16網絡模型的參數減少到1/13。其做法是先按照正常的流程訓練神經網絡,然后去掉小于指定閾值的權重,最后對剪枝后的模型進行重新訓練,反復執行上面的過程直到完成模型的壓縮。
更進一步,文獻[72]提出了一種稱為deep compression的深度模型壓縮技術,通過剪枝、量化和哈夫曼編碼對模型進行壓縮,而且不會影響網絡的精度。整個方法分為3步,第1步對模型進行剪枝,只保留一些重要的連接。第2步通過權值量化來共享一些權值。第3步通過哈夫曼編碼來進一步壓縮數據。
二值化網絡
將網絡的權重由浮點數轉換為定點數甚至是二值數據可以大幅度的提高計算的速度,減少模型的存儲空間。相比浮點數的加法和乘法運算,定點數要快很多,而二值化數據的運算可以直接用位運算實現,帶來的加速比更大。
文獻[73]提出了一種稱為二值神經網絡(簡稱BNN)的模型。二值神經網絡的權重值和激活函數都是二值化的數據,這能顯著減小模型存儲空間,并且加快模型的計算速度。
文獻[74]提出了一種稱為二值權重網絡和XNOR(同或門)網絡的模型,這是對卷積神經網絡的二值化逼近,也是對文獻[17]方法的進一步優化。
二值權重網絡的權重矩陣是二值化數據,輸入數據是實數。XNOR網絡的卷積核、卷積層、全連接層的輸入數據都是二值化的。在不損失精度的前提下,XNOR網絡能夠把模型的存儲空間壓縮為1/32,速度提升58倍。
參考文獻:
[1] .LeCun, B.Boser, J.S.Denker, D.Henderson, R.E.Howard, W.Hubbard, and L.D.Jackel. Backpropagation applied to handwritten zip code recognition. Neural Computation, 1989.
[2] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Handwritten digit recognition with a back-propagation network. In David Touretzky, editor, Advances in Neural Information Processing Systems 2 (NIPS*89), Denver, CO, 1990, Morgan Kaufman.
[3] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, november 1998.
[4] H. Rowley, S. Baluja, and T. Kanade. Neural Network-Based Face Detection. In:Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. San Francisco, CA, USA: IEEE Computer Society, 1996. 203-208
[5] H. Rowley, S. Baluja, and T. Kanade. Rotation Invariant Neural Network-Based Face Detection. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Santa Barbara, CA, USA: IEEE Computer Society, 1998. 38-44
[6] S Lawrence, C L Giles, Ah Chung Tsoi, Andrew D Back.Face recognition: a convolutional neural-network approach.1997, IEEE Transactions on Neural Networks.
[7] P. Y. Simard, D. Steinkraus, and J. C. Platt, Best practices for convolutional neural networks applied to visual document analysis. in null. IEEE, 2003.
[8] X. Glorot, Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. AISTATS, 2010.
[9] Alex Krizhevsky, Ilya Sutskever, Geoffrey E.Hinton. ImageNet Classification with Deep Convolutional Neural Networks.
[10] G.E.Hinton, N.Srivastava, A.Krizhevsky, I.Sutskever, and R.R.Salakhutdinov. Improving neural networks by preventing coadaptation of feature detectors. arXiv:1207.0580, 2012.
[11] Nair, V. and Hinton. Rectified linear units improve restricted Boltzmann machines. In L. Bottou and M. Littman, editors, Proceedings of the Twenty-seventh International Conference on Machine Learning (ICML 2010).
[12] Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks. European Conference on Computer Vision, 2013.
[13] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, Going Deeper with Convolutions, Arxiv Link: http://arxiv.org/abs/1409.4842.
[14] K. Simonyan and A. Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition.
[15] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition. 2015, computer vision and pattern recognition.
[16] Lin, Min, Qiang Chen, and Shuicheng Yan. Network in network. arXiv preprint arXiv:1312.4400
[17] Zeiler M D, Krishnan D, Taylor G W, et al. Deconvolutional networks. Computer Vision and Pattern Recognition, 2010.
[18] Stephane Mallat. Understanding deep convolutional networks. 2016, Philosophical Transactions of the Royal Society A.
[19] Aravindh Mahendran, Andrea Vedaldi. Understanding Deep Image Representations by Inverting Them. CVPR 2015.
[20] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. 2014.
[21] Ross Girshick. Fast R-CNN. 2015, international conference on computer vision.
[22] Anelia Angelova, Alex Krizhevsky, Vincent Vanhoucke, Abhijit Ogale, Dave Ferguson. Real-Time Pedestrian Detection With Deep Network Cascades.
[23] Haoxiang Li, Zhe Lin, Xiaohui Shen, Jonathan Brandt, Gang Hua. A convolutional neural network cascade for face detection. 2015, computer vision and pattern recognition
[24] Lichao Huang, Yi Yang, Yafeng Deng, Yinan Yu. DenseBox: Unifying Landmark Localization with End to End Object Detection. 2015, arXiv: Computer Vision and Pattern Recognition
[25] Shuo Yang, Ping Luo, Chen Change Loy, Xiaoou Tang. Faceness-Net: Face Detection through Deep Facial Part Responses.
[26] Yi Sun, Xiaogang Wang, Xiaoou Tang. Deep Convolutional Network Cascade for Facial Point Detection. 2013, computer vision and pattern recognition.
[27] Kobchaisawat T, Chalidabhongse T H. Thai text localization in natural scene images using Convolutional Neural Network. Asia-Pacific Signal and Information Processing Association, 2014 Annual Summit and Conference (APSIPA). IEEE, 2014: 1-7.
[28] Guo Q, Lei J, Tu D, et al. Reading numbers in natural scene images with convolutional neural networks. Security, Pattern Analysis, and Cybernetics (SPAC), 2014 International Conference on. IEEE, 2014: 48-53.
[29] Xu H, Su F. A robust hierarchical detection method for scene text based on convolutional neural networks. Multimedia and Expo (ICME), 2015 IEEE International Conference on. IEEE, 2015: 1-6.
[30] Cire?an D C, Meier U, Gambardella L M, et al. Convolutional neural network committees for handwritten character classification. Document Analysis and Recognition (ICDAR), 2011 International Conference on. IEEE, 2011: 1135-1139.
[31] Long J, Shelhamer E, Darrell T, et al. Fully convolutional networks for semantic segmentation. Computer Vision and Pattern Recognition, 2015.
[32] I. Sutskever, J. Martens, G. Dahl, and G. Hinton. On the Importance of Initialization and Momentum in Deep Learning. Proceedings of the 30th International Conference on Machine Learning, 2013.
[33] Hyeonwoo Noh, Seunghoon Hong, Bohyung Han. Learning Deconvolution Network for Semantic Segmentation. 2015, international conference on computer vision.
[34] L.-C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L.Yuille. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs. 2016.
[35] Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla. SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation.
[36] R. Girshick, J. Donahue, T. Darrell, J. Malik. Region-Based Convolutional Networks for Accurate Object Detection and Segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, May. 2015.
[37] Wei Shen, Xinggang Wang, Yan Wang, Xiang Bai, Zhijiang Zhang. DeepContour: A deep convolutional feature learned by positive-sharing loss for contour detection. 2015 computer vision and pattern recognition.
[38] Saining Xie, Zhuowen Tu. Holistically-Nested Edge Detection. 2015. international conference on computer vision.
[39] Gedas Bertasius, Jianbo Shi, Lorenzo Torresani. DeepEdge: A multi-scale bifurcated deep network for top-down contour detection. 2015, computer vision and pattern recognition
[40] Gatys L A, Ecker A S, Bethge M. Image Style Transfer Using Convolutional Neural Networks. CVPR 2016.
[41] David Eigen, Christian Puhrsch, Rob Fergus. Depth Map Prediction from a Single Image using a Multi-Scale Deep Network. 2014, neural information processing systems.
[42] David Eigen, Rob Fergus. Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-scale Convolutional Architecture. 2015, international conference on computer vision.
[43] Naiyan Wang, Dityan Yeung. Learning a Deep Compact Image Representation for Visual Tracking. 2013, neural information processing systems.
[44] Naiyan Wang, Siyi Li, Abhinav Gupta, Dityan Yeung. Transferring Rich Feature Hierarchies for Robust Visual Tracking. 2015, arXiv: Computer Vision and Pattern Recognition.
[45] Hyeonseob Nam, Bohyung Han. Learning Multi-domain Convolutional Neural Networks for Visual Tracking. 2016, comp
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4758.html
摘要:深度神經網絡所代表的人工智能技術被認為是這一次技術變革的基石之一。導語深度神經網絡目前是許多人工智能應用的基礎。深度神經網絡概述根據應用情況不同,深度神經網絡的形態和大小也各異。 深度神經網絡(DNN)所代表的人工智能技術被認為是這一次技術變革的基石(之一)。近日,由 IEEE Fellow Joel Emer 領導的一個團隊發布了一篇題為《深度神經網絡的有效處理:教程和調研(Efficie...
摘要:但是其仍然存在一些問題,而新提出的解決了式歸一化對依賴的影響。上面三節分別介紹了的問題,以及的工作方式,本節將介紹的原因。作者基于此,提出了組歸一化的方式,且效果表明,顯著優于等。 前言Face book AI research(FAIR)吳育昕-何愷明聯合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度學習里程碑式的工作B...
閱讀 3099·2021-08-03 14:05
閱讀 2144·2019-08-29 15:35
閱讀 683·2019-08-29 13:30
閱讀 3172·2019-08-29 13:20
閱讀 2534·2019-08-23 18:15
閱讀 1802·2019-08-23 14:57
閱讀 2219·2019-08-23 13:57
閱讀 1315·2019-08-23 12:10