国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于交通路標分類的多列深度神經網絡(MCDNN)

2019-11-11 01:08:12
字體:
來源:轉載
供稿:網友
 http://blog.csdn.net/u010529217/article/details/38701703

基于交通路標分類的多列深度神經網絡(MCDNN)

標簽: networkdnnmcdnn2014-08-20 09:34 2288人閱讀 評論(1) 收藏 舉報

目錄(?)[+]

原文標題:Multi-Column Deep Neural Network for Traffic Sign Classification(2012)

作者:Dan Ciresan, Ueli Meier, Jonathan Masci and Jurgen Schmidhuber

這片文章描述的是參加 The German Traffic Sign Recognition Benchmark (http://benchmark.ini.rub.de/?section=gtsrb&subsection=news)比賽的一個算法,最終贏得了該比賽的第一名。

本文是對該文章主要內容的部分翻譯,并補充了一些個人觀點,如有問題或者疑問,歡迎指出。

摘要:

在Traffic Sign Classification中,文中方法能達到99.46%的準確率,是唯一 一個優于人類識別(human recognition)率的算法。每個單獨的DNN都無需人工提取特征,而是 learned in a supervised way。最后將多種 trained on differently PReprocessed data 的DNNs 結合(combine)到一個MCDNN,進一步提高了識別性能和泛化能力。

1.簡介:

目前最成功的 分層物體識別系統(hierarchical object recognition systems)都是針對輸入圖像提取局部特征,然后用濾波器卷積圖像塊。Filter responses are then repeatedly pooled and re-filtered, 由此產生了一個深度前饋網絡結構,其輸出的特征向量用于最后的分類。

應用到原始圖像塊的無監督學習方法,一般是產生局部濾波器(localized filters),比如:off -center-on-surround filters, orientationsensitive bar detectors, Gabor filters.在使用中,這些濾波器的權值是固定的(fixed)。

相比之下,卷及神經網絡(CNNs)的濾波器的權重是隨機初始化的,使用BP算法有監督學習。

單個DNN—MCDNN的基本構建模塊,是一個多層的神經網絡結構,結構中 convolutional層和max-pooling層交替出現。

Meier (2011)指出,多個不同DNN的結合無需優化,只需 averaging 輸出結果,在unseen test set 中也有不錯的效果,具有很好的泛化能力。

實驗的快速實現依賴于GPUs, fully online (i.e., weight updates after each image)。訓練一個大型的DNN僅需要幾天的時間,而不是幾個月。

The German traffic sign recognition benchmark (GTSRB),是一個43類的分類問題,包括兩個階段,初步評估階段和現場總結賽階段。

初步評估階段,我們使用了一組多層感知器(MLP:Multi-Layer Perceptrons) trained on provided features 和一個DNN trained on raw pixel intensities,即MLP+DNN。

本文描述的是現場總結賽階段所使用的方法,MCDNN。

2.MCDNN

作為MCDNN的基本構建模塊,DNN交替使用converlution層和max-pooling層。

2.1DNN

一個DNN包括一系列的converlution層和max-pooling層,每一層只連接前一層。它是一種常見的、多層的特征提取器,將輸入圖像的原始像素密度映射為一個特征向量,然后使用2~3層的全連接層對特征向量進行分類。所有可調參數通過最小化訓練集的誤分類誤差(through minimization of the misclassification error)得到調整和優化。

2.1.1卷積層

圖1a:DNN結構

每個卷積層執行一次2D的卷積,執行對象為:層所有輸入圖像 和 一個size為的濾波器。

層的所有輸入圖像的最終激活值(resulting activations)是 層所有卷積響應的和,可以通過相面的一個非線性激活函數得到:

公式中各參數的意義:

n  :層數

Y :圖片,大小為

:濾波器,大小為 ,連接輸入圖片 i 和 輸出圖片 j 

:輸出圖片 j 的偏置

*: valid 2D convolution

對于輸入圖片:size為,   濾波器:size為,   

輸出圖像的size為:

  。

注意:公式1遍歷層所有的輸入圖像。

2.1.2 Max-pooling層

文章中提到:DNN和CNN最大的區別是:CNN使用的是sub-sampling層,而DNN使用的是max-pooling層。兩者均可以認為是 池化 的過程。

采樣層:是對上一層map的一個采樣處理,這里的采樣方式是對上一層map的相鄰小區域進行聚合統計,區域大小為scale*scale,

有些實現是取scale*scale小區域的最大值,即max-pooling。

有些實現是采用scale*scale小區域的均值,即sub-sampling。

注意,卷積的計算窗口是可以重疊的。本文采用的計算窗口沒有重疊。

2.1.3分類層

卷積層卷積核的大小和max-pooling層矩形區域的大小 的設定一般需滿足:最后一層卷積層的輸出maps正好降維到1個pixel per map,或者,使用一個全連接層將最后一層卷積層的所有輸出 combine into 一個1維的特征向量。在分類任務中,最后一層一般是全連接層,每一個輸出節點代表一類。

本文中,最后一層使用softmax 激勵函數,從而可以把每個節點的輸出看作是每一類出現的概率。

softmax function:歸一化一組值到0~1之間,總和為1。換句話說,是一種歸一化操作,是的輸出在(0,1)之間。

2.1.4訓練單個DNN

圖1b:訓練單個DNN:在訓練開始前,給定的數據集先進行預處理(P:preprocessed),

然后訓練過程中,每個epoch前,all original or preprocessed images隨機失真(D:distorted)。

注意:預處理過程不是隨機的,訓練前,整個數據集都需要進行統一的或特定的預處理。(3.1會詳細介紹)

         失真處理是隨機的(此處的‘隨機’是指處理方式是隨機的),在訓練過程中,失真處理每一張預處理過的圖片

輸入圖像經過預處理,并在訓練過程中不斷被扭曲。圖像預處理不是隨機的,圖像扭曲是隨機的,應用在每一個預處理圖像的訓練過程中,使用隨機的有界值進行位移,旋轉和尺度變換。這些值在特定的范圍均勻分布,圖像位移在正負10%的范圍,尺度變換在0.9—1.1,旋轉范圍在正負5度。最終固定尺寸圖像是通過扭曲輸入圖像雙線性插值得到。

圖像扭曲是為了用很多自由參數訓練DNN時避免過擬合,大大改善識別性能。

all DNN training:在線(online)梯度下降,退火學習率(學習率逐漸降低)。

2.1.5 MCDNN的形成

圖1c:MCDNN 結構:The input image is preprocessed by n different preprocessors P0 — Pn-1,

and an arbitrary number of columns is trained on each preprocessed input. 

The final predictions are obtained by averaging individual predictions of each DNN.

平均多個不同的DNN列的輸出激勵,組建一個MCDNN。對于一個給定的輸入模型,對所有列的預測值平均化。訓練前,所有列的權重隨機初始化。

Various columns can be trained on the same inputs, or on inputs preprocessed in different ways。(謹記:相同不相同是針對‘P’而言)

事實上,使用相同的數據集訓練的模型的誤差具有高度的相關性。為了避免這個問題,我們的MCDNN結合了不同歸一化(產生多種不同的數據集)數據訓練的多種DNN。一個關鍵的問題是:多個模型的輸出結果在combination時,需不需要進行優化(即:是對DNNs的結果直接average,還是加個weight)。

訓練中常見的問題有兩個:1)需要附加的訓練集(本文通過 'D' 過程解決);2)無法保證的是:訓練后的MCDNN對未知的訓練集也能產生較好的結果。(即:泛化能力有待商榷)。

