天天看點

基于MATLAB BP神經網絡的水果識别

基于MATLAB BP神經網絡的水果識别

一、課題實作的功能

1 原理分析

由于數字圖像是唯一的特征辨別符号,在經營管理中具有不可替代的作用,是以數字圖像識别系統應具有很高的識别正确率,對環境光照條件、拍攝位置等因素的影響應有較大的容阈,并且要求滿足實時性要求。

區域搜尋與分割

圖像分割

歸一化

圖像特征提取

圖像識别

圖像輸入

預處理

圖2-1 水果特征識别系統原理圖

該系統是計算機圖像處理與特征識别技術在智能化經營管理系統中的應用,它主要由水果圖像的采集和預處理、水果區域的定位和提取、圖像的分割和識别等幾個部分組成,如圖1所示。其基本工作過程如下:

(1)圖像的采集;

(2)數字圖像的圖像通視訊卡輸入計算機進行預處理,圖像預處理包括圖像轉換、圖像增強、濾波和水準矯正等;

(3)由檢索子產品進行搜尋與檢測,定位并分割出包含水果特征的矩形區域;

(4)對水果特征進行二值化并分割出單個圖像,經歸一化後輸入單個圖像識别系統進行識别。

二、 總體設計方案

數字圖像識别整個系統主要是由圖像定位和特征識别兩部分組成,其中圖像定位又可以分為圖像預處理及邊緣提取子產品和水果的定位及分割子產品;特征識别可以分為特征分割與特征提取和單個特征識别兩個子產品。

為了用于水果的分割和水果特征的識别,原始圖像應具有适當的亮度,較大的對比度和清晰可辯的水果圖像。但由于該系統的攝像部分工作于開放的戶外環境,加之數字圖像的整潔度、自然光照條件、拍攝時錄影機與水果的距離和角度等因素的影響,水果圖像可能出現模糊、歪斜和缺損等嚴重缺陷,是以需要對原始圖像進行識别前的預處理。

水果的定位和分割是水果識别系統的關鍵技術之一,其主要目的是在經圖像預處理後的原始灰階圖像中确定水果的具體位置,并将包含水果特征的一塊子圖像從整個圖像中分割出來,供特征識别子系統識别之用,分割的準确與否直接關系到整個水果特征識别系統的識别率。

由于拍攝時的光照條件、水果的整潔程度的影響,和錄影機的焦距調整、鏡頭的光學畸變所産生的噪聲都會不同程度地造成水果特征的邊界模糊、細節不清、筆劃斷開或粗細不均,加上水果上的污斑等缺陷,緻使特征提取困難,進而影響特征識别的準确性。是以,需要對特征在識别之前再進行一次針對性的處理。

三 具體技術路線

(1)圖像預處理及邊緣提取

圖像預處理技術可最大限度提高圖像正确識别率,這些圖像預處理包括圖像灰階化、平滑、傾斜校正、灰階修正等。

輸入水果圖像

灰階校正

平滑處理

提取邊緣

圖3-1 預處理及邊緣提取流程圖

1、圖像的采集與轉換

考慮到現有水果的特征與背景的顔色搭配一般有多種,利用不同的色彩通道就可以将區域與背景明顯地區分出來,因為藍色(255,0,0)與白色(255,255,255)在通道中并無區分,而在G、R 通道或是灰階圖像中并無此便利。原圖、灰階圖及其直方圖見圖2與圖3。對于将彩色圖像轉換成灰階圖像時,圖像灰階值可由下面的公式計算:

(3-1)

(3-2)

2、邊緣提取

邊緣是指圖像局部亮度變化顯著的部分,是圖像風、紋理特征提取和形狀特征提取等圖像分析的重要基礎。是以在此我們要對圖像進行邊緣檢測。圖象增強處理對圖象的可辨認度的改善和簡化後續的水果特征定位和分割的難度都是很有必要的。增強圖象對比度度的方法有:灰階線性變換、圖象平滑處理等。

(1)灰階校正

由于水果圖像在拍攝時受到種種條件的限制和幹擾,圖像的灰階值往往與實際景物不完全比對,這将直接影響到圖像的後續處理。如果造成這種影響的原因主要是由于被攝物體的遠近不同,使得圖像中央區域和邊緣區域的灰階失衡,或是由于攝像頭在掃描時各點的靈敏度有較大的差異而産生圖像灰階失真,或是由于曝光不足而使得圖像的灰階變化範圍很窄。這時就可以采用灰階校正的方法來處理,增強灰階的變化範圍、豐富灰階層次,以達到增強圖像的對比度和分辨率。

(3)平滑處理

