色呦色呦色精品,99cao,午夜特级毛片,一道本视频在线观看,久久九九八八色偷偷,国产高清www免费视频

三瑞動態

當前位置:三瑞首頁 > 資訊中心 > 三瑞動態

深度學習—應用于機器視覺領域的卷積神經網絡(CNN)簡介

點擊:1914 日期:2018-04-11 選擇字號:
深度學習—應用于機器視覺領域的卷積神經網絡(CNN)簡介
背景介紹:  

深度學習是近幾年的熱門研究話題。深度學習受到神經學的啟示,模擬人腦的認知與表達過程,通過低層信號到高層特征的函數映射,來建立學習數據內部隱含關系的邏輯層次模型。深度學習相比于一般的淺層模型的機器學習方法具有多隱層結構,對大數據具有更好的擬合性。

 

傳統的圖像處理僅是單張或為數不多的數字圖像的處理,而在今天信息爆炸的時代,對圖像的處理更多地涉及到視頻(圖像流)的分析,每一副圖像可能有數十萬個像素點,而一段多幀視頻若有成百上千幅圖像構成,其數據量足以媲美其他工業的"大數據"。傳統的圖像物體分類與檢測算法及策略難以滿足圖像視頻大數據在處理效率、性能和智能化等方面所提出的要求 。深度學習通過模擬類似人腦的層次結構建立從低級信號到高層語義的映射,以實現數據的分級特征表達,具有強大的視覺信息處理能力,因而, 在機器視覺領域,深度學習的代表--卷積神經網絡(Convolutional Neural Network, CNN)得以廣泛應用。 



20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用于局部敏感和方向選擇的神經元時發現其獨特的網絡結構可以有效地降低反饋神經網絡的復雜性,繼而提出了卷積神經網絡(CNN) 。現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由于該網絡避免了對圖像的復雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。實質上,CNN就是通過模仿細胞視覺信息的處理過程而構建的多層Hubel-Wiesel結構 。 

CNN和普通的神經網絡具有許多相似之處,它們都是模仿人類神經的結構,由具有可學習的權重和偏置常數的神經元組成。每一個神經元可以接收輸入信號,經過運算后輸出每一個分類的分數。但是,CNN的輸入一般是圖像,卷積網絡通過一系列方法,成功將數據量龐大的圖像識別問題不斷降維,最終使其能夠被訓練。CNN利用該特點,把神經元設計成具有三個維度:width, height, depth。


傳統神經網絡示意圖


卷積神經網絡示意圖

那么,一個卷積神經網絡由很多層組成,輸入和輸出均是三維的。有些層有參數,有些層則不需要參數。



卷積神經網絡通常包括以下幾種層:


?卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成,每個卷積單元的參數都是通過反向傳播算法優化得到的。卷積運算的目的是提取輸入的不同特征,第一層卷積層可能只能提取一些低級的特征如邊緣、線條和角等層級,更多層的網絡能從低級特征中迭代提取更復雜的特征。

?線性整流層(Rectified Linear Units layer, ReLU layer),這一層神經的活性化函數(Activation function)使用線性整流(Rectified Linear Units, ReLU)f(x)=max(0,x)。
?池化層(Pooling layer),通常在卷積層之后會得到維度很大的特征,將特征切成幾個區域,取其最大值或平均值,得到新的、維度較小的特征。

?全連接層( Fully-Connected layer), 把所有局部特征結合變成全局特征,用來計算最后每一類的得分。


卷積層

卷積層的作用是通過對Hubel-Wiesel簡單細胞的模擬檢測其前驅層特征的局部連接。它是通過對輸入圖像進行多次卷積操作,提取出不同的特征圖;然后把當前層的每個單元與前驅層的特征圖局部塊通過權值建立連接并進行局部加權和非線性變換。數學上,由特征映射實現的過濾操作被稱為離散卷積,CNN也因此而得名。卷積層有以下幾個關鍵點:

1.局部感知(Local Connectivity)

普通神經網絡的輸入層和隱含層為 "全連接(Full Connected)"的設計,這若沿用到卷積神經網絡中,從計算的角度來講,相對較小的圖像從整幅圖像中計算特征是可行的。但是,如果是更大存儲量的圖像,要通過這種全聯通網絡的這種方法來學習整幅圖像上的特征,計算將變得非常耗時。舉例來看,若設計104個輸入單元,假設要學習的特征有100個,那么就有106個參數需要去學習。與28x28的小塊圖像相比較,96x96的圖像使用前向輸送或者后向傳導的計算方式,計算過程也會慢102倍。

