博客專欄

        EEPW首頁 > 博客 > 使用深度學習進行自動車牌檢測和識別

        使用深度學習進行自動車牌檢測和識別

        發布人:AI科技大本營 時間:2021-10-18 來源:工程師 發布文章

        以下文章來源于小白學視覺 ,作者小白

        介紹

        在現代世界的不同方面,信息技術的大規模集成導致了將車輛視為信息系統中的概念資源。由于沒有任何數據,自主信息系統就沒有任何意義,因此需要在現實和信息系統之間改革車輛信息。這可以通過人工代理或特殊智能設備實現,這些設備將允許在真實環境中通過車輛牌照識別車輛。在智能設備中,,提到了車輛牌照檢測和識別系統。車輛牌照檢測和識別系統用于檢測車牌,然后識別車牌,即從圖像中提取文本,所有這一切都歸功于使用定位算法的計算模塊,車牌分割和字符識別。車牌檢測和讀取是一種智能系統,由于其在以下幾個領域的潛在應用,因此具有相當大的潛力:

        1.指揮部隊:該系統用于檢測被盜和搜查的車輛,將檢測到的車牌與報告車輛的車牌進行比較。

        2.道路安全:該系統用于檢測超過一定速度的車牌,將車牌讀取系統與道路雷達耦合。

        3.停車管理:車輛進出口的管理。

        step1:車牌檢測

        為了檢測許可證,我們將使用基于卷積神經網絡的Yolo(You Only Look One)深度學習對象檢測體系結構。該體系結構是由Joseph Redmon、Ali Farhadi、Ross Girshick和Santosh Divvala于2015年推出的第一個版本,以及更高版本2和3。

        論文鏈接:

        Yolo v1:https://arxiv.org/pdf/1506.02640.pdf

        Yolo v2:https://arxiv.org/pdf/1612.08242.pdf

        Yolo v3:https://arxiv.org/pdf/1804.02767.pdf

        Yolo是一個經過端到端訓練的單一網絡,用于執行預測對象邊界框和對象類的回歸任務。這個網絡速度非常快,它以每秒45幀的速度實時處理圖像。一個較小的網絡版本Fast YOLO每秒處理155幀,速度驚人。

        實現YOLO V3:

        首先,我們準備了一個由700張包含突尼斯車牌的汽車圖像組成的數據集,對于每張圖像,我們使用一個名為LabelImg的桌面應用程序創建一個xml文件(之后更改為文本文件,其中包含與Darknet配置文件輸入兼容的坐標。Darknet:project用于重新培訓YOLO預訓練模型)。

        # First download Darknet project
        $ git clone https://github.com/pjreddie/darknet.git
        # in "darknet/Makefile" put affect 1 to OpenCV, CUDNN and GPU if you # want to train with you GPU then time thos two commands
        $ cd darknet
        $ make
        # Load convert.py to change labels (xml files) into the appropriate # format that darknet understand and past it under darknet/
           https://github.com/GuiltyNeuron/ANPR
        # Unzip the dataset
        $ unzip dataset.zip
        # Create two folders, one for the images and the other for labels
        $ mkdir darknet/images
        $ mkdir darknet/labels
        # Convert labels format and create files with location of images
        # for the test and the training
        $ python convert.py
        # Create a folder under darknet/ that will contain your data
        $ mkdir darknet/custom
        # Move files train.txt and test.txt that contains data path to
        # custom folder
        $ mv train.txt custom/
        $ mv test.txt custom/
        # Create file to put licence plate class name "LP"
        $ touch darknet/custom/classes.names
        $ echo LP > classes.names
        # Create Backup folder to save weights
        $ mkdir custom/weights
        # Create a file contains information about data and cfg 
        # files locations
        $ touch darknet/custom/darknet.data
        # in darknet/custom/darknet.data file paste those informations
        classes = 1
        train  = custom/train.txt
        valid  = custom/test.txt
        names = custom/classes.names
        backup = custom/weights/
        # Copy and paste yolo config file in "darknet/custom"
        $ cp darknet/cfg/yolov3.cfg darknet/custom
        # Open yolov3.cfg and change :
        # " filters=(classes + 5)*3" just the ones before "Yolo"
        # in our case classes=1, so filters=18
        # change classes=... to classes=1
        # Download pretrained model
        $ wget https://pjreddie.com/media/files/darknet53.conv.74 -O ~/darknet/darknet53.conv.74
        # Let's train our model !!!!!!!!!!!!!!!!!!!!!
        $ ./darknet detector train custom/darknet.data custom/yolov3.cfg darknet53.conv.74

        完成訓練后,要從圖像中檢測發光板,請從darknet/custom/weights中選擇最新的模型,并將其路徑或名稱放入object_detection_yolo.py文件中,我們還將使用yolov3.cfg文件,僅在該文件中,在訓練前放入,以便我們可以先刪除訓練,然后運行:

        python object-detection_yolo.py --image= image.jpg

        運行結果:

        1.jpg

        Step2:車牌檢測

        現在我們必須分段我們的車牌號,輸入是板的圖像,我們必須能夠提取單字符圖像。這一步驟的結果作為識別階段的輸入非常重要。在自動讀取車牌的系統中。分割是車牌自動識別最重要的過程之一,因為任何其他步驟都是基于分割的。如果分割失敗,識別階段將不正確。為確保正確分割,必須執行初步處理。

        2.png

        像素投影直方圖包括查找每個字符的上下限、左下限和右上限,我們操作水平投影以查找字符的頂部和底部位置,一組直方圖的值是沿水平方向上特定線的白色像素的總和。當所有的值沿水平方向的所有直線進行計算,得到水平投影直方圖。然后將直方圖的平均值用作閾值,以確定上限和下限。直方圖分段大于閾值的中心區域記錄為由上限和下限分隔的區域。然后,我們以同樣的方式計算垂直投影直方圖,但通過按圖像的列更改行,使每個字符具有兩個限制(左和右)。

        3.png

        從車牌中提取數字的另一種方法是使用開/關形態學來制作某種連接區域,然后使用連接組件算法來提取連接區域。

        Step3:車牌識別

        識別階段是自動車牌閱讀器系統開發的最后一步。因此,它關閉圖像采集過程中經過的所有過程,然后是板的位置,直到分割。識別必須從分割階段結束時獲得的圖像中提取字符。用于此識別的學習模型必須能夠讀取圖像并渲染相應的字符。

        為了最大限度地利用可用于學習的數據,我們在應用車牌分割之前使用的相同圖像處理步驟后,通過在正方形中調整每個字符的大小來單獨切割每個字符。結果,我們獲得了一組由11個類組成的數據,對于每個類,我們有30-40張28X28像素尺寸的PNG格式的圖像;從0到9的數字和阿拉伯語單詞(突尼斯)。

        然后,我們在科學論文的基礎上對多層感知器(MLP)和分類器K近鄰(KNN)進行了比較研究。結果我們發現:如果使用MLP分類器時隱層神經元的數量也增加,并且如果使用KNN時最近鄰數也增加,則性能會提高。在這里,調整k-NN分類器性能的能力非常有限。但是,可調整的隱藏層數量和可調整的MLP連接權重為細化決策區域提供了更大的機會。因此,我們將在此階段選擇多層感知器。

        4.png

        本文代碼Github鏈接:

        https://github.com/GuiltyNeuron/ANPR

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        稱重傳感器相關文章:稱重傳感器原理


        關鍵詞: 深度學習

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 略阳县| 屯留县| 那坡县| 深圳市| 济宁市| 崇信县| 临沭县| 灌阳县| 大英县| 靖远县| 都兰县| 藁城市| 曲松县| 贺州市| 安吉县| 汾阳市| 隆子县| 西华县| 宁河县| 新乡县| 张北县| 大新县| 集安市| 蕉岭县| 黄陵县| 抚州市| 堆龙德庆县| 玉林市| 扎鲁特旗| 河池市| 买车| 双辽市| 当雄县| 宁夏| 昭苏县| 双城市| 武夷山市| 平邑县| 天等县| 沂南县| 虹口区|