對于受噪聲幹擾嚴重的圖像,由于噪聲點多在頻域中映射為高頻分量,是以可以在通過低

通濾波器來濾除噪聲,但實際中為了簡化算法,也可以直接在空域中用求鄰域平均值的方法來削弱噪聲的影響,這種方法稱為圖象平滑處理。

圖 3-5 鄰域及其鄰域模闆
基于MATLAB BP神經網絡的水果識别

3 圖像的定位與分割

圖像定位對圖像識别系統來說至關重要,目前已經提出了很多圖像定位的方法,這些方法都具有一個共同的出發點,即通過水果區域的特征來判斷水果。根據不同的實作方法,大緻可以把現有的定位方法分為直接法和間接法兩類。

1)直接法。利用圖像的尺寸、特征間距、特征特征等紋理特征定位圖像。利用圖像部分垂直高頻豐富的特點先利用小波提取圖像的垂直高頻資訊,然後利用數學形态學方法對小波分解後的細節圖像進行一系列的形态運算,進一步消除無用的資訊和噪聲,以定位圖像。

2)間接法。主要是指利用神經網絡法或者遺傳算法定位圖像的方法。利用遺傳算法對圖像進行優化搜尋,結合區域特征矢量構造的适應度函數,最終尋找到圖像的水果區域的最佳定位參量。

對圖像進行腐蝕

去除雜質

通過形态學方法進行水果主要部分的定位

裁剪水果區域

對分割出的水果做進一步處理

圖3-8 水果定位于分割流程圖

(1)水果區域的定位

水果圖像經過了以上的處理後,水果區域已經十分明顯,而且其邊緣得到了勾勒和加強。此時可進一步确定水果在整幅圖像中的準确位置。這裡選用的是數學形态學的方法,其基本思想是用具有一定形态的機構元素去量度和提取圖像中的對應形狀以達到對圖像分析和識别的目的。數學形态學的應用可以簡化圖像資料,保持它們基本的形态特征,并除去不相幹的結構。在本程式中用到了膨脹和閉合這兩個基本運算,最後還用了bwareaopen來去除對象中不相幹的小對象。

(2)水果區域的分割

對圖像的分割可以有很多種方法,本程式是利用圖像的彩色資訊的彩色分割方法。根據圖像底色等有關的先驗知識,采用彩色像素點統計的方法分割出合理的圖像區域,确定圖像底色藍色RGB對應的各自灰階範圍,然後行方向統計在此顔色範圍内的像素點數量,設定合理的門檻值,确定圖像在行方向的合理區域。然後,在分割出的行區域内,統計列方向藍色像素點的數量,最終确定完整的圖像區域。

(3)圖像進一步處理

經過上述方法分割出來的圖像圖像中存在目标物體、背景還有噪聲,要想從圖像中直接提取出目标物體,最常用的方法就是設定一個門檻值T,用T将圖像的資料分成兩部分:大于T的像素群和小于T的像素群,即對圖像二值化。

4 特征的分割與歸一化

(1)特征分割

在汽車水果自動識别過程中,特征分割有承前啟後的作用。它在前期水果定位的基礎上進行特征的分割,然後再利用分割的結果進行特征識别。

基于MATLAB BP神經網絡的水果識别
圖 3-13 分割出來的5個特征圖像

(2)特征歸一化

一般分割出來的特征要進行進一步的處理,以滿足下一步特征識别的需要。但是對于圖像的識别,并不需要太多的處理就已經可以達到正确識别的目的。在此隻進行了歸一化處理,然後進行後期處理。

基于MATLAB BP神經網絡的水果識别
圖 3-14 歸一化處理後的七個特征圖像

5 特征的識别

目前,特征識别方法主要有基于模闆比對算法和基于人工神經網絡算法。基于模闆比對算法首先把待識别特征二值化并将其尺寸大小縮放為特征資料庫中模闆的大小,然後與所有的模闆進行比對,最後選最佳比對作為結果。由于這種比對算法穩定性較差、時間花費也較大,是以,在此基礎上提出了基于關鍵點的比對算法。此算法先對識别特征進行關鍵點提取,然後對關鍵點去噪,最後再确定特征的分類。這種比對算法隻利用了特征的關鍵點進行比對,是以,提高了識别速度又具有較高的識别率。基于人工神經網絡的算法主要有兩種:一種是先對待識别特征進行特征提取,然後用所獲得的特征來訓練神經網絡分類器;另一種方法是直接把待處理圖像輸入網絡,由網絡自動實作特征提取直至識别出結果。前一種方法識别結果與特征提取有關,而特征提取比較耗時,是以,特征提取是關鍵。後一種方法無須特征提取和模闆比對,随着相關技術的進步,這種方法更實用。