卷積層的本質便是解決此計算量爆炸的問題。它的方法是通過限制隱含單元和輸入單元間的連接而實現:每個隱含單元僅僅只能連接輸入單元的一部分,而非全部。每個隱含單元連接的輸入區域大小稱為該神經元的感受野(receptive field)。由于卷積層的神經元是三維結構,具有深度,卷積層的參數包含一系列的過濾器,每個過濾器訓練一個深度。對于輸出單元的不同深度處,與輸入圖像連接的區域是相同的,但是參數(過濾器)不同。


雖然每個輸出單元只連接輸入的一部分,但是值的計算方法是權重和輸入的點積加上偏置,這與普通神經網絡是一樣的,如下圖所示。


單個神經元運算圖示

2. 空間排列

 如前文所述,一個輸出單元的大小可由三個量控制,即:深度(depth), 步幅(stride),和補零(zero-padding)。
深度(depth) : 又名:depth column。顧名思義,它控制輸出單元的深度,也就是filter的個數,表示連接同一塊區域的神經元個數。
步幅(stride):它控制在同一深度的相鄰兩個隱含單元,與他們相連接的輸入區域的距離。若步幅很小(比如 stride = 1),相鄰隱含單元的輸入區域的重疊部分會很多; 步幅很大則重疊區域變少。
補零(zero-padding) : 通過在輸入單元周圍補零來改變輸入單元整體大小,從而控制輸出單元的空間大小。
可以用以下公式計算一個維度(寬或高)內一個輸出單元里可以有幾個隱藏單元:

(W-F+2P)/S+1注釋:W : 輸入單元的大小(寬或高);F : 感受野(receptive field);S : 步幅(stride);P : 補零(zero-padding)的數量;K : 深度,輸出單元的深度。如果計算結果不是一個整數,則說明現有參數不能正好適合輸入,步幅(stride)設置的不合適,或者需要補零。    

3. 參數共享

 應用參數共享,可以大量減少參數數量。

參數共享基于一個假設:如果圖像中的一點(x1, y1)包含的特征很重要,那么它應該和圖像中的另一點(x2, y2)一樣重要。換種說法,我們把同一深度的平面叫做深度切片(depth slice),那么同一個切片應該共享同一組權重和偏置。我們仍然可以使用梯度下降的方法來學習這些權值,只需要對原始算法做一些小的改動。這里共享權值的梯度是所有共享參數的梯度的總和。

為什么要權重共享呢?一方面,重復單元能夠對特征進行識別,而不考慮它在可視域中的位置。另一方面,權值共享使得我們能更有效的進行特征抽取,因為它極大的減少了需要學習的自由變量的個數。通過控制模型的規模,卷積網絡對視覺問題可以具有很好的泛化能力。

 

池化層

池化即層下采樣的過程,目的是為了減少特征圖。

池化本身的具體操作是:首先,通過粗粒化各特征的位置,避免相對位置導致所形成主題的微小變化,以此實現主題的可靠檢測。其次,每個典型的池化單元通常計算一個或幾個特征圖內局部塊的最大值;而相鄰單元則通過行或列平移形成的塊來獲取輸入數據,從而降低特征表達維度,并對平移和扭曲等較小形變具有魯棒性。
 池化操作對每個深度切片獨立,規模一般為 2*2,相對于卷積層進行卷積運算,池化層進行的運算一般有以下幾種: 
 ※最大池化(Max Pooling)。取4個點的最大值。這是最常用的池化方法。 
 ※均值池化(Mean Pooling)。取4個點的均值。 
 ※高斯池化。借鑒高斯模糊的方法。不常用。 
 ※可訓練池化。訓練函數,接受4個點為輸入,出入1個點。不常用。
 下圖為規模為2*2, 步幅為2,對輸入的每個深度切片進行下采樣的示意圖。每個最大池化操作對四個數進行,如下圖所示。


2*2規模池化示意圖

池化操作將保存深度大小不變。如果池化層的輸入單元大小不是2的整數倍,則一般采取邊緣補零的方式補成2的倍數,然后再進行池化操作。


全連接層

根據實際需要可以串聯多個卷積、非線性變換和池化階段,通常再疊加一個全連接層(即分類器) 來構建深度網絡,然后通過BP算法等有監督地訓練所有過濾器中的權值參數。


 全連接層和卷積層可以互相轉換:對于一個卷積層,只要把權重變成一個維度巨大的矩陣,其中大部分元為0,對應局部感知的區塊有值,并且由權重共享,配置好一些元表示的權值,令之相同,即可轉變成全連接層。而對于一個全連接層也可以操作變為卷積層。例如,一個K=4096 的全連接層,輸入層大小為 7?7?512,它可以等效為一個 F=7, P=0, S=1, K=4096 的卷積層。

