国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學(xué)習(xí)的Android 平臺車牌識別系統(tǒng)設(shè)計

2021-06-25 14:17:54曹海嘯夏慶鋒劉書銘張長嶼游云飛
軟件導(dǎo)刊 2021年6期
關(guān)鍵詞:車牌校正語義

闞 希,曹海嘯,夏慶鋒,劉書銘,張長嶼,游云飛

(1.南京信息工程大學(xué)濱江學(xué)院物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫 214105;2.南京信息工程大學(xué)自動化學(xué)院,江蘇 南京 210044;3.南京信息工程大學(xué)濱江學(xué)院自動化學(xué)院,江蘇無錫 214105)

0 引言

車牌作為車輛識別與管理的重要標(biāo)識,是智能交通系統(tǒng)相關(guān)領(lǐng)域研究熱點[1]。隨著我國機動車保有量高速增長及新能源汽車的日益普及,車輛有效識別與管理愈加復(fù)雜。在復(fù)雜自然場景中對車牌精確的識別可為城市交通、自動駕駛和城市管理等提供重要支撐。基于移動端的圖像車牌識別成為深度學(xué)習(xí)領(lǐng)域的熱點之一,隨著Android 移動端計算性能的大幅提升,面向復(fù)雜環(huán)境基于深度學(xué)習(xí)的車牌識別模型移植成為現(xiàn)實[2]。

車牌識別算法經(jīng)過數(shù)十年的研究發(fā)展,在學(xué)術(shù)界和工業(yè)界已形成成熟的體系[3],算法流程一般可分為車牌區(qū)域提取、字符分割與識別3 個主要步驟,但因為不同設(shè)備采集的圖像質(zhì)量差異較大,車牌識別算法各有側(cè)重。早期傳統(tǒng)方法主要依賴于人工特征提取,然后通過模式識別的方式完成車牌字符檢測,需從原始圖像中把感興趣的車牌圖像區(qū)域提取出來。傳統(tǒng)算法主要根據(jù)車牌顏色特征、邊緣特征、字符紋理特性等從背景圖像中提取出車牌區(qū)域,然后利用字符分割與匹配達到車牌識別的目的,該類方法在背景受環(huán)境影響小、有固定場景的地點使用廣泛,諸如單位卡口、公路收費站等。近年來,隨著車輛交通行業(yè)的蓬勃發(fā)展,車牌識別算法需在復(fù)雜環(huán)境背景干擾下也能準(zhǔn)確判識,基于形態(tài)與閾值的傳統(tǒng)方法陷入了瓶頸。但隨著計算機視覺的快速發(fā)展,使用機器學(xué)習(xí)方法進行車牌識別取得了很好的效果,主要有神經(jīng)網(wǎng)絡(luò)、支持向量機、Adaboost 分類器等方法[3-4]。

隨著智能交通技術(shù)的飛速發(fā)展,基于PC 機的車牌識別系統(tǒng)已不能滿足終端便攜式需求?;贏ndroid 平臺的智能手機具有便攜、快速、工作環(huán)境不受限等特點[5],成為車牌信息處理終端的重要載體。特別是智能手機計算能力的快速提升,使深度學(xué)習(xí)算法在Android 平臺上的移植成為現(xiàn)實[6]。本文設(shè)計的車牌識別系統(tǒng)結(jié)構(gòu)如圖1 所示,使用U-net 網(wǎng)絡(luò)進行車牌語義分割,對稱的編解碼器使高層特征圖與低層特征圖可進行有效拼接,高層特征圖從低層特征圖中獲得豐富的上下文信息與細節(jié)信息,可獲得精度更高的輸出,以解決移動端拍攝角度不同和復(fù)雜背景造成的車牌提取困難,通過OpenCV 對車牌區(qū)域圖像進行校正,最后利用共享Loss 的卷積神經(jīng)網(wǎng)絡(luò)進行字符判識,以提高識別準(zhǔn)確率。

Fig.1 System structure圖1 系統(tǒng)結(jié)構(gòu)

1 Android 端移植技術(shù)

1.1 OpenCV 圖像處理實現(xiàn)過程

OpenCV 是一個開源跨平臺計算機視覺庫,可運行在Linux、Windows、Mac OS 和Android 操作系統(tǒng)上,并提供多種語言接口[7],其最大優(yōu)勢在于包含很多免費的圖像處理函數(shù),幾乎覆蓋了圖像處理與機器視覺的通用算法[8]。系統(tǒng)開發(fā)環(huán)境為Android Studio v3.5 版本,OpenCV SDK 版本為3.4.11,具體配置方法如下。