(1)神經網絡

人工神經網絡(ANNs)也稱為神經網絡或連接配接模型,是對人腦或自然神經網絡若幹基本特性的抽象和模拟。但是人工神經網絡是近現代才提出來的一種新型技術,是以還有一些缺點,不過它的優點卻是非常明顯的:①它可以充分逼近任意複雜的非線性關系。②所有定量或定性的資訊都等勢分布于網絡内的各神經元,故有很強的魯棒性和容錯性;采用并行分布的處理方法,使得快速地進行大量運算成為可能。③可學習和自适應不知道或不确定的系統。④能夠同時處理定量、定性知識。⑤具有聯想和存儲功能。⑥具有高速尋找優化解的能力。它能夠處理一些環境資訊十分複雜、背景不清晰、有磨損、殘缺等方面的問題的情況。

(2) BP神經網絡

BP神經網絡(Back Propagation Neural Net.work,簡稱BP神經網絡)即反向傳輸神經網絡。BP神經網絡可以應付各種資料和能夠模拟一種複雜的決定系統。BP神經網絡主要是通過一種模拟的方式對對象進行識别,它可以像人認識事物過程一樣,逐漸地認清事物進而去模拟實作它。

BP神經網絡由1024個輸入節點、20個隐層節點、6個輸出節點組成。每個節點的激活函數采用O.1函數,輸出節點的輸出值為0,1二值。訓練以後,節點權值儲存在配置檔案中。在MATLAB工具箱中已經有了BP神經識别的函數,這裡使用newlin函數adapt函數,使用這些函數需要輸入預期的待學目标的輸入範圍,指定一個延遲輸入信号和一個有延遲輸入信号以及學習速度的參數,這樣特征就能很好地在MATLAB中得到識别。

BP網絡結構:

基于BP算法的多層前饋型網絡将神經元按功能和順序的不同分為輸出層、中間層(隐層)、輸出層。輸入層各神經元負責接收來自外界的輸入資訊,并傳給中間各隐層神經元;隐層是神經網絡的内部資訊處理層,負責資訊變換。根據需要可設計為一層或多層;最後一個隐層将資訊傳遞給輸出層神經元經進一步處理後向外界輸出資訊處理結果。同層節點中沒有任何耦合,每一層節點的輸出隻影響下一層節點的輸出。網絡的學習過程由正向和反向傳播兩部分組成。反向傳播其節點單元特征通常為Sigmoid型{f(X)=1/[1+exp(一Bx)],B>0}。在網絡訓練階段用準備好的樣本資料依次通過輸入層、隐層和輸出層。比較輸出結果和期望值,若沒有達到要求的誤差程度或者訓練次數,即經過輸出層、隐層和輸入層,來調節權值,以便使網絡成為一定适應能力的模型。

用matlab 神經網絡工具箱,用BP神經網絡生成網絡函數,部分程式如下:net=newff(pr,[25 1],{'logsig' 'purelin'}, 'traingdx', 'learngdm');

net.trainParam.epochs=3000;

net.trainParam.goal=0.001;

net.trainParam.show=10;

net.trainParam.lr=0.05;

net=train(net,p,t)

即建立和訓練神經網絡。其中權值函數為“logsig”,學習函數為:“purelin”.運作後,可在matlab上得到:

LOADING......

ans =

LOAD OK.

TRAINGDX, Epoch 0/3000, MSE 18.0267/0.001, Gradient 19.9528/1e-006

TRAINGDX, Epoch 10/3000, MSE 6.55309/0.001, Gradient 1.92177/1e-006

TRAINGDX, Epoch 20/3000, MSE 5.08303/0.001, Gradient 1.59205/1e-006

TRAINGDX, Epoch 30/3000, MSE 3.32551/0.001, Gradient 1.35881/1e-006

TRAINGDX, Epoch 40/3000, MSE 1.70977/0.001, Gradient 0.830963/1e-006

TRAINGDX, Epoch 50/3000, MSE 0.808399/0.001, Gradient 0.588341/1e-006

TRAINGDX, Epoch 60/3000, MSE 0.255181/0.001, Gradient 0.301763/1e-006

TRAINGDX, Epoch 70/3000, MSE 0.0629529/0.001, Gradient 0.146848/1e-006

TRAINGDX, Epoch 80/3000, MSE 0.0175261/0.001, Gradient 0.0906425/1e-006

TRAINGDX, Epoch 90/3000, MSE 0.0146519/0.001, Gradient 0.364925/1e-006