常見的CNN架構是:多個"卷積層+整流層"后面加一個池化層,重復這樣的結構模式多次,達到滿意的效果后,最后用全連接層控制輸出。
     

目前,已有許多學者構建了一系列知名的卷積神經網絡 :
 LeNet. The first successful applications of Convolutional Networks were developed by Yann LeCun in 1990's. Of these, the best known is the LeNet architecture that was used to read zip codes, digits, etc.

AlexNet. The first work that popularized Convolutional Networks in Computer Vision was the AlexNet, developed by Alex Krizhevsky, Ilya Sutskever and Geoff Hinton. The AlexNet was submitted to the ImageNet ILSVRC challenge in 2012 and significantly outperformed the second runner-up (top 5 error of 16% compared to runner-up with 26% error). The Network had a similar architecture basic as LeNet, but was deeper, bigger, and featured Convolutional Layers stacked on top of each other (previously it was common to only have a single CONV layer immediately followed by a POOL layer).
ZF Net. The ILSVRC 2013 winner was a Convolutional Network from Matthew Zeiler and Rob Fergus. It became known as the ZFNet (short for Zeiler & Fergus Net). It was an improvement on AlexNet by tweaking the architecture hyperparameters, in particular by expanding the size of the middle convolutional layers.


GoogLeNet. The ILSVRC 2014 winner was a Convolutional Network from Szegedy et al. from Google. Its main contribution was the development of an Inception Module that dramatically reduced the number of parameters in the network (4M, compared to AlexNet with 60M). Additionally, this paper uses Average Pooling instead of Fully Connected layers at the top of the ConvNet, eliminating a large amount of parameters that do not seem to matter much.
VGGNet. The runner-up in ILSVRC 2014 was the network from Karen Simonyan and Andrew Zisserman that became known as the VGGNet. Its main contribution was in showing that the depth of the network is a critical component for good performance. Their final best network contains 16 CONV/FC layers and, appealingly, features an extremely homogeneous architecture that only performs 3x3 convolutions and 2x2 pooling from the beginning to the end. It was later found that despite its slightly weaker classification performance, the VGG ConvNet features outperform those of GoogLeNet in multiple transfer learning tasks. Hence, the VGG network is currently the most preferred choice in the community when extracting CNN features from images. In particular, their pretrained model is available for plug and play use in Caffe. A downside of the VGGNet is that it is more expensive to evaluate and uses a lot more memory and parameters (140M).

ResNet. Residual Network developed by Kaiming He et al. was the winner of ILSVRC 2015. It features an interesting architecture with special skip connections and features heavy use of batch normalization. The architecture is also missing fully connected layers at the end of the network. The reader is also referred to Kaiming's presentation (video, slides), and some recent experiments that reproduce these networks in Torch.

應用案例

本部分介紹深度學習在圖像處理與機器視覺領域的研究和應用實例。

1.圖像物體分類

 物體分類是機器視覺領域的基本問題,是更高級、更復雜的視覺問題的基礎。物體的分類一般是通過一些特征對圖像進行全局描述,利用分類器操作來判定圖像中是否存在某類物體。對于圖像數據,深度學習具有優秀的建模和特征提取能力,已經在物體分類的理論分析和實際應用中廣泛應用。
例如,Karpathy 等基于100萬部含有487個類別的YouTube視頻進行大規模的視頻分類研究,通過多分辨率的小凹結構來加速CNN訓練,使所提出的基于時空網絡的模型相比傳統上基于特征的模型在分類精度上具有明顯提升。 
Sanchez-Riera 等基 于 CNN 模 型 訓 練 出 一 系 列 手 勢 作 為樣本來粗略預測手勢的姿勢和方向,并把此方法定義為一 個非嚴格模型算法;因為,即使其違反了手勢平滑動作的時間 假設,此方法仍然可以獲得手勢的各項參數。 

2.圖像物體檢測

物體的檢測更注重局部特征,它有別于分類問題,是回答一張圖像中在什么位置存在一個什么物體,所以除特征表達外,物體結構是物體檢測區別于物體分類的最明顯特點 。 
Yi Sun等基于CNN設計出一個DeepID人臉識別系統,并通過增加驗證和識別信號在人臉識別挑戰LFW (Labeled Faces in the Wild) 數據庫上取得了99.15%的識別率,首次超越同樣數據集上人97.52%的識別率,最終通過模型的進一步完善,使DeepID系統擁有非常好的遮擋魯棒性,這一成果也展示了深度卷積神經網絡在機器視覺領域的強大應用潛力。