汽车车牌识别系统实现(四)--字符识别+代码实现
字符識別
一、字符識別算法的實現
車牌字符識別是車牌識別中的最后一步,也是決定車牌識別成功與否的關鍵步驟。字符識別是對經過車牌定位、車牌糾正和車牌字符劃分后得到的各個車牌字符進行識別的過程。字符識別利用BP反饋神經網絡對字符進行識別。BP反饋神經網絡是一種基于誤差反向傳播的神經網絡,它不同于傳統的神經網絡,傳統的神經網絡采用數值微分法計算梯度以使損失函數達到最小值,這種做法雖然原理簡單且容易實現,但計算較費時,而BP神經網絡采用誤差反向傳播的方法,該方法較數值微分法更為高效。所以本文采取比數值微分法高效的BP反饋神經網絡對劃分出的各個車牌字符進行識別。
1.1 神經網絡組成部分介紹
1.1.1 激活函數
常用的激活函數有ReLU和Softmax函數,本文使用ReLU函數作為隱藏層的激活函數,使用ReLU函數作為激活函數的優點主要有兩個,第一是ReLU函數計算簡單,可以提升模型的運算速度;第二是反向傳播時要計算偏導數,如果傳遞過來的值很大,Sigmoid函數的梯度會變得非常小,使得模型收斂的速度會非常慢,而使用ReLU函數可以有效的解決模型收斂速度慢的問題。使用Softmax函數作為輸出層的激活函數。ReLU激活函數的數學表達式如式(4-1),圖像如圖4-1所示。
1.1.2 損失函數
神經網絡的學習中所用的性能評判標準被稱為損失函數,本文使用交叉熵誤差損失函數作為衡量神經網絡性能的指標。交叉熵誤差的計算公式如式(4-2)。
1.1.3 神經網絡梯度
1.2 神經網絡原理與訓練算法流程
1.2.1 相關符號說明
1.2.2 前向傳播過程
1.2.3 反向傳播過程
1.2.4 訓練算法流程
神經網絡的訓練步驟如下:
- 1.初始化神經網絡的權重參數、偏置參數、學習步長等。
- 2.讀取訓練數據,隨機抽取訓練樣本以及對應的訓練標簽。
- 3.計算隱藏層和輸出層的輸出
- 4.計算損失函數值,并判斷是否達到最大迭代次數
- 5.計算損失函數關于權重參數和偏置參數的偏導數
- 6.更新權重參數和偏置參數
二、車牌識別算法實現
2.1 開發工具及數據集說明
2.2 字符識別網絡實現
在車牌識別算法進行之前,需要先訓練好具體的字符識別網絡,這是車牌識別算法的前提。本文訓練了兩個識別網絡分別用來識別漢字、字母與數字。在深度學習中,一般將數據分為訓練數據和測試數據兩部分來進行神經網絡的學習和測試等。劃分為監督數據和測試數據的目的是能夠正確評價神經網絡模型的泛化能力,泛化能力是指處理未被觀察過的數據,也就是不包含在監督數據范圍內的數據。根據車牌特點,車牌中包含7個字符,分別是第1個字符是各省級行政區的簡稱,共34個;第2個字符是城市代號,由A-Z組成,為了不與1和0混淆,其中不包括字母I和O,共24個;第3-7個字符是由數字和字母共同組成,共10個數字和24個英文大寫字母,共34個。如圖5-2所示,整個識別網絡分為兩個識別網絡,漢字識別網絡用來識別各省級行政區的簡稱,字母數字識別網絡用來識別車牌上剩余的大寫英文字母和阿拉伯數字。
2.2.1 漢字識別網絡
2.2.2 字母數字識別網絡
可以看到損失函數的值逐漸減少,識別網絡的訓練結果也很理想,這是BP神經網絡正在從大量數據中正確學習的表現。
2.3 識別算法流程及實驗結果
2.3.1 識別算法流程及實驗結果
2.3.2 實驗分析
三、不足
汽車車牌識別系統的實現是我大學本科的畢業論文,當時還沒接觸神經網絡這方面的知識,所以當時很傻的用了BP神經網絡來進行圖片的識別,結果當然是非常不理想了,其中有錯誤的地方請各位及時批評指正。CNN更加適用圖像識別,研究生期間研究方向就是深度學習,所以在之后的三年時間內我會陸續更新深度學習的相關知識。雖然最后的實驗結果不太理想,但是應付畢業論文應該夠用了!在這即將畢業的學弟學妹畢業順利!!
四、代碼實現
代碼實現我直接把當時做的項目上傳,有需要的各位可以參考一下。不需要積分下載,一個關注就是我及時更新最大的動力!
總結
以上是生活随笔為你收集整理的汽车车牌识别系统实现(四)--字符识别+代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年上半年金融科技动向
- 下一篇: 1个字,绝! -- CNN中十大令人拍案