(1)官網(wǎng)下載opencv-3.4.11-android-sdk,在android studio 中File >New 選擇Import modules 將下載的sdk/java項目導(dǎo)入項目。

(2)然后把opencv modules 添加到app modules 里,直接在app 目錄下build.gradle 文件里dependencies 大括號下添加依賴項:dependencies{implementation project(‘:openCVLibrary’)}。

(3)在app/src/main 目錄下創(chuàng)建jniLibs 目錄,然后把sdk/native/libs 下所有文件復(fù)制到j(luò)niLibs 目錄下,編譯和運行以完成庫的調(diào)用。

1.2 Tensorflow 機器學(xué)習(xí)實現(xiàn)過程

Tensorflow 是谷歌公司開發(fā)的開源機器學(xué)習(xí)架構(gòu)[9],軟件開發(fā)者使用該架構(gòu)可輕松構(gòu)建機器學(xué)習(xí)模型,省去繁瑣的底層數(shù)學(xué)推導(dǎo)過程,從而可快速完成算法編寫。Android端移植訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型需4 個步驟。

(1)本文使用Tensorflow 高級API Keras 進行網(wǎng)絡(luò)訓(xùn)練,所以首先需將模型xxx.h5 文件轉(zhuǎn)換為xxx.pb 文件。

(2)在Android Studio App 目錄下build.gradle 文件中添加Tensorflow-android依賴項:dependencies{implementation‘org.tensorflow:tensorflow-android:+’}。

(3)右擊項目>New>Folder>Asset Floder,在應(yīng)用程序目錄中創(chuàng)建一個資源文件夾,再將xxx.pb 模型文件添加到資源文件夾內(nèi)。

(4)在MainActivity(主活動)中初始化靜態(tài)變量和調(diào)用靜態(tài)方法:static{System.loadLibrary(“tensorflow_inference”);}。

2 圖像獲取模塊

圖像獲取主要是通過調(diào)用系統(tǒng)拍照功能完成,創(chuàng)建Button.setOnClickListener(new View.OnClickListener())拍照按鈕點擊監(jiān)聽事件,實現(xiàn)onClick()類,包括4 個步驟:①初始化Intent 啟動相機;②定義圖片存儲路徑;③Intent.putExtra()更改系統(tǒng)默認存儲路徑;④設(shè)置startActivityForResul(t)相機返回活動,最后實現(xiàn)onActivityResul(t)拍照跳轉(zhuǎn)界面,通過ImageView()讀取存儲路徑顯示圖片。

3 車牌識別模塊

3.1 U-net 網(wǎng)絡(luò)車牌語義分割

在自然場景下,Android 移動端由于拍攝場景不固定,所以拍攝的圖片受拍攝角度、光線、背景影響很大,造成車牌區(qū)域提取困難。本文使用基于深度學(xué)習(xí)的U-net 語義分割網(wǎng)絡(luò)。U 型網(wǎng)絡(luò)是一個經(jīng)典的全卷積網(wǎng)絡(luò)[10-11],面向像素級預(yù)測任務(wù),可保持原始圖像相同分辨率大小的預(yù)測圖,網(wǎng)絡(luò)可分為左右兩個部分,左半部分為壓縮通道,右半部分為擴展通道,又稱為上采樣和下采樣兩個部分,下采樣進行特征提取,下采樣過程中圖像通道數(shù)翻倍,并且圖像特征圖維度減少為之前的一半。本文采用修正線性單元ReLU 激活函數(shù),使神經(jīng)網(wǎng)絡(luò)適用于非線性模型,上采樣的作用是把特征圖尺寸還原成與輸入圖一致,以保持輸入與預(yù)測維度不變,每次經(jīng)過上采樣層后特征圖維度加倍,但是通道數(shù)減半,最終使圖像恢復(fù)成原尺寸。壓縮通道包含4 個收縮單元,每個單元包含兩個卷積模塊和1 個池化模塊,下采樣完成后再經(jīng)過兩個卷積模塊進行上采樣操作;擴展通道同樣有4 個擴張單元,每個單元包含一個上采樣模塊和兩個卷積模塊,最后一個擴張單元中包含上采樣層、兩個卷積模塊和一個1×1 大小的卷積模塊,跳躍連接增加了壓縮和擴展通道之間的通路,網(wǎng)絡(luò)總體結(jié)構(gòu)像字符U,所以稱為U 型網(wǎng)絡(luò),常用于醫(yī)學(xué)影像和交通標(biāo)志語義分割。本文網(wǎng)絡(luò)輸入圖像大小為512×512,網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,圖3 為自然場景下網(wǎng)絡(luò)車牌分割效果,可以看出網(wǎng)絡(luò)對車牌定位分割效果很好,可以應(yīng)對Android 移動端復(fù)雜背景干擾。

