簡單車牌識別-Mask_RCNN定位車牌+手寫方法分割字符+CNN單個字符識別python
準備用於車牌定位的數據集,要收集250張車輛圖片,200張用於訓練,50張用於測試,而後在這些圖片上標註出車牌區域。這裏有圖片https://gitee.com/easypr/EasyPR/tree/master/resources/image/general_test 。標註工具使用VGG Image Annotator (VIA),就是一個網頁程序,能夠導入圖片,使用多邊形標註,標註好了之後,導出json。我已經標註好的數據集能夠從這裏下載https://github.com/airxiechao/simple-car-plate-recognition/blob/master/dataset/carplate.zip ,用7zip解壓。 git
準備用於字符識別的數據集,包含分隔好的單個車牌漢子、字母和數字。這裏有https://gitee.com/easypr/EasyPR/blob/master/resources/train/ann.7z 。github
這篇文章https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46 講了如何用Mask-RCNN識別圖片中的氣球,仿照其方法。在https://github.com/matterport/Mask_RCNN/releases 下載預先用COCO數據集訓練好的模型mask_rcnn_coco.h5,按照文章的方法編寫carplate.py用於載入車輛圖片數據和訓練,用inspect_data.ipynb瀏覽標註數據。執行python carplate.py train --dataset=../dataset/carplate --weights=coco 進行訓練,訓練完後,在logs文件夾中找到最後一輪的h5模型文件,好比mask_rcnn_carplate_0030.h5,複製出來。用inspect_model.ipynd查看模型訓練的效果。這部分代碼在https://github.com/airxiechao/simple-car-plate-recognition/tree/master/Mask_RCNN 下載。 json
仿照keras的mnist_cnn例子https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py 訓練,將訓練好的模型導出爲char_cnn.h5。這部分代碼在https://github.com/airxiechao/simple-car-plate-recognition/blob/master/char_cnn/char_cnn.ipynb 下載。工具
把車牌區域轉換成灰度圖像,利用邊緣特徵分割出區域,再篩選出字符區域。字符分割代碼是https://github.com/airxiechao/simple-car-plate-recognition/blob/master/character_segmentation.ipynb 。 測試
代碼在https://github.com/airxiechao/simple-car-plate-recognition/blob/master/inference.ipynb 。blog