運用深度學習進行機車騎士安全帽配戴及車牌的檢測
公司代號:ZW2
指導老師:黃正達教授
姓 名:杜俊甫
學 號:1071707
簡介
根據數據顯示,在台灣的交通事故死亡者當中機車族的比例超過6成,大部分的原因都是因為頭部遭到撞擊而導致死亡事件的發生,而根據交通部資料的統計,騎乘機車未戴安全帽致死率為配戴安全帽致死率的8.8倍,因為未配戴安全帽的致死率太高,國家也有規定機車騎士強制配安全帽的法律,但是每年還是會取締到平均20萬件未戴安全帽的違規事項,而且透過著人眼的檢測、之後進行拍照的動作,在上傳至當地政府警察檢舉網站,其時間成本實在過高,且非常沒有效率,而依靠著警察親自開單的話也會因為許多地點較少有警察的出現導致違規人士容易蒙混過關。
因為上述原因,藉由著科技進行對於未戴安全帽的違規騎士進行懲處是勢在必行的,而在近幾年在國外對於機車騎士安全帽的即時檢測已有了多種的做法,在最初是透過背景減法以及梯度直方圖HOG(Histogram of oriented gradient)提取特徵的方式,然後藉由SVM(Support Vector Machine)對於安全帽及未戴安全帽進行分類,在之後一段時間因為物件檢測的技術變得逐漸成熟,故也有其他研究是使用CNN或是更快速的Faster R-CNN,Faster R-CNN是基於雙階段的目標檢測演算法,其對於候選框(物件可能的位置)的生成和候選框的判斷是兩個過程,所以檢測的精準度會很高,但速度也會較慢,而之後對於安全帽的檢測有了更快速地方法-單階段目標檢測,在單階段目標檢測終,候選框的生成及判斷是在同時進行的,有著非常快的速度,精準度雖說比不上雙階段目標檢測,但是也是很不錯的,其例子有SSD、YOLO等,而在這次的實驗中,我提出的是YOLO的第三代模型架構YOLOv3,因為對於檢測路上的機車騎士而言,需要非常快的速度,而且Rendmon等人於2018年也對上述不同的神經網路進行了實驗,最終分析發現YOLOv3的精準度相比 R-CNN、Faster R-CNN也沒有遜色多少。
開發環境
Python 3.6.19
tensorflow 1.6.0
keras 2.1.5
使用技術
YOLOv3模型架構
YOLOv3是基於YOLOv2由J.Redmon開發出來的神經網路,YOLOv2中的一個改良版本YOLO9000可以識別超過9000個類別,而YOLOv3其基底網路為Darknet-53,原本YOLOv2為Darknet-19,可知YOLOv3加深了網路層數,目的為增加精準度,雖說其速度因為加深了多個網路層後沒有Darknet-19快,但是在單階段檢測上還是保持著很高的性能。YOLOv3的基本概念如同前兩代的YOLO和YOLOv2一樣,首先都是通過特徵即取網路對輸入進來的圖片進行特徵提取,但YOLOv3最主要特點為在輸出層時會輸出三個特徵圖,分為三種不同尺寸,13*13、26*26和52*52,大尺寸的特徵圖可以檢測小物體,而小尺寸的則是用來檢測大物體,其中每一張特徵圖都會切割成13*13格、26*26格、52*52格Grid Cell,而YOLOv3的三個特徵圖中的每一格Grid Cell輸出的結果會有檢驗框位置(x,y,w,h)以及那個檢測框的置信度(1)加上共有幾個類別,以YOLOv3在COCO資料集上的結果就是4+1+(80個類別),總共85個維度。而YOLOv3也有沿用YOLOv2的其中一個很重要的技巧-Anchor Box(先驗框),先驗框為在訓練模型時,對於訓練資料的標註進行聚類,得到類別中心的9個框,目的為避免模型在訓練的時候盲目地尋找,有助於模型快速地收斂。每一個Grid Cell有3個先驗框,作為先驗框,先驗框只與檢驗框的w、h,即矩形的長與寬有關,在有了先驗框和輸出的特徵圖之後,就可以求出預測檢驗框(Bounding Box),以下為Bounding Box的計算方式,bx、by、bw、bh為預測得到的Bounding Box的中心坐標和長寬,tx、ty、tw、th為模型的預測輸出,而cx和cy則為Grid Cell的坐標,pw及ph為先驗框的坐標,其運算過程如以下公式。
bx = σ(tx)+cx
by = σ(ty)+cy
bw = pw*e^tw
bh = ph*e^th
要確定Bounding Box的好壞,會需要一個關鍵性的指標-IOU(Intersection Over Union),YOLOv3藉由羅吉斯回歸來預測每個Bounding Box裡面物體的分數(Confidence Score),這個分數是以預測的Bounding Box以及我們在標註時的Ground Truth的IOU值作為評斷標準,通常IOU值是以0.5作為基準,因為一張圖片總共會產出13*13*3+26*26*3+52*52*3總共10647個Bounding Box,故當其中一個Bounding Box與Ground Truth的IOU大於0.5時,則會賦予Target值=1,若大於0.5但不是最好的Bounding Box則忽略這次的預測,YOLOv3只為每一個我們實際標註的類別分配一個Bounding Box,那一個Bounding Box就是Target為1的Bounding Box。
檢測流程
我們的檢測流程分為三個階段,第一階段為檢測圖中的機車騎士,若檢測到的機車騎士沒有配戴安全帽,則會進入第二階段-安全帽檢測,當第一階段的機車騎士被檢測到沒戴安全帽,則會進入第三階段,將自動化的進行車牌檢測及識別那些未戴安全帽的騎士,最後會將圖片以及檢測到的車牌號碼進行存檔,詳細流程如下圖所示。
Input Video
Frames Extraction
Motorcyclists detection using YOLOv3
Helmet detection of the motorcyclists using YOLOv3
Automatic license plate detection and recognition of the motorcyclists without helmet using YOLOv3
Save image and license plate number of the motorcyclists without helmet