3.2 車牌校正

對于U-net[12]網(wǎng)絡(luò)分割后得到的車牌區(qū)域,可以看出很多區(qū)域由于拍攝角度的問題產(chǎn)生了形變,如果直接進行車牌字符識別,由于畸變對后續(xù)車牌字符識別造成很大干擾,所以需要對畸變的車牌進行校正[13-14]。如圖4(a)為分割后得到的車牌區(qū)域圖像,使用OpenCV 的cv2.findContours()函數(shù)獲得車牌區(qū)域,在使用cv2.boundingRec(t)函數(shù)獲取車牌外接最小矩陣,如圖4(b)所示;然后使用cv2.min-AreaRec(t)函數(shù)獲取外接矩陣的水平夾角θ°,將車牌區(qū)域順時針旋轉(zhuǎn)θ°至水平,如圖4(c)所示;最后根據(jù)車牌4 個頂點A、B、C、D 位置坐標(biāo)和其最小外接矩形A’、B’、C’、D’坐標(biāo),計算車牌四邊形4 個角點坐標(biāo),使用cv2.warpPerspective()投影變化函數(shù)完成畸變車牌的校正。車牌校正效果對比如圖5 所示,校正后的車牌圖像為卷積神經(jīng)網(wǎng)絡(luò)字符識別模型大小,即高80、寬240。

Fig.2 U-net neural network structure圖2 U-net 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

Fig.3 Semantic segmentation effects of license plate圖3 車牌語義分割效果

Fig.4 License plate area correction method圖4 車牌區(qū)域校正方法

Fig.5 License plate area correction effects圖5 車牌區(qū)域校正效果

3.3 卷積神經(jīng)網(wǎng)絡(luò)字符識別

在數(shù)字圖像處理領(lǐng)域,卷積是一種常見的運算。它可以用于圖像去噪、增強、邊緣檢測等,還可以用于圖像特征提取。卷積運算用卷積核矩陣從上到下、從左到右在圖像上滑動,將卷積和矩陣各元素與其在圖像上覆蓋的對應(yīng)位置上的元素相乘,然后求和,得到輸出值。二維卷積計算過程如圖6 所示。

Fig.6 Convolution calculation process圖6 卷積計算過程

卷積網(wǎng)絡(luò)[15]輸入通常為多通道平面結(jié)構(gòu),其大小為高×寬×通道數(shù),即輸入為多通道二維特征映射。卷積核是卷積神經(jīng)網(wǎng)絡(luò)模型主要參數(shù)之一,每個卷積層多個卷積核從左到右、從上到下依次卷積整個圖像,輸出多個表征圖像特征圖,隨著卷積層的增加可捕捉圖像更為復(fù)雜、抽象的內(nèi)部語義信息,經(jīng)過多個卷積層運算,最后可得到圖像在各個不同尺度的抽象表示,但是層數(shù)增加也會造成過擬合等問題。激活函數(shù)目的是為了給網(wǎng)絡(luò)增加非線性映射,常用的激活函數(shù)有Softmax、tanh、ReLU 等,卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖7 所示。

Fig.7 Convolution neural network structure圖7 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