TRAINGDX, Epoch 100/3000, MSE 0.0122441/0.001, Gradient 0.238192/1e-006

TRAINGDX, Epoch 110/3000, MSE 0.010538/0.001, Gradient 0.158065/1e-006

TRAINGDX, Epoch 120/3000, MSE 0.00900871/0.001, Gradient 0.0498804/1e-006

TRAINGDX, Epoch 130/3000, MSE 0.00778895/0.001, Gradient 0.0471643/1e-006

TRAINGDX, Epoch 140/3000, MSE 0.00642256/0.001, Gradient 0.0267898/1e-006

TRAINGDX, Epoch 150/3000, MSE 0.00506427/0.001, Gradient 0.0207391/1e-006

TRAINGDX, Epoch 160/3000, MSE 0.00378743/0.001, Gradient 0.0155848/1e-006

TRAINGDX, Epoch 170/3000, MSE 0.00259925/0.001, Gradient 0.012315/1e-006

TRAINGDX, Epoch 180/3000, MSE 0.00149217/0.001, Gradient 0.0137463/1e-006

TRAINGDX, Epoch 190/3000, MSE 0.00134022/0.001, Gradient 0.0518653/1e-006

TRAINGDX, Epoch 200/3000, MSE 0.00132563/0.001, Gradient 0.0549096/1e-006

TRAINGDX, Epoch 210/3000, MSE 0.00125472/0.001, Gradient 0.0293791/1e-006

TRAINGDX, Epoch 220/3000, MSE 0.00120414/0.001, Gradient 0.0082813/1e-006

TRAINGDX, Epoch 230/3000, MSE 0.00115466/0.001, Gradient 0.00760885/1e-006

TRAINGDX, Epoch 240/3000, MSE 0.00108049/0.001, Gradient 0.00798138/1e-006

TRAINGDX, Epoch 248/3000, MSE 0.000995008/0.001, Gradient 0.00708329/1e-006

TRAINGDX, Performance goal met.

即神經網絡訓練過程。誤差曲線即測試樣例經訓練後的實際輸出結果和期望輸出的內插補點情況。其變化如圖21,圖22。

基于MATLAB BP神經網絡的水果識别
基于MATLAB BP神經網絡的水果識别
圖 3-15 訓練過程中誤差曲線變化
基于MATLAB BP神經網絡的水果識别
基于MATLAB BP神經網絡的水果識别
圖 3-16 訓練結束時誤差曲線

可見,當神經網絡訓練完成後,其樣本得出的輸出結果和期望輸出結果完全相同,即誤差為零。

識别結果如下:

FileName:D:\test

a =

3

答案正确。

訓練後神經網絡以及權重結果資訊為:

net =

Neural Network object:

architecture:

numInputs: 1

numLayers: 2

biasConnect: [1; 1]

inputConnect: [1; 0]

layerConnect: [0 0; 1 0]

outputConnect: [0 1]

targetConnect: [0 1]

numOutputs: 1 (read-only)

numTargets: 1 (read-only)

numInputDelays: 0 (read-only)

numLayerDelays: 0 (read-only)

subobject structures:

inputs: {1x1 cell} of inputs

layers: {2x1 cell} of layers

outputs: {1x2 cell} containing 1 output

targets: {1x2 cell} containing 1 target

biases: {2x1 cell} containing 2 biases

inputWeights: {2x1 cell} containing 1 input weight

layerWeights: {2x2 cell} containing 1 layer weight

functions:

adaptFcn: 'trains'

initFcn: 'initlay'

performFcn: 'mse'

trainFcn: 'traingdx'

parameters:

adaptParam: .passes

initParam: (none)

performParam: (none)

trainParam: .epochs, .goal, .lr, .lr_dec,

.lr_inc, .max_fail, .max_perf_inc, .mc,

.min_grad, .show, .time

weight and bias values:

IW: {2x1 cell} containing 1 input weight matrix

LW: {2x2 cell} containing 1 layer weight matrix

b: {2x1 cell} containing 2 bias vectors

other:

userdata: (user stuff)

由此可見,程式可滿足期望要求。當然,也經常有識别錯誤的情況發生。對于識别錯誤情況的分析可知,主要原因:一是水果自身的污漬等影響了圖像的品質;二是水果特征的分割失敗導緻的識别錯誤;再就是部分特征的形狀相似性,比如,B 和8;A 和4 等特征識别結果可能發生混淆的情況。

總之,盡管目前水果特征的識别率還不理想,但是隻要在分割出的特征的大小、位置的歸一化,以及嘗試提取分類識别能力更好的特征值和設計分類器等環節上再完善,進一步提高識别率是完全可行的。

繼續閱讀