對于手寫數字,Meier文章中指出,對于測試集,僅僅對多個DNN的輸出結果進行平均化,要比對多個DNN進行線性組合(linear combination)(權重通過驗證集得到優化)具有更好的泛化能力。因此,本文中直接averaging the outputs of each DNN。

這里的average怎么理解呢?

假如有兩個DNNs,每個DNN 的輸出節點有4個,(即4類)。

假設:第一個DNN 輸出結果為:0.3,0.1,0.5,0.1;第二個DNN輸出結果為:0.5,0.2,0.1,0.2,所以MCDNN的average輸出為:0.4,0.15,0.3,0.15。所以最終結果說明,輸入圖像屬于第一類。(這里的概率均為假設,純屬為計算方便,一般實際的概率輸出差別會比較大)

(純屬個人觀點,如有不同意見,歡迎共享)

3.實驗

使用的系統:1個Core i7-950 (3.33GHz), 24 GB DDR3, 4個 graphics cards of type GTX 580.

training set 中,只有未變形的、原始的或者預處理過的圖像才被用于驗證過程,當驗證誤差為0(一般需要15~30 epochs)時,結束訓練過程。

初始權重(卷積核的權重)從范圍為 [-0.05,0.05] 的均勻隨機分布中獲取。每個神經元的激勵函數為雙曲正切函數。