模型輸入圖片是語義分割和校正后提取的80*240 車牌區(qū)域的圖片,由于普通車牌是由7 個字符組成,所以實現(xiàn)車牌端到端識別是多標(biāo)簽分類問題。每張輸入圖片有7 個標(biāo)簽,但是模型最后1 層輸出前的結(jié)構(gòu)可共享,只需將輸出設(shè)定成7 個即可,7 個輸出對應(yīng)7 個Loss,總Loss 是模型7 個Loss 的總和。使用keras 框架搭建模型,使用rule 作為激活函數(shù),最后全連接輸出層連接7 個節(jié)點對應(yīng)車牌7 個字符,使用Softmax 作為激活函數(shù),dropout 參數(shù)均為0.3,每個字符均有65 種可能性。使用本文系統(tǒng)在不同光照背景下,不同拍攝角度采集500 張圖片進行系統(tǒng)測試,分別使用多種圖片處理驗證方法有效性,系統(tǒng)性能如表1 所示。評價指標(biāo)使用交叉比(Intersection over Union,IoU),它是在特定數(shù)據(jù)集中檢測響應(yīng)物體準(zhǔn)確度的標(biāo)準(zhǔn),用于測量真實值和預(yù)測之間的相關(guān)度,相關(guān)度越高,該值越高,計算方法是兩個區(qū)域重疊的部分除以兩個區(qū)域集合部分得出的結(jié)果。本文即為Unet 網(wǎng)絡(luò)預(yù)測的車牌區(qū)域與標(biāo)簽真值區(qū)域重合部分除以集合部分,AP(Average Precision)標(biāo)簽為平均精確度,Time 為每次識別所運行的時間,單位為秒(s)。從實驗結(jié)果可以看出,本文算法系統(tǒng)識別準(zhǔn)確率為95.14%,較傳統(tǒng)采用圖像形態(tài)學(xué)與閾值法準(zhǔn)確率有較大提高,原因在于本文使用Unet 車牌語義分割網(wǎng)絡(luò),首先對車牌區(qū)域有很好的提取效果,可解決復(fù)雜背景影響下車牌區(qū)域的分割;其次,采用共享Loss 的神經(jīng)網(wǎng)絡(luò)進行字符判識,可提高準(zhǔn)確度、縮短運行時間,更可以減少形態(tài)學(xué)方法字符分割不均造成的誤識別。

Table 1 Performance comparison of license plate recognition algorithms表1 車牌識別算法性能對比

4 系統(tǒng)測試

本文智能車牌識別系統(tǒng)APP 主界面如圖8(a)所示,由兩個按鈕組成,右上方“Help”按鈕,可以顯示操作提示。點擊“相機拍照”可調(diào)用系統(tǒng)相機,實現(xiàn)車輛現(xiàn)場拍照功能,然后點擊“開始識別”按鈕,系統(tǒng)將對拍攝的圖片進行車牌字符識別,并將識別結(jié)果顯示在主界面上,如圖8(b)所示。

Fig.8 Mobile display圖8 移動端展示

5 結(jié)語

本文使用深度學(xué)習(xí)方法,基于卷積神經(jīng)網(wǎng)絡(luò)與大量OpenCV 圖像處理函數(shù),設(shè)計并實現(xiàn)了在復(fù)雜背景干擾下Android 移動平臺車牌識別系統(tǒng)。針對自然場景車牌區(qū)域定位提取和畸形校正,使用U-net 語義分割網(wǎng)絡(luò),給出了具體實現(xiàn)與移植細節(jié)。實地測試證明了系統(tǒng)準(zhǔn)確性和實時性,可以安裝在不同硬件的Android 移動平臺上。后續(xù)將繼續(xù)開發(fā)數(shù)據(jù)庫存儲和網(wǎng)絡(luò)連接模塊,提高系統(tǒng)完整性,拓寬其應(yīng)用場景。

猜你喜歡
車牌校正語義
劉光第《南旋記》校正
國學(xué)(2020年1期)2020-06-29 15:15:30
語言與語義
數(shù)字圖像處理技術(shù)在車牌識別系統(tǒng)中的應(yīng)用
電子制作(2019年12期)2019-07-16 08:45:16
一類具有校正隔離率隨機SIQS模型的絕滅性與分布
機內(nèi)校正
第一張車牌
基于MATLAB 的車牌識別系統(tǒng)研究
電子制作(2017年22期)2017-02-02 07:10:11
“上”與“下”語義的不對稱性及其認知闡釋
認知范疇模糊與語義模糊
一種基于eNode B的主動式頻偏校正算法
嵩明县| 芦溪县| 普安县| 思茅市| 将乐县| 元朗区| 通江县| 宁海县| 连南| 广德县| 文化| 余庆县| 密云县| 交城县| 合作市| 井陉县| 宁夏| 澜沧| 阳新县| 巧家县| 台江县| 久治县| 长顺县| 荆门市| 安宁市| 怀宁县| 清水河县| 稷山县| 清涧县| 卢氏县| 海原县| 建阳市| 新闻| 同江市| 绥江县| 抚宁县| 铜鼓县| 文山县| 黄陵县| 宣威市| 噶尔县|