傳統車牌識別
傳統的車牌識別需要先檢測出車牌,檢測出車牌後通過“像素映射”或者“聯通區查找”的方法分割出單個的文字,然後單獨識別每個文字。傳統的車牌識別不僅繁瑣,而且切割文字的效果也很難令人滿意。因此,能不能繞開字符分割的問題,直接識別車牌中的字符呢?當然可以的。有兩種方法:
- crnn+ctc
- 卷積only
crnn+ctc是自然場景下ocr比較通用的方法,用來識別車牌當然可以的,但是難免有點殺雞用牛刀了。因爲車牌本身是比較特殊的,車牌號碼的數量也是基本固定的。
有了這個設想,今天做了簡單的嘗試,效果很好,因此開源出來和大家交流。源碼已上傳至github:
車牌識別, 如果對你有幫助,給個star鼓勵下,謝謝!
以下是該項目的簡單介紹。
數據集
這個項目中,使用了自動生成訓練和識別的車牌,因此,你需要尋找車牌數據集,不需要做任何數據處理,就能輕鬆愉快的完成車牌識別的訓練與預測。
隨機生成的車牌示例:
一般的車牌檢測模型應該都能檢測到這個水準,因此這個這牌是比較接近真實情況下的車牌的。
模型
使用
第一步:生成訓練和測試數據集
cd generateCarPlate
python3 genCarPlate.py
第二步:訓練
cd pytorch_model
python3 train.py 30 0.0001
30是在訓練集訓練的次數,)0.0001是學習速率
第三步:測試
python3 test.py
將會輸出準確率,我訓練的car_plate_javer.pt模型能達到98.2的準確率(由於訓練和測試數據集都是隨機生成的,因此可能不同人測試有差異)。
這個準確率不算高,由於我的筆記本算力有限,沒能進一步訓練更大、更好的模型,不過我想,這個項目已足以證明不分割直接識別車牌的可行性