3.1 數據預處理

每一幅原始彩色圖片內包含一個交通圖標,圖標周圍有10%的邊界(border)。原始彩色圖片大小從15*15到250*250不等,且一般不為正方形。在圖片中,交通圖標一般不居中,邊界框(bounding box)是注釋(annotations)的一部分。

訓練集一共39209幅圖像,測試集為12630幅圖像。

preprocessing:

'切割'(crop)所有的圖像,并且只處理邊界框(bounding box)內的圖片。MCDNN要求所有的訓練圖像必須為正方形。本文中resize所有的圖像大小為 48*48 pixels。Resizing forces them to have square bounding boxes。對比度歸一化。文中使用了4種對比度歸一化方法:Image Adjustment (Imadjust),Histogram Equalization (Histeq),Adaptive Histogram Equalization (Adapthisteq),Contrast Normalization (Conorm)。(圖像調整,直方圖均衡化,自適應直方圖均衡化,對比度歸一化)

Image Adjustment (Imadjust):通過映射像素強度到新的值,增加圖像的對比度,比如將1%的數據滲透到低強度和高強度。

Histogram Equalization (Histeq):直方圖均衡化,轉換像素強度增強對比度;輸出圖像直方圖大致均衡統一。 “中心思想”是把原始圖像的灰度直方圖從比較集中的某個灰度區間變成在全部灰度范圍內的均勻分布。利用圖像直方圖對對比度進行調整,這種方法通常用來增加許多圖像的局部對比度,尤其是當圖像的有用數據的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分布。這樣就可以用于增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的亮度來實現這種功能。

Adaptive Histogram Equalization (Adapthisteq):AHE算法通過計算圖像的局部直方圖,然后重新分布亮度來來改變圖像對比度。該算法更適合于改進圖像的局部對比度以及獲得更多的圖像細節。圖像分為8個6*6不重疊的區域,每一塊直方圖大致均衡統一來增強圖像對比度。

注意:HE是全局的,AHE是局部的。

Contrast Normalization (Conorm):通過高斯差分濾波增強圖像邊緣。本文中使用的濾波器的size為 5*5 pixels。

需要注意的是:除了Contrast Normalization (Conorm),其余的3種歸一化方法不是在RGB-color space中實現的,而是在一個圖像強度作為它的一個成分的彩色空間里。因此,先將圖像從 RGB space轉換到 Lab-space,進行歸一化處理,然后再將歸一化后的圖像轉換到 RGB space。

四種不同的歸一化方法的效果如圖2所示,包括了原始圖像和歸一化圖像的像素密度直方圖。

圖2:Histogram of pixel intensities for image 11917 from the test set of the preliminaryphase of the competition, before and after normalization, as well as an additional selectionof 5 traffic signs before and after normalization

3.2實驗結果

初始實驗證明深度網絡要比淺層網絡的工作效果好。

本文中使用的單個DNN為9層,具體信息如 table1:

相同的結構在figure 3也有所體現,figure 3 表示的是所有層的 the activations 和 the filters (已經訓練的DNN)。

figure 3:DNN architecture from Table 1 together with all the activations and the learnedfi lters. Only a subset of all the maps and fi lters are shown, the output layer is not drawnto scale and weights of fully connected layers are not displayed. For better contrast, thefi lters are individually normalized.

