天天看點

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

這學期的人工神經網絡課程已經進行完了第三章内容,關于經典網絡重要的BP(誤差反向傳播網絡)是所有學習人工神經網絡最先接觸到的一個實用網絡。它的原理相對比較簡單,在很多平台中都非常容易實作。

學習神經網絡的基本原理之後,更重要的是能夠通過一些應用場合來應用它,使他能夠幫助自己解決一些實際的工程問題。

近期購買到的 LC100-A[1] 電感電容測量子產品,用于測量一些實驗中實驗對象的電感、電容值随着其他一些實體變量(工作電壓、距離、溫度等)所産生變化規律。為了便于實驗,需要能夠将LC100-A測量數值自動記錄。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

<<< 左右滑動見更多 >>>

在開始的方式就是直接使用攝像頭擷取液晶顯示資料,然後使用字元識别軟體來完成其中數字的識别。

測試一下CNOCR識别效果。它對于螢幕截圖中的文字識别效果還不錯:

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 螢幕截取的一段文字

  • 識别時間:1.98。* 識别結果:

[['●', '更', '新', '了', '訓', '練', '代', '碼', ',', '使', '用', 'm', 'x', 'n', 'e', 't', '的', 'r', 'e', 'c', 'o', 'r', 'd', 'i', 'o', '首', '先', '把', '數', '據', '轉', '換', '成', '二', '進', '制', '格', '式', ',', '提', '升', '後', '續', '的'], ['訓', '練', '效', '率', '。', '訓', '練', '時', '支', '持', '對', '圖', '片', '做', '實', '時', '數', '據', '增', '強', '。', '也', '加', '入', '了', '更', '多', '可', '傳', '入', '的', '參', '數', '。'], ['●', '允', '許', '訓', '練', '集', '中', '的', '文', '字', '數', '量', '不', '同', ',', '目', '前', '是', '中', '文', '1', '0', '個', '字', ',', '英', '文', '2', '0', '個', '字', '母', '。'], ['。', '提', '供', '了', '更', '多', '的', '模', '型', '選', '擇', ',', '允', '許', '大', '家', '按', '需', '訓', '練', '多', '種', '不', '同', '大', '小', '的', '識', '别', '模', '型', '。'], ['●', ' ', '内', '置', '了', '各', '種', '訓', '練', '好', '的', '模', '型', ',', '最', '小', '的', '模', '型', '隻', '有', '之', '前', '模', '型', '的', '1', '/', '5', '大', '小', '。', '所', '有', '模', '型', '都', '可', '免', '費'], ['使', '用', '。']]

那麼對于前面液晶螢幕識别效果呢:

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 隻是數字部分

識别結果: [['.', '。', '與', 'F', '早', 'H']]

好像驢唇不對馬嘴。

這主要原因還是原來網絡沒有針對上述液晶實作數字進行訓練過。由于液晶顯示圖檔品質非常好,實際上隻需要最簡單的BP網絡就可以達到很好的效果。

下面給出在MATLAB中建構網絡并進行實驗的過程。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

使用神經網絡解決問題,一個重要的環節就是進行訓練資料的準備。通過對采集到的一些圖檔中的數字進行提取并手工标注,來完成對網絡的訓練。

1.數字分割

下面是桌面攝像頭捕捉到的測量圖檔,通過簡單的圖檔灰階投影,比較友善将顯示數字所在圖檔中的位置定出。為了簡單起見,也可以固定攝像頭與LCD相對位置,這樣手工定标出結果字元位置也可以适用于後面測量結果。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 液晶數字顯示以及數字部分

這個問題簡單之處在于所有字元都是等寬,而且對比度非常好,簡單的分離就可以将所有的字元單獨分離出來。由于攝像頭位置固定,是以簡單分割之後的字元之後少量的上下左右平移,沒有旋轉。對于圖檔位置、尺寸就不再進行歸一化。這些差異最後有神經網絡來彌補。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 分割出的數字

液晶顯示字元的圖檔對比度很好。但就是有一個問題,在攝像頭拍攝的時候,經常會遇到字元變化過程,這就會使得圖檔中字元呈現兩個字元疊加的情況。下面是一些示例:

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 數字變化過程的圖檔

這些過程,說實在的,即使人工識别也會無法分辨。

後面通過人工輸入标注了2000多個樣本。

2.圖檔二值化

對于分割的圖檔進行二值化,可以消除環境光對于圖檔亮度的影響。在一定程度上,也可以消除液晶字元在變化時所引起的模糊。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

<<< 左右滑動見更多 >>>

上面所有的字元的尺寸是23乘以38點陣。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

1.建構網絡和訓練

簡單的實驗,就用簡單的方法。對于前面所得到的字元,不再人工定義它們的特征。僅僅将原來的彩色圖檔變換成灰階圖像,然後排列成23×38=874維向量。然後增加一層中間隐層便組成了最簡單的分類網絡。

net = patternnet(11)
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 構造一個單隐層神經網絡

将前面人工标注的樣本一半用于訓練,全部樣本用于測試。下面給出了測試的結果。

plotconfusion(xx, net(yy))
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 訓練結果

2.訓練結果與分析

整體的錯誤率大約為:ERR= 2.99%。

下面是識别正确的字元。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

▲ 識别正确的字元

下面給出了部分識别錯誤字元的情況。基本上都是一些拍攝到液晶字元在變化過程中的重疊字元情況。這些情況本身在人工标注的時候就存在模糊。

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

<<< 左右滑動見更多 >>>

3.網絡結構與錯誤率

下面給出了網絡的隐層節點個數與識别錯誤樣本個數之間的關系。可以看到當中間隐層節點大于5之後,識别性能就不再有明顯的變化了。

隐層節點個數 2 3 4 5 6 7 8 9 10 11 錯誤數量 1810 656 216 77 69 66 65 72 58 68

bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料
bp神經網絡數字識别matlab_簡單的BP網絡識别液晶中的數字實驗1.數字分割2.圖檔二值化1.建構網絡和訓練2.訓練結果與分析3.網絡結構與錯誤率參考資料

<<< 左右滑動見更多 >>>

使用神經網絡解決問題,不是尋找最強大的網絡,而是需要最合适的網絡。

通過上面的測試結果來看,簡單的單隐層網絡便可以很好的滿足液晶顯示數字識别。那麼對于那些由于數字跳動所引起的錯誤該怎麼處理呢?

這個問題如果僅僅依靠增加訓練樣本和改進網絡結構是很難進行徹底解決,規避這個錯誤可以通過對連續識别結果進行比對來解決。對顯示數字進行連續快速采集5幀圖像,其中液晶跳動往往隻發生在其中一幀,或者兩幀。那麼對于五個圖像識别出的數字進行對比,找到相同次數最多的數字作為輸出結果。

參考資料

[1]

LC100-A: https://zhuoqing.blog.csdn.net/article/details/108997475