車牌識別
概述
基于深度學習的車牌識別,,其中,,車輛檢測網絡直接使用YOLO偵測,。而后,才是使用網絡偵測車牌與識別車牌號,。
車牌的偵測網絡,,采用的是resnet18,網絡輸出檢測邊框的仿射變換矩陣,,可檢測任意形狀的四邊形,。
車牌號序列模型,采用Resnet18+transformer模型,,直接輸出車牌號序列,。
數據集上,車牌檢測使用CCPD 2019數據集,,在訓練檢測模型的時候,,會使用程序生成虛假的車牌,覆蓋于數據集圖片上,,來加強檢測的能力,。
車牌號的序列識別,直接使用程序生成的車牌圖片訓練,,并佐以適當的圖像增強手段。模型的訓練直接采用端到端的訓練方式,,輸入圖片,,直接輸出車牌號序列,損失采用CTCLoss,。
一,、網絡模型
1、車牌的偵測網絡模型:
網絡代碼定義如下:
該網絡,相當于直接對圖片劃分cell,,即在16X16的格子中,,偵測車牌,輸出的為該車牌邊框的反射變換矩陣,。
2,、車牌號的序列識別網絡:
車牌號序列識別的主干網絡:采用的是ResNet18+transformer,其中有ResNet18完成對圖片的編碼工作,,再由transformer解碼為對應的字符,。
網絡代碼定義如下:
其中的Block類的代碼如下:
位置編碼的代碼如下:
Block類使用的自注意力代碼如下:
二、數據加載
1,、車牌號的數據加載
同過程序生成一組車牌號:
再通過數據增強,,
主要包括:
三、訓練
分別訓練即可
其中,,偵測網絡的損失計算,,如下:
偵測網絡輸出的反射變換矩陣,但對車牌位置的標簽給的是四個角點的位置,,所以需要響應轉換后,,做損失。其中,,該cell是否有目標,,使用CrossEntropyLoss,而對車牌位置損失,,采用的則是L1Loss,。
四、推理
1,、偵測網絡的推理
按照一般偵測網絡,,推理即可。只是,,多了一步將反射變換矩陣轉換為邊框位置的計算,。
另外,在YOLO偵測到得測量圖片傳入該級進行車牌檢測的時候,,會做一步操作,。代碼見下,將車輛檢測框的圖片扣出,,然后resize到長寬均為16的整數倍,。
2、序列檢測網絡的推理
對網絡輸出的序列,,進行去重操作即可,,如間隔標識符為“*”時:
更多信息可以來這里獲取==>>電子技術應用-AET<<