第一層的濾波器用彩色表示,需注意的是,該彩色濾波器原則上包括三個獨立的濾波器,分別連接到輸入圖片的 red channel、green channel 和 blue channel。

The input layer has three maps of 48x48 pixels for each color channel ; the output layer consists of 43 neurons, one per class.

總體結構共有1.5million個參數,一半的參數來源于最后兩層的全連接層。

使用4個GPUs,訓練25列的MCDNN,需要37hours。訓練以后,單個的GPU每秒能夠處理87幅圖像。

文章中也使用了 15*15的濾波器代替7*7的濾波器,They are randomly initialized, and learn to respond to blobs(斑點), edges and other shapes in the input images。第一卷積層的濾波器如 figure4:

figure4:The learned filters of the first convolutional layer of a DNN. 

The layer has 100 maps each connected to the three color channels of the input image for a total of 3x100 filters of size 15x15. 

Every displayed filter is the superposition(疊加) of the 3 filters that are connected to the red, green and blue channel of the input image respectively.

 For better contrast, the filters are individually normalized.

總體:

訓練了25個DNN,每5個DNN對應一種 P(包括原始圖像和4種歸一化方法),即:每個P連接5列DNN。實驗結果如表2所示:

table 2中,trial 橫向代表5種P,縱向的數字(1,2,3,4,5)代表DNN的‘序號’(每個P有5個DNNs)。

實驗結果中,Average DNN recognition rate 為 98.52%,而MCDNNrecognition rate為99.46%,如果說MCDNN的最終輸出結果為所有DNN的average,為什么兩者不相等呢?為什么MCDNN的結果優于Average DNN呢?

請教過別人后理解是,每個DNN都有自己的識別率即準確率,該準確率是通過訓練多幅圖像所得。而MCDNN 只需要一幅圖像,average所有DNN的輸出結果即可。table顯示的是每個DNN的最優識別率,而MCDNN得到的是 所有DNN平均值 的最優識別率(可能某個DNN 沒有達到自己的最好狀態,出現分類錯誤的情況),兩者沒有直接的關系。(感覺有些矛盾,對不對!)因為MCDNN是多個DNN的結合,總體上還是會比單個DNN 的結果要好一些。

figure 5 顯示了所有錯誤,還有真實值、第一次預測、第二冊預測。68個錯誤中,超過80%的錯誤都在第二次預測中得到正確結果,Erroneously predicted class probabilities tend to be very low—here the MCDNN is quite unsure about its classifications。不過,一般來說,MCDNN的預測概率值要么接近于1,要么接近于0,這一點是毋庸置疑的。

figure 5:The 68 errors of the MCDNN, with correct label (left) and first(middle) andsecond best (right) predictions. Best seen in color.

Rejecting only 1% percent of all images (con dence below 0.51) results in an even lower error rate of 0.24%. To reach an error rate of 0.01% (a single misclassi cation), only 6.67% of the images have to be rejected (con fidence below 0.94).

 4.總結:

MCDNN 要比人工識別率和單個DNN的結果好。

參考:http://tech.ddvip.com/2014-08/1408423169212655.html

         http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html

http://wenku.baidu.com/linkurl=P5Ah1iKgfTtmH9DDi83CkmQHWvDOdnP6dOQrSVlDrWT_HZ04Gd7wIAsF2lF_AXyJ59TBPUnkBtQsF1FAfZ4bAtZbz4AJc35eQ_nDprr5Cxy


上一篇:CMake&yacc&lex

下一篇:6174

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武胜县| 巍山| 马边| 兰州市| 依安县| 枣阳市| 武冈市| 乡宁县| 衢州市| 潮州市| 和平县| 海阳市| 桦甸市| 长乐市| 莒南县| 安溪县| 琼结县| 新密市| 潼关县| 漳浦县| 卓尼县| 德化县| 霞浦县| 上高县| 上饶市| 上虞市| 涡阳县| 易门县| 德江县| 巨鹿县| 缙云县| 太仓市| 乌兰浩特市| 民乐县| 白河县| 南昌县| 安乡县| 永登县| 沈阳市| 集贤县| 喀喇|