鄭志鋒,劉金清,施文灶
(福建師范大學(xué) 醫(yī)學(xué)光電科學(xué)與技術(shù)教育部重點實驗室,福州 350007)
(福建師范大學(xué) 福建省光子技術(shù)重點實驗室,福州 350007)
(福建師范大學(xué) 福建省光電傳感應(yīng)用工程技術(shù)研究中心,福州 350007)
隨著我國工業(yè)技術(shù)水平的突飛猛進,私家車逐漸成為每家每戶的必需品.然而,日益增長的車輛數(shù)量與停車位有限的矛盾愈發(fā)顯著.在絕大多數(shù)大城市里,停車問題成為了車主出行的頭號難題[1].造就這一問題的主要原因除了停車位與私家車數(shù)量的比例不均衡之外,還有一個關(guān)鍵的因素在于停車場的管理方式上.對于目前絕大多數(shù)的停車場而言,依舊是沿用傳統(tǒng)的車位管理模式,停車場的車位信息不能提前傳達給私家車車主,不僅僅導(dǎo)致在尋找車位上浪費車主大量的時間,在一些商業(yè)繁華地段,還會造成停車場出入口交通擁塞,進而影響整個城市的交通.有不少研究者針對停車場設(shè)計了各種各樣的車位管理的系統(tǒng),但這些系統(tǒng)基本上都離不開紅外線、超聲波等這些傳統(tǒng)的傳感器,而且系統(tǒng)要求必須在每個車位上都安裝此類傳感器,再結(jié)合ZigBee 通信模塊進行數(shù)據(jù)傳輸.將這些系統(tǒng)推廣到現(xiàn)有的停車場中顯然不現(xiàn)實,而且功能的局限性大,可拓展性差.本文主要論述基于深度學(xué)習(xí)的智能停車場車位查詢系統(tǒng),針對目前停車場的車位管理方式的缺陷進行改造,使車主能夠通過手機上的微信公眾平臺實時查看某個停車場的車位信息,減少車主尋找停車位的時間,提升出行效率,在一定程度上緩解城市交通擁塞問題.并且對被占用的車位進行車輛的車牌識別,同時記錄停車的時長,實現(xiàn)了從車輛成功駛?cè)胲囄粫r才開始計費,避免了傳統(tǒng)停車場管理方式的從進入停車場就開始計時計費的誤差.
對于停車場車位的檢測,目前已經(jīng)可用于檢測的方法主要分類兩類,第一類是非視頻的檢測方法,也是目前大多數(shù)車位檢測系統(tǒng)采用的方法,主要包括線圈檢測方法、超聲波檢測方法、紅外線檢測方法以及地磁檢測方法等[2].另一類是基于視頻的檢測方法,如通過停車場的監(jiān)控視頻畫面進行檢測的方法.線圈技術(shù)目前來說已經(jīng)非常成熟,但是對于停車場的車位檢測,它的安裝要求很高,而且后期維護困難,整體成本高,想要在停車場的車位上普及這種設(shè)施特別困難.詳細(xì)的車位檢測之主要技術(shù)對比可見表1.
表1 車位檢測主要技術(shù)對比
經(jīng)過各種檢測方法的對比和分析,可以發(fā)現(xiàn)基于視頻的檢測方法最適合作為普及智能停車場車位檢測的方法.一方面是因為相對于其他檢測方法,攝像頭價格低廉,安裝容易,對現(xiàn)有的停車場進行攝像頭安裝時不需要太大的改動,后期維護方便,并且一個攝像頭可以同時監(jiān)控多個車位,大大減少了前期的硬件安裝的工作量[3].
目前很多停車場出于安全考慮已經(jīng)安裝了大量的監(jiān)控攝像頭,我們可以在這個基礎(chǔ)上直接調(diào)取監(jiān)控視頻畫面進行處理.另一方面原因是人工智能技術(shù)的爆發(fā),萌生出一系列用于目標(biāo)檢測的算法,這些算法相對于傳統(tǒng)的目標(biāo)檢測算法具有檢測精度高、速度快等特點,可以達到實時檢測的要求.
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)作為計算機視覺最有前景的解決方案之一,被廣泛用于研究相關(guān)任務(wù),如物體檢測,圖像識別,圖像檢索等[4].
到目前為止,已經(jīng)提出了許多高性能的CNN 結(jié)構(gòu),例如LeNet[5],VGG,GoogleNet,ResNet 等等.將這些結(jié)構(gòu)運用到各種檢測和識別的任務(wù)中,檢測和識別的精度甚至可以超越人類的感官.如圖1所示,為經(jīng)典的LeNet 網(wǎng)絡(luò)結(jié)構(gòu).
圖1 LeNet 網(wǎng)絡(luò)結(jié)構(gòu)[5]
該系統(tǒng)包括兩個組成部分,如圖2所示.
圖2 智能停車場車位查詢系統(tǒng)結(jié)構(gòu)
第1 部分為停車場監(jiān)控視頻的處理,利用停車場監(jiān)控視頻的URL 地址,通過RTSP (Real-Time Stream Protocol,實時流傳輸) 協(xié)議進行數(shù)據(jù)的傳輸[6],結(jié)合YOLO 目標(biāo)檢測模型以及車位信息的相關(guān)算法,計算出車位信息,包括空閑車位、被占用車位的停車時長以及車輛的車牌信息.
第2 部分為停車場車位信息的推送,本地計算機充當(dāng)服務(wù)器,根據(jù)第一部分得出的車位信息,將信息存儲在服務(wù)器指定路徑,通過Web 開發(fā)平臺Flask 設(shè)定指定路徑以及端口生成URL,通過微信公眾平臺開發(fā)工具開發(fā)小程序,調(diào)用生成的URL,實時查看停車場停車信息.
YOLO 全稱為You Only Look Once:Unified,Real-Time Object Detection,YOLO 算法徹底地貫徹了采用直接回歸的方法獲取到當(dāng)前需要檢測的目標(biāo)以及目標(biāo)類別的問題的思想,它是在2015年首次被Redmon J 和Farhadi A 等人提出來的[7].在2017年CVPR 上,Redmon J 和Farhadi A 又相繼提出了YOLOv2[8]、YOLOv3[9].
YOLO 算法首先將輸入圖片劃分為S×S個單元格,如果圖像中的物體的中心點落在某個單元格內(nèi),則該單元格就負(fù)責(zé)預(yù)測那個物體的類別,如圖3所示.每個單元格都會預(yù)測出B個檢測框及其置信度(confidence score),以及C個類別概率.用4 個值(x,y,w,h)來表示檢測框的位置.YOLO 目標(biāo)檢測算法采用One-Stage 策略,跟傳統(tǒng)的Two-Stage 神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法相比,YOLO 不需要做候選框提取這一步,直接回歸目標(biāo)的位置以及類別,大大縮短檢測的時間,可以達到車位檢測的實時性要求.
圖3 模型預(yù)測值結(jié)構(gòu)[7]
如圖4所示,相對于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測算法,在YOLO 的目標(biāo)檢測算法骨干網(wǎng)絡(luò)中加入了殘差網(wǎng)絡(luò)(ResNet)的結(jié)構(gòu),避免了因為網(wǎng)絡(luò)層次深而產(chǎn)生冗余和梯度彌散的現(xiàn)象.在做卷積運算提取特征過程中,從提取淺層特征到具有強語義的深層次特征,特征圖的尺寸會越來越小,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測算法僅僅采用最后一層特征圖進行預(yù)測,這無疑會造成細(xì)節(jié)的丟失,尤其是對于小尺寸目標(biāo)而言,檢出率大打折扣.由于本系統(tǒng)設(shè)計涉及到“車牌”這類小尺寸目標(biāo),傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測算法并不能很好地勝任此要求.YOLO 算法在預(yù)測時加入多尺度特征融合的策略,類似FPN 網(wǎng)絡(luò)(Feature Pyramid Networks),將不同深度層次的特征圖融合,再進行預(yù)測,避免了淺層特征的丟失,很好地解決了本系統(tǒng)設(shè)計中所涉及的“車牌”類別的小尺寸目標(biāo)的檢測.
通過Darknet 框架結(jié)合YOLO 目標(biāo)檢測算法搭建檢測模型.Darknet 是一款輕量級的基于C 語言和CUDA開發(fā)的開源的深度學(xué)習(xí)框架[10],Darknet 的實現(xiàn)和Caffe 的實現(xiàn)存在一定的相似性.搭建模型中,需要對相關(guān)參數(shù)進行設(shè)置,如圖5所示,angle、saturation、exposure、hue,這4 個參數(shù)對應(yīng)到數(shù)據(jù)增強的參數(shù),分別表示通過旋轉(zhuǎn)圖像角度、調(diào)整圖像的飽和度、調(diào)整圖像的曝光以及調(diào)整圖像的色調(diào)來生成更多的樣本,通過這幾個參數(shù)的配置,能夠使得模型對于旋轉(zhuǎn)和光照的變化以及顏色的變化變得更加的魯棒.在本課題研究中,設(shè)置為angle=0,saturation=1.5,exposure=1.5,hue=0.1.
搭建好檢測模之后,利用大量標(biāo)注好的車輛和車牌圖像數(shù)據(jù)對模型進行迭代訓(xùn)練,圖6是其中的一部分訓(xùn)練數(shù)據(jù)圖像.
對訓(xùn)練好的模型進行測試,結(jié)果如圖7所示.
圖4 YOLO 網(wǎng)絡(luò)結(jié)構(gòu)
圖5 模型參數(shù)配置
實時的停車場監(jiān)控視頻的畫面經(jīng)過檢測模型檢測之后,通過判斷檢測結(jié)果屬于指定類別的物體的坐標(biāo)位置是否在預(yù)先設(shè)定好的一些閾值范圍之內(nèi),從而判斷車位是否空閑.假設(shè)現(xiàn)在只針對一個攝像機的監(jiān)控畫面進行算法設(shè)計,這個攝像頭主要負(fù)責(zé)監(jiān)控3 個停車位.分別為17,18,19 號停車位.將因為監(jiān)控視頻畫面是固定的,所以可以在監(jiān)控視頻畫面中通過人工預(yù)先設(shè)定一些坐標(biāo)值,如圖8所示.
圖6 部分訓(xùn)練數(shù)據(jù)圖像
圖7 測試結(jié)果
圖8 閾值設(shè)定
監(jiān)控視頻圖像經(jīng)過檢測之后輸出的結(jié)果格式為:(name,confidence,(x,y,w,h)),分別對應(yīng)物體的類別、置信度、檢測框的中心點坐標(biāo)和寬度高度.
創(chuàng)建3 個列表frontcars=[]、space=[]和parking Space=[17,18,19],將檢測的結(jié)果屬于car、motorbike以及truck 的類別并且檢測框高度h大于167 的物體篩選出來放到列表frontcars.列表space 用來存放表示空閑的車位號,若通過判斷當(dāng)前車位沒有被占用,列表parkingSpace 存放固定的停車位.
用for 循環(huán)遍歷列表frontcars:
對于17 號停車位,若800<x<990 且376<y<552時,表示17 號停車位被占用,否則為空閑;對于18 號停車位,若520<x<740 且376<y<552 時,表示18 號停車位被占用,否則為空閑;對于19 號停車位,若230<x<470 且376<y<552 時,表示19 號停車位被占用,否則為空閑.列表frontcars 遍歷結(jié)束后,space=[],表示車位都被占用,沒有空閑車位.
通過以上方式的處理,就可以避免對其他不在當(dāng)前攝像頭所監(jiān)控范圍內(nèi)的停車位上的車輛造成誤判.根據(jù)不同攝像頭監(jiān)控視頻畫面,對停車場其他攝像頭下的車位檢測過程進行相應(yīng)的閾值設(shè)定即可.
將被檢測出來的屬于licenceplate 類別的物體篩選出來,即是車牌.因為一個攝像頭只負(fù)責(zé)檢測前排停車位,如果前排車位沒有被占用,而攝像頭會檢測到后排不屬于它的檢測范圍內(nèi)的停車位上車輛的車牌,因此需要將這些不在前排停車位上的車輛車牌舍棄,根據(jù)圖8所設(shè)定的閾值,將中心點坐標(biāo)y<376 的車牌舍棄.創(chuàng)建一個列表licenceplate=[]用來存放篩選出來的車牌位置信息.
用for 循環(huán)遍歷列表licenceplate,根據(jù)車牌中心坐標(biāo)x的值來判斷該車牌所屬車輛停放在哪個停車位置上:
若800<x<990,則停放在17 號車位;
群眾史觀是中國共產(chǎn)黨的群眾觀點和群眾路線最為直接的理論根基。在建設(shè)中國特色社會主義的新時期、新形勢下,對于如何貫徹落實黨的十八大報告中關(guān)于開展群眾路線教育實踐活動、做好新形勢下群眾工作的精神,真正踐行黨的群眾史觀,在應(yīng)然方面為我們提出了新要求。
若520<x<740,則停放在18 號車位;
若230<x<470,則停放在19 號車位.
再將所檢測出來的車牌進行識別.這里包括3 個過程,傾斜車牌的矯正,車牌的字符的分割以及字符的識別.前者對于提高后兩者的精確度打下了基礎(chǔ).對于傾斜車牌的矯正,首先將檢測到的車牌進行灰度化,通過Randon 變換的算法,將車牌進行各方向的投影,通過投影獲取的傾斜度進行校正.另外,通過垂直投影法和聚類的連通域法進行分割車牌的上下邊框以及車牌上的字符,由于矯正后的車牌邊框還會有部分的殘留邊框,可使用黑白跳變統(tǒng)計法以及行像素值的距離不變法來清除上下邊框的殘余部分[11].對于左右車牌邊框,要提高左右邊框的分割精確度,首先通過計算水平已結(jié)合差分圖,算法公式如下.
再通過計算一階差分圖的列平均值:
通過比較列差分值和列平均值,得到滿足的列,再通過滿足的列找到最大差分所對應(yīng)的左列和右列.假設(shè)得到的左右列為Bl3和Br3,則再通過縮小誤差的形式:
最終可以計算最終的左右邊界:
圖9 處理后的車牌
車牌上下左右邊框分割后,進行車牌的單字符的分割,通過二值化處理后,車牌號的字符為白色區(qū)域,字符的背景為黑色區(qū)域,采用垂直投影法進行分割.分割之后如圖10所示.
圖10 字符分割后的車牌
將分割出來的圖片放在一個列表里進而轉(zhuǎn)換成圖像分類的問題.對于字符的分類問題,只需要利用一個簡單的卷積神經(jīng)網(wǎng)絡(luò)就可以完成,可以采用VGG、AlexNet 等經(jīng)典的卷積網(wǎng)絡(luò)來完成.對于字符的數(shù)據(jù),網(wǎng)上有很多公開的資源可以采用,如圖11所示,是從網(wǎng)上下載的公開字符數(shù)據(jù)集的一部分.
圖11 字符數(shù)據(jù)集
創(chuàng)建一個字典parkingtime_dict={}記錄停車時間節(jié)點,用for 循環(huán)遍歷列表spaceParking,將所有停車位編號對應(yīng)的值設(shè)置為None 放入字典.如parkingtime_dict={‘17’:None,’18’:None,’19’:None}.
用for 循環(huán)遍歷列表spaceParking,forjin space Parking,判斷:
如果j在列表space 里面,表示j號車位當(dāng)前為空閑,沒有停車時長,對應(yīng)的記錄的停車時間為空,設(shè)置parkingtime_dict[j]=None.
如果j不在列表space 里面,表示j號車位被占用,如果parkingtime_dict[j]==None 判斷為truth,則j號車位沒有被記錄過時間節(jié)點,表示j號車位剛剛被占用,定義成臨時停車,并記錄系統(tǒng)當(dāng)下停車時間節(jié),parkingtime_dict[j]==time.time().
如果parkingtime_dict[j]==None 判斷為false,表示j號車位已經(jīng)被記錄過時間節(jié)點,則停車時長park_elapse=int(time.time()parkingtime_dict[j]).
根據(jù)停車場停車位的分部,用Photoshop 圖像處理應(yīng)用繪制一張停車位示意圖,如圖12所示.將所計算出來的停車場車位信息匹配到對應(yīng)的示意圖車位上,利用OpenCV 視覺庫提供的cv2.floodFill()漫水填充函數(shù)[12]在車位示意圖對應(yīng)的車位上進行顏色填充,該函數(shù)可以通過圖像中一個坐標(biāo)對應(yīng)像素點顏色,將周圍跟這個像素點顏色相似的區(qū)域填充成所設(shè)定的顏色.用不同顏色表示空閑車位、臨時停車車位及被占用車位,將停車的時長信息按照指定的格式用cv2.putText()函數(shù)輸出到對應(yīng)的被占用車位示意圖上,同時將系統(tǒng)當(dāng)前時間輸出到示意圖左下角,如圖13.系統(tǒng)中的非鮮艷顏色表示尚未安裝攝像頭的停車位.
將實時生成的停車位示意圖存放在指定的路徑,因為本地主機直接與廣域網(wǎng)連接,所以可以使用任何一臺連接到Internet 的終端,通過這個IP 訪問到這臺計算機.使用Flask 輕量級Web 應(yīng)用框架,開發(fā)一個指定訪問路徑和訪問端口的Web,利用微信開發(fā)工具開發(fā)微信小程序,通過這個Web 的URL 直接可以訪問到所設(shè)置的路徑,獲得實時產(chǎn)生的車位信息,本地計算機相當(dāng)于充當(dāng)了一個服務(wù)器的角色.
圖12 停車場車位示意圖
從監(jiān)控視頻中調(diào)取的原始畫面,如圖14所示.
程序運行在終端顯示的結(jié)果,如圖15所示,包括車位信息、停放車輛的位置信息、車輛的車牌號以及車輛的停車時長.對于商業(yè)停車場,可以利用車牌號以及停車時長進行計費,真正做到從車輛成功停放進車位時才開始計費,避免產(chǎn)生收費誤差.
圖15 終端顯示信息
經(jīng)過可視化處理之后的畫面,如圖16所示.
圖16 經(jīng)過處理后的監(jiān)控視頻畫面
通過處理實時的停車場監(jiān)控視頻畫面生成車位示意圖,如圖17所示,右上角4 個車位、左下角2 個車位、中間相連的3 個車位以及相連的5 個車位分別對應(yīng)圖16左上、右上、左下以及右下監(jiān)控視頻畫面中的車位狀態(tài).灰色表示暫未安裝攝像頭的車位.
圖17 實時停車場示意圖
在微信搜索欄上搜索“智能停車場車位信息”小程序或者通過掃描二維碼即可進入小程序,如圖18所示.
圖18 微信小程序界面
本文介紹了基于深度學(xué)習(xí)的智能停車場車位檢測系統(tǒng),首先綜合比較了幾種深度學(xué)習(xí)目標(biāo)檢測算法的優(yōu)缺點,由于停車場車位的檢測具有實時性的要求,并且停車場的目標(biāo)類別來說比較單一,選用深度學(xué)習(xí)目標(biāo)檢測YOLO 算法作為檢測模型的算法,均衡了檢測時間和檢測精度.經(jīng)多次實驗測試,檢測結(jié)果達到了預(yù)期的效果.針對目前我國停車場管理的現(xiàn)狀以及私家車輛規(guī)模越來越壯大的環(huán)境下,本文設(shè)計的智能停車場車位查詢系統(tǒng),能夠讓車主通過微信小程序預(yù)先知道停車場的車位信息,大大縮短了盲目尋找停車位的時間,減少車主出行的麻煩,有效地提高了停車場的使用率.并且從一定程度上緩解了城市交通的擁塞.對于商業(yè)停車場,實現(xiàn)了更精確的停車計時計費方式,避免了收費誤差對車主產(chǎn)生的不合理.順應(yīng)我國智慧城市以及智能交通的發(fā)展的強烈要求,本課題所設(shè)計的智能停車場車位檢測系統(tǒng)具有推廣的意義.