




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation第八章第8章
深度神經網絡在圖像處理中的應用
近年來,隨著計算機運算性能不斷提高,深度學習算法在圖像識別、圖像處理及語音識別等多個方面取得了巨大成功。本章就深度學習在圖像處理領域的實際應用進行介紹。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation第八章深度神經網絡在圖像處理中的應用8.1計算機視覺基礎8.2基于YOLO的交通標志的檢測與識別8.3基于卷積神經網絡的車牌定位與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1計算機視覺基礎計算機視覺基礎8.1.1計算機視覺概述8.1.2圖像與圖像特征8.1.3神經網絡與計算機視覺哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
計算機視覺也通常被叫做機器視覺,其目的是建立能夠從圖像或者視頻中“感知”信息的人工系統(tǒng)。
計算機視覺已經在交通(車牌識別、道路違章抓拍)、安防(人臉閘機、小區(qū)監(jiān)控)、金融(刷臉支付、柜臺的自動票據識別)、醫(yī)療(醫(yī)療影像診斷)、工業(yè)生產(產品缺陷自動檢測)等多個領域應用。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
計算機視覺的發(fā)展歷程要從生物視覺講起。
經過幾億年的演化,目前人類的視覺系統(tǒng)已經具備非常高的復雜度和強大的功能,人腦中神經元數目達到了1000億個,這些神經元通過網絡互相連接,這樣龐大的視覺神經網絡使得我們可以很輕松的觀察周圍的世界,如圖8-2所示。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
對人類來說,識別貓和狗是件非常容易的事。但對計算機來說,即使是一個精通編程的高手,也很難輕松寫出具有通用性的程序
研究者嘗試著從不同的角度去解決這個問題,由此也發(fā)展出一系列的子任務,如圖8-3所示。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述圖8-3計算機視覺子任務示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
以圖像分類任務為例,介紹計算機視覺技術的發(fā)展歷程。如圖8-4所示。圖8-4早期的圖像分類任務哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
YannLeCun是最早將卷積神經網絡應用到圖像識別領域的,其主要邏輯是使用卷積神經網絡提取圖像特征,并對圖像所屬類別進行預測,通過訓練數據不斷調整網絡參數,最終形成一套能自動提取圖像特征并對這些特征進行分類的網絡,如圖8-5所示。圖8-5早期的卷積神經網絡處理圖像任務示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.1計算機視覺概述
卷積神經網絡在手寫數字識別任務上取得了極大的成功。
隨著計算機性能的提升,今年催生了越來越豐富的模型結構和更加準確的精度,同時計算機視覺所處理的問題也越來越豐富,包括分類、檢測、分割、場景描述、圖像生成和風格變換等,甚至還不僅僅局限于2維圖片,包括視頻處理技術和3D視覺等。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺
卷積神經網絡是目前計算機視覺中使用最普遍的模型結構。圖8-6是一個典型的卷積神經網絡結構,多層卷積和池化層組合作用在輸入圖片上,在網絡的最后通常會加入一系列全連接層,ReLU激活函數一般加在卷積或者全連接層的輸出上,網絡中通常還會加入Dropout來防止過擬合。圖8-6卷積神經網絡經典結構哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺卷積層:卷積層用于對輸入的圖像進行特征提取。池化層:池化層通過對卷積層輸出的特征圖進行約減,實現了下采樣。激活函數:激活函數給神經元引入了非線性因素,對輸入信息進行非線性變換,從而使得神經網絡可以任意逼近任何非線性函數,然后將變換后的輸出信息作為輸入信息傳給下一層神經元。全連接層:全連接層用于對卷積神經網絡提取到的特征進行匯總,將多維的特征映射為二維的輸出。其中,高維代表樣本批次大小,低維代表分類或回歸結果。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺1.卷積神經網絡的發(fā)展卷積神經網絡是由卷積層提取特征,亞采樣層處理特征,交疊構成多層神經網絡。網絡輸入是通過手寫方式輸入圖像,對結果識別,輸入過程需要進行多次卷積以及采樣加工,在全連接層進行和目標的映射。卷積神經網絡卷積層包含特征圖較多,在核對圖像后運算,將元素視為權值參數,和輸出圖像像素值相乘,求和得到輸出像素。采樣層也被稱為池化層,進行池化采樣,在減少數據量同時保留信息。神經網絡和連接層進行對接,隱層結構和連接層一致,神經元一一對接。卷積神經網絡在BP算法支持下,通過模擬訓練,能夠讓神經元享有連接權,減少了訓練數目。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺2.卷積神經網絡在計算機視覺中的應用1)圖像分類在計算機視覺領域內最基礎的應用是圖像分類,根據設定對給定圖片進行分類,讓圖片內容劃分到合適的分類中,并進行類別標記。2)目標檢測
在目標檢測中,是計算機視覺基礎工作,可以標記設定對象,對目標物體進行標記,并進行圖像分類。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺3)圖像語義分割
圖像語義分割需要對分割目標準確識別,精準圖像語義分割能夠降低后續(xù)識別數據量,保留結構化信息。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺4)圖片標題生成
生成圖片的標題是神經網絡的重要業(yè)務,借助于自然語言準確描述圖片,體現出圖片的特征和內容,隨著自然語言和深度學習的技術突破,圖片標題生成逐漸在各個網站中使用。目前微軟和谷歌的技術仍然處于領先地位。5)人臉識別
人臉識別包含人臉辨識和驗證兩部分,辨別人臉圖像正確率為50%,辨識人臉可以將人臉圖像劃分不同種類的身份,猜中概率為1/N。
人臉的辨識難度更高,隨著類別數增加而增加,最大挑戰(zhàn)在于在不同表情、姿態(tài)、光線下的辨別。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺6)行人再識別在監(jiān)控系統(tǒng)中主要利用行人再識別,在可控環(huán)境中,利用虹膜和人臉等特征進行人臉識別。監(jiān)控視頻環(huán)境十分復雜,不可控因素較多,獲得行人圖像的質量差,無法準確捕捉人臉特征。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.1.3神經網絡與神經視覺7)人體動作識別識別人體動作已經是計算機視覺研究中關注度很高的問題,通過攝像機對視頻數據進行捕捉和處理,對視頻中動作行為深入理解。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2基于YOLO的交通標志檢測與識別8.2.1交通標志識別8.2.2YOLO系列簡介8.2.3基于YOLOv5的交通標志檢測與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.1交通標志識別
交通標志檢測與識別系統(tǒng)的基本流程如9-1所示,整個流程被劃分為了3個環(huán)節(jié),首先是進行圖像的預處理操作,主要對圖像進行角度變化、壓縮等處理;然后是交通標志檢測,主要完成候選區(qū)域的提取工作;最后是對交通標志的分類操作,主要對交通標志的類型進行分類標注。本節(jié)主要將交通標志分為了三類:警告類(warning)、禁止類(prohibitory)、指示類(mandatory),基本示例如圖9-2所示。輸入識別結果圖像預處理交通標志檢測交通標志分類輸入圖像圖
8?1交通標志檢測與識別系統(tǒng)基本流程圖
8?2交通標志基本示例圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation9.3.1交通標志識別交通標志主要由交通標志主要由符號、文字以及圖案三部分組成。中國的主要交通標志可以分為以下三類:1.禁令:主要對車輛的車速、車身高度以及行駛路徑進行禁止或限制,如禁止停車、限制速度、禁止通行等路標。禁止路標通常以白色為底色,圖案為黑色,帶有紅圈。2警告:主要用于警告車輛前方路況危險,需謹慎駕駛。還有的是警告司機前方學校路段,減速慢行。警告交通標志的形狀一般是三角形,頂角向上,顏色為黃底,黑邊框,黑圖案。3指示:主要用于指示車輛駕駛人員行道方向和行車方向。指示交通標志一般以藍色為底色,白色圖案,形狀為圓形、正方形等。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation9.3.1交通標志識別
在圖像拍攝模糊時會導致交通標志信息不易被提取識別,從而導致精度降低、訓練結果不理想等影響。輸入圖像通常伴隨著復雜的噪聲,不清晰等不良影響因素。所以在進行特征抽取之前,往往需要對圖像進行預處理的操作。該操作的目的就是增強圖像中有用的信息,消除無關的信息,比如噪聲的干擾,從而提高檢測器對交通標志信息的辨識度和精度。
目標檢測是將目標對象從圖像(或圖像序列)中提取出來并標記它的位置和類別。深度學習出現之前,傳統(tǒng)的目標檢測方法分為區(qū)域選擇、特征提取和分類器3類方法,一般存在以下問題:(1)區(qū)域選擇策略沒有針對性、時間復雜性高,窗口冗余;(2)手工設計的特征魯棒性較差。深度學習出現以后,目標檢測取得了巨大的突破?;谏疃葘W習的目標檢測算法大致分為兩類:(1)以R-CNN系列算法為代表的候選區(qū)域的深度學習目標檢測算法(R-CNN、SPP-NET、FastR-CNN等),誕生時間較早,但訓練時間長;(2)以YOLO系列為代表的基于回歸方法的目標檢測算法,檢測速度較快且召回率高。本節(jié)將采用YOLO算法完成交通標志檢測與識別任務。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2基于YOLO的交通標志檢測與識別8.2.1交通標志識別8.2.2YOLO系列簡介8.2.3基于YOLOv5的交通標志檢測與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介YOLO(YouOnlyLookOnce)是在CVPR2016提出的一種目標檢測算法,意為只需要看一邊圖片就可以得出結果,其核心思想是將目標檢測轉化為回歸問題求解。YOLO基于一個單獨的端到端的網絡,完成從原始圖像的輸入到物體位置和類別的輸出。作為一種統(tǒng)一結構,YOLO的運行速度非常快,相比于FastR-CNN的0.5幀/s、FasterR-CNN的7幀/s,基準的YOLO面模型每秒可以實時處理45幀圖像。同時,YOLO的泛化能力強,在訓練領域外的圖像上運行依然有不錯的效果。在CVPR2016提出的YOLOv1的檢測流程和網絡結構分別如圖8-3和圖8-4所示,使用的骨干網絡是VGG-16。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介YOLOv1所采用的VGG-16網絡構架類似于GoogleNet,在GoogleNet的基礎上用1×1還原層和3×3卷積層取替了GoogleNet的初始模塊。其網絡結構由24個卷積層和2個全鏈接層構成。其中,卷積層完成目標特征提取工作,全鏈接層則是目標位置坐標和分類類別信息的預測。圖
8?4YOLOv1目標檢測流程哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介圖
8?5YOLOv1網絡結構哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介當輸入一張圖像后,YOLO的檢測流程大致為:首先將圖像分割成S×S個網格(GridCell),如果一個目標的中心落在這個網格中,那么這個網路就復雜檢測這個目標。每個網格要預測B個預測框(BoundingBox),每個預測框包含5個預測值:x、y、w、h和confidence。其中,x、y表示預測框的中心位置相對于當前網格的位置偏移,實際訓練時被歸一化為[0,1];w、h表示預測框相對于整幅圖像的比例系數,實際訓練時也別歸一化為[0,1];confidence是置信度,反映一個預測框含有目標的可行程度和精確程度與多大,定義(9-1)所示。(8-1)其中,若預測框包含目標,則Pr(Object)=1,否則為0。即交并比,是用預測框和實際框的交集除以預測框和實際框的并集,交并比越大,說明預測越精確。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介
每個網格在對x、y、w、h、confidence五個值進行預測的同時還預測了C個類別條件概率Pr(Classi|Object),這些條件概率表示該網格包含目標對象的概率,由于數據集中的數據是C類,所以需要預測C個條件概率。每個網格預測2個預測框(B=2)在得到每個格子預測的類別信息和建議框預測的置信度信息后,然后將二者相乘就得到了每個建議框的特定類別的得分。在得到每個建議框的特定類別的得分后,淘汰掉特定類別得分較低的建議框。網絡輸出的建議框一般有許多是重疊的,這就會導致召回率較低。為了提高目標檢測的召回率,需要采用NMS算法對未被淘汰的建議框進行挑選,選擇出所有建議框中最優(yōu)的那一個。YOLOv1算法的優(yōu)點是檢測速度比較快,其目標定位不準、召回率低的缺點也是不容忽視的一點。為了解決YOLOv1算法的缺陷,YOLOv2在此基礎上做出了一定的改進。YOLOv1主要先在ImageNet分類數據集上預訓練模型,這樣可以獲得相對優(yōu)異的訓練模型,在此基礎上將網絡輸入的分辨率進行修改后再次進行網絡的訓練。然而如果修改的分辨率很高,會導致模型再次被訓練時無法及時適應分辨率的變化。于是,為了能讓訓練模型能夠適應分辨率的變化,YOLOv2應用了高分辨率分類器,并且增加了預訓練的輪數。與Faster-RCNN的錨框思想一樣,YOLOv2在特征圖上采用了滑動窗采樣。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介
而Faster-RCNN的預測方式對于偏移量沒有進行約束,這會使得訓練前期的模型變得十分的不穩(wěn)定。于是,YOLOv2在此方式下加入了sigmoid函數,使得預測出的輸出始終在0到1之間,從而達到穩(wěn)定輸出模型的效果。YOLOv2引入了anchorboxes,輸出featuremap大小為13×13,每個cell有五個anchorboxes來預測五個boundingboxes,一共有13×13×5個boxes。Boxes的增加提高了定位的準確率。YOLOv2算法采用的網絡結構為Darknet-19。Darknet-19。該網絡包含19個卷積層和5個maxpooling層,相比YOLOv1算法的網絡結構中采用的24個卷積層和2個全鏈接層,Darknet-19明顯減少了卷積操作,從而減少了運算時間。YOLOv2算法最后使用了averagepooling層代替全鏈接層進行預測。YOLOv3主要改進YOLO多目標檢測框架,在保持原有速度的優(yōu)勢之下,精度上得以提升。YOLOv3采用了Darknet-53網絡結構,整體框架結構如圖8-6所示。Darket-53網絡結構相對于YOLOv2算法的Darknet-19而言,其網絡層數更多,同時引入了Resnet殘差網絡,在相同的準確率下,Darknet-53的速度要優(yōu)于Darknet-19。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介圖
8?6YOLOv3的整體框架基于特征金字塔(FeatuePyramidNetword,FPN)的思想,YOLOv3算法采用了多尺度預測的方法。此外,該算法在錨框的設計方法上使用的是聚類的思想,經過聚類操作后得到9個錨框,最后按照錨框的大小的比例分配給三種不同尺度的YOLO層。如圖9-6所示,在特征提取網絡中,通過多次上采樣等操作得到了三種不同尺度的預測層,這三種不同的預測層分別用來預測大中小三種目標。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介YOLOv4構建了一個簡單且高效的目標檢測模型,該算法降低了訓練門檻,這使得普通人員都可以使用1080Ti或2080TiGPU來訓練一個超快且準確的目標檢測器。在檢測器訓練期間,驗證了最先進的Bag-ofFreebies和Bag-of-Specials方法的影響,同時對包括包括CBN,PAN,SAM等最先進的方法進行改進,使它們更有效,更適合單GPU訓練,并對目前主流的目標檢測器框架進行拆分:input、backbone、neck和head。YOLOv4的整體框架如圖9-7所示。圖
8?7YOLOv4的整體框架哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介YOLOv5算法的基本框架結構圖如圖9-8所示。YOLOv5算法延續(xù)了YOLOv4算法的Mosaic數據增強操作,并在推理時采用了圖像自適應縮放操作,該方法能夠根據輸入圖像的大小寬度進行自適應填充,大大提升了預測的效率。并且將Focus結構應用于網絡主干Backbone的前端部分,該結構主要對輸入圖像數據進行切片操作,該操作可以有效地提升圖片特征提取的質量。切片操作的過程示意圖如圖9-9所示。與YOLOv4一樣,YOLOv5也采用了殘差CSP結構,而YOLOv5的CSP結構又有不同之處,它將CPS應用于主干網絡和頸部網絡兩個位置。位于主干網絡的CSP結構能夠提升梯度值,防止反向傳播時出現梯度消失。為了加強網絡對特征的融合能力,在頸部網絡加入了與主干網絡不同的CSP結構。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介圖
8?8YOLOv5的基本框架結構圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介YOLOv5算法采用了Mosaic數據增強的方法對輸入圖像進行處理。Mosaic數據增強的方法最先應用于YOLOv4算法當中,它將任意4張圖像按照隨機比例進行裁剪,再通過改變亮度、對比度、翻轉等操作來對圖像進行處理,最后將這4張圖像以逆時針方向依次擺放組合成一張新的圖像。Mosaic數據增強的方法可以一次性輸入四張圖像,這樣可以極大地減少訓練的時間,并減小占用的內存。圖
8?9切片操作示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介
目標檢測的損失函數包含了兩類損失函數,一類是邊界框回歸損失函數,另一類是分類損失函數。其中,邊界框損失函數的計算指標一般是交互比IOU,交互比代表了預測框和真實框的距離,從而可以反映出檢測的效果。但是交互比IOU作為損失函數時,如果預測框和真實框沒發(fā)生重疊,IOU的值會為零,此時無法反應兩者之間的距離。此外,當兩者沒有重疊的情況下時,梯度為0,將會導致無法進行學習和訓練。為了解決以上問題,YOLOv5采用了GIOU作為邊界框回歸的損失函數。設A為預測框,B為真實框,C為A與B的最小閉合框,GIOU計算公式如式(9-1)所示,計算概念圖如圖9-10所示。(9-1)GIOU作為邊界框損失函數時的計算如(9-2)所示。
圖
8?10GIOU的計算哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.2
YOLO系列簡介
訓練階段的分類損失函數采用的是二元交叉熵損失函數。它是由邊界框回歸損失、置信度預測損失和類別預測損失三部分構成,如(9-3)所示。(8-3)哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2基于YOLO的交通標志檢測與識別8.2.1交通標志識別8.2.2YOLO系列簡介8.2.3基于YOLOv5的交通標志檢測與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別本小節(jié)將采用YOLOv5完成交通標志檢測與識別任務,圍繞該任務接下來將分別從以下幾個方面進行介紹:1.CCTSDB數據集2.YOLOv53.訓練數據哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別1.CCTSDB數據集本節(jié)采用的數據集是CCTSDB公開數據集,它是由長沙理工大學綜合交通運輸大數據智能處理實驗室制作完成的,該數據集主要包含了15734張不同分辨率的圖像,作者將原始圖像經過加入椒鹽噪聲、圖像壓縮等處理方法進行對數據集的擴充。數據集的圖片主要收集于中國城區(qū)街道和高速公路當中。CCTSDB數據集包含了三類路標:警告類(warning)、禁止類(prohibitory)、指示類(mandatory)。CCTSDB數據集相比于德國路標數據集GTSRB具有更加復雜的環(huán)境背景,分辨率種類更加豐富,檢測目標大小不一等特點,這使得模型在完成檢測的任務時更加具有挑戰(zhàn)性,同時也證明CCTSDB數據集在衡量模型優(yōu)劣的方面更加具有說服能力。圖9-11是數據集的部分圖片。完整的數據集集的下載地址為,Github:/csust7zhangjm/CCTSDB,說明文檔中有百度網盤的鏈接及提取碼。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別圖
8-11CCTSDB數據集的部分圖片哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別CCTSDB數據集已經進行了標注,標注文件以txt文件形式(“GroundTruth.txt”)保存,部分信息如圖9-12所示。數據集數據分為三類:warning,prohibitory,mandatory,標注文件中的四個整數數值表示標注框的長寬和中心點的坐標。圖9-12標注文件中的部分信息哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別2.YOLOv5(1)環(huán)境配置這里默認Anaconda、Pycharm和Python已經安裝成功,對環(huán)境的基礎要求是Python>=3.7.0。Pytorch安裝,嚴格按照表8-1所示的版本進行安裝,也可以進入Pytorch官網
/
查看對應版本信息并下載安裝,如圖8-13所示。由于所用電腦沒有獨立顯卡,所以此處選用CPU版的Pytorch。cuda版本可用pytorch版本7.50.4.1,0.3.0,0.2.0,0.1.12,0.1.68.01.0.0,0.4.19.01.1.0,1.0.1,1.0.0,0.4.19.21.4.0,1.2.0,0.4.110.01.2.0,1.1.0,1.0.1,1.0.010.11.6.0,1.5.0,1.4.0,1.3.010.21.6.0,1.5.0表8-1pytorch版本說明哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別圖8-13PyTorch版本選擇示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別下載、安裝與測試YOLOv5下載地址/ultralytics/yolov5,下載后解壓壓縮包,然后打開Pycharm創(chuàng)建新項目,如圖8-14所示。圖8-14Pycharm創(chuàng)建項目參考哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別創(chuàng)建項目完成后,打開終端,下載所需安裝包,如圖8-15所示。圖8-15下載安裝包哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別最后,運行detect.py程序,測試是否配置成功,測試結果默認存放在runs/detect/exp中。由于需要下載模型數據,第一次運行會慢一些。如果運行結束后沒有報錯,而且在左側的runs\detect\exp目錄下出現了如圖8-16所示的兩張被處理過的圖像,說明安裝成功。(a)
(b)圖9-16測試結果圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別(3)訓練數據①數據集準備及劃分本節(jié)采用的數據集是CCTSDB公開數據集,需要將數據集中的圖像轉換成YOLO格式,參考代碼如下:#0warning#1mandatory#2prohibitoryimportcv2哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別withopen("GroundTruth.txt","r")asf:img_name1=Noneforlineinf.readlines():line=line.strip('\n')line=line.split(';')#print(line)img_name=line[0]x1=int(float(line[1]))y1=int(float(line[2]))x2=int(float(line[3]))y2=int(float(line[4]))label=line[5]name=img_name.split('.')name=name[0]iflabel=="warning":label=0eliflabel=="mandatory":label=1eliflabel=="prohibitory":label=2print(name,label)img=cv2.imread(f"Images/{name}.png")sp=img.shapeh=sp[0]w=sp[1]哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別x_=(x1+x2)/(2*w)y_=(y1+y2)/(2*h)w_=(x2-x1)/wh_=(y2-y1)/hstrcontent=f'{label}{x_}{y_}{w_}{h_}'print(strcontent)
f=open(f"labels/{name}.txt",'a')f.write(strcontent)f.write('\n')哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別
首先,將圖像數據和標簽數據劃分為:訓練集、驗證集和測試集,比例根據數據量不同而不同,一般為7:1:2,也可以不劃分驗證集,直接按7:3或8:2的比例劃分訓練集和測試集。然后,仿照Yolov5原生格式新建一個datasets目錄,并創(chuàng)建images,labels兩個子目錄,分別存放待訓練的圖像以及標注后的label數據,并在兩個子目錄分別創(chuàng)建數據集目錄
train/val/test,如圖9-17所示。同時,將相應的數據集分別存放在文件夾中,如圖9-18(a)、(b)所示。路徑列表train_list.txt是自己生成的一個目錄文件結構,如圖9-18(c)所示。至此,數據集的準備及劃分工作已經完成。圖8-17參考目錄示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別(a)
(b)(c)圖8-18數據集存放位置示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別②配置更改首先,將data下的coco128.yaml文件復制,粘結在data目錄下,改成自己的名字(如lubiao.yaml),然后修改文件里的內容:1)修改path/train/val/test的目錄路徑為自定義數據集路徑;2)修改path/train/val/test的目錄路徑為自定義數據集路徑;3)將nc(numberofclasses)改為3;4)修改Names為自己數據的類別名;5)注釋掉Download,否則會自動下載,具體如圖4-13所示。另外,在列表中的models里選擇自己需要的模型,并將模型中的類別數nc修改成3,這里選擇的模型是yolov5s.yaml,如圖9-19所示。圖8-19配置更改示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別圖8-20yolov5s.yaml模型示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別模型訓練之前還需要更改train.py中的參數,具體如圖9-21所示。圖8-21訓練模型參數更改示意圖③
訓練做好上述準備后,直接運行train.py即可完成訓練。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別(3)測試訓練好的權重會保存在runs/train/exp中,用訓練好的權重去做任務時,需要修改detect.py的參數配置,具體如圖9-23所示。更改保存參數配置后,直接運行detect.py,完成檢測。部分檢測結果如圖9-24所示。圖8-23測試程序更改參數配置示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.2.3
基于YOLOv5的交通標志檢測與識別(a)
(b)(c)
圖8-24部分檢測結果圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3基于卷積神經網絡的車牌定位與識別8.3.1車牌特征8.3.2車牌定位與識別方案設計8.3.3基于YOLOv5和LPRNET的車牌定位與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.1車牌特征
目前,我國汽車保有量快速增長,這極大地方便了人們的出行,但同時也帶來了城市道路擁堵、交通事故頻發(fā)等社會問題。為了解決這些問題,除了依靠交通法規(guī)之外還希望建立一套完整的智能交通系統(tǒng)來合理管理交通流量,車牌識別就是其中一項關鍵技術。車牌定位與識別的主要任務是指將圖片或者視頻中的車牌位置框選出來并識別除其中的車牌信息。本部分內容主要基于Python語言和OpenCV庫(cv2)進行車牌區(qū)域定位和車牌字符識別。本節(jié)將對車牌定位與識別方法進行詳細講解。
這里使用的車牌定位和識別方法主要應用于民用汽車號牌,一些特殊號牌的汽車類型例如軍車、武警、外籍以等暫不適用此方法。我們在這里僅選取民用汽車里的小型和大型汽車作為分析對象。并按照《中華人民共和國公共安全行業(yè)標準GA36-2014中華人民共和國機動車號牌》來展現出其相關的車牌機制標準。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.1車牌特征類別外廓尺寸(mm)大型汽車號牌前:440×140后:440×220掛車號牌440×220使館汽車號牌440×140領館汽車號牌440×140警用汽車號牌440×140新能源汽車號牌440×140小型汽車號牌440×140表8-2機動車號牌規(guī)則表8-2是我國部分機動車型號和規(guī)格信息,根據相關標準和要求,我國對不同車牌型號界定的標準不同,這在某種概念上能夠減少一定的車輛識別的難度。(1)尺寸規(guī)格哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.1車牌特征(2)序號編碼規(guī)則基本來講,我國機動車牌型號由7個字符固定組成,圖8-25為機動車號牌規(guī)格示意圖。數字第1位都是各個省,或者是自治區(qū)的簡稱,即“京”、“滬”、“津”等,有31個簡稱。第2位為發(fā)證照及監(jiān)督機關的代號,編號是英文大寫字母。后五位由00001~99999個不同排序的阿拉伯數字組成,一般序號只要是超過了10萬,就會由A、B、C等24個大寫英文字母來代替,剔除I和O不能使用。圖8-25機動車號牌規(guī)則示意圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.1車牌特征(3)顏色規(guī)則現階段,我國的機動車輛車牌顏色具體展現為:白字藍底的小型民用車輛、黑字黃底的大型民用車輛、黑字綠底的新能源車輛、紅“WJ”字樣白底的武警專用車輛、黑字綠白底漸變的小型新能源車輛、白字黑底的外籍車輛、白字綠底的農用車輛、紅字白底的試用車和臨時車輛。如圖9-26展示的三個車牌號分別為小型車輛、大型車輛和新能源車輛號牌。a小型民用車牌號
b大型民用車牌號C新能源車牌圖8-26部分類型車號牌效果展示圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3基于卷積神經網絡的車牌定位與識別8.3.1車牌特征8.3.2車牌定位與識別方案設計8.3.3基于YOLOv5和LPRNET的車牌定位與識別哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計
一個完整的車牌識別系統(tǒng)閉應包括車輛檢測、圖像采集、圖像預處理、車牌定位、字符分割、字符識別等單元。當車輛到達觸發(fā)圖像采集單元時,系統(tǒng)采集當前的視頻圖像。車輛識別單元對圖像進行處理,定位出牌照位置,再將車牌中的字符分割出來進行識別,然后組成車牌號碼輸出。車牌識別系統(tǒng)原理如圖8-27所示。車輛圖像采集圖像預處理車牌定位字符分割字符識別輸出結果圖8-27車牌識別系統(tǒng)原理圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計1.圖像預處理為了用于牌照的分割和牌照字符的識別,原始圖象應具有適當的亮度,較大的對比度和清晰可辯的牌照圖象。但由于該系統(tǒng)的攝像部分工作于開放的戶外環(huán)境,加之車輛牌照的整潔度、自然光照條件、拍攝時攝像機與牌照的矩離和角度以及車輛行駛速度等因素的影響,牌照圖象可能出現模糊、歪斜和缺損等嚴重缺陷,因此需要對原始圖象進行識別前的預處理。因此,讀入圖像后,對圖像進行灰度化、去噪等預處理,這些預處理方法可有效篩選出關鍵信息并去除影響最終效果無關的信息,參考代碼如下:#圖像去噪灰度處理
defgray_guss(image):
#高斯去噪
image=cv2.GaussianBlur(image,(3,3),0)
#灰度處理
gray_image=cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
returngray_image哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計2、車牌定位從預處理后的汽車圖像中分割出車牌圖像。即在一幅車輛圖像中找到車牌所在的位置。目前,我國所有類型汽車車牌大小規(guī)格相差不大,基本上長寬比是固定不變的。通常情況下,車牌的邊緣信息都是比較多的,它們主要用于檢測車牌目標車牌區(qū)域內的明顯亮度變化所展現是邊緣信息車牌檢測算法,這個算法的優(yōu)點在于操作難度低、容易實現檢測目的,但不足的是僅僅依靠車牌邊緣信息是不能夠解決復雜情況的問題。基于邊緣的定位算法流程如圖9-28所示。圖像預處理是否輸入車牌圖像邊緣檢測數學形態(tài)學連通域分析輸出車牌位置丟棄滿足集合特征圖8-28基于邊緣信息的車牌定位算法流程圖哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計參考代碼如下:defget_carLicense_img(image):
gray_image=gray_guss(image)
#sobel算子邊緣檢測(做了一個y方向的檢測)
Sobel_x=cv2.Sobel(gray_image,cv2.CV_16S,1,0)
#Sobel_y=cv2.Sobel(image,cv2.CV_16S,0,1)
absX=cv2.convertScaleAbs(Sobel_x)#轉回uint8image=absX
#自適應閾值處理
ret,image=cv2.threshold(image,0,255,cv2.THRESH_OTSU)
#閉運算,是白色部分練成整體
kernelX=cv2.getStructuringElement(cv2.MORPH_RECT,(17,5))
image=cv2.morphologyEx(image,cv2.MORPH_CLOSE,kernelX,iterations=3)
#去除一些小的白點
kernelX=cv2.getStructuringElement(cv2.MORPH_RECT,(20,1))
kernelY=cv2.getStructuringElement(cv2.MORPH_RECT,(1,19))
#膨脹,腐蝕
image=cv2.dilate(image,kernelX)
image=cv2.erode(image,kernelX)
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計#腐蝕,膨脹
image=cv2.erode(image,kernelY)
image=cv2.dilate(image,kernelY)
#中值濾波去除噪點
image=cv2.medianBlur(image,15)#輪廓檢測
#cv2.RETR_EXTERNAL表示只檢測外輪廓
#cv2.CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需4個點來保存輪廓信息
contours,hierarchy,=cv2.findContours(image,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
#篩選出車牌位置的輪廓
#這里只做了一個車牌的長寬比在2.5:1到5.5:1之間這樣一個判斷
foritemincontours:
rect=cv2.boundingRect(item)
x=rect[0]
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計y=rect[1]
weight=rect[2]
height=rect[3]if(weight>(height*2.5))and(weight<(height*5.5)):
image=origin_image[y:y+height,x:x+weight]
returnimage
#else:print("比例不合適")通常情況下,邊緣檢測和顏色定位兩者相融合,提高定位的準確度,主要采用HSV模型進行判斷和識別。HSV模型是圓錐狀的模型,它主要依靠顏色單元來實現,HSV模型與RGB模型兩者不同點在于:HSV模型3個分量分別代表各自的信息,比如H是指色調,S是指飽和度,V是指亮度。哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計通過研究可得,當H處于
125-150區(qū)間的時候,代表顏色是藍色。這項結論可以用來推斷車牌顏色為藍色的車牌的檢測,當H處于
15-45區(qū)間時也是一樣的道理,它可以用于車牌顏色為黃色的車牌檢測,當H處于
45-90區(qū)間時,它可以用于車牌顏色為綠色的車牌檢測。因此,在確定了HSV模型的閾值之后,可以根據顏色來判定車牌具體定位。需要注意的是,如果輸入圖像格式不是HSV格式,需要轉換圖像格式,將圖像格式轉換成HSV格式。參考代碼如下:哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計def__preTreatment(self,car_pic):
iftype(car_pic)==type(""):
img=self.__imreadex(car_pic)
else:
img=car_pic
pic_hight,pic_width=img.shape[:2]
ifpic_width>self.MAX_WIDTH:
resize_rate=self.MAX_WIDTH/pic_width
img=cv2.resize(img,(self.MAX_WIDTH,int(pic_hight*resize_rate)),
interpolation=cv2.INTER_AREA)#圖片分辨率調整
kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)#定義一個核
img=cv2.filter2D(img,-1,kernel=kernel)#銳化
blur=self.cfg["blur"]
#高斯去噪
ifblur>0:
img=cv2.GaussianBlur(img,(blur,blur),0)
oldimg=img
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#cv2.imshow('GaussianBlur',img)
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計kernel=np.ones((20,20),np.uint8)
img_opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)#開運算
img_opening=cv2.addWeighted(img,1,img_opening,-1,0);#與上一次開運算結果融合
#cv2.imshow('img_opening',img_opening)#找到圖像邊緣
ret,img_thresh=cv2.threshold(img_opening,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#二值化
img_edge=cv2.Canny(img_thresh,100,200)
#cv2.imshow('img_edge',img_edge)
#使用開運算和閉運算讓圖像邊緣成為一個整體
kernel=np.ones((self.cfg["morphologyr"],self.cfg["morphologyc"]),np.uint8)
img_edge1=cv2.morphologyEx(img_edge,cv2.MORPH_CLOSE,kernel)#閉運算
img_edge2=cv2.morphologyEx(img_edge1,cv2.MORPH_OPEN,kernel)#開運算
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計
#cv2.imshow('img_edge2',img_edge2)#查找圖像邊緣整體形成的矩形區(qū)域,可能有很多,車牌就在其中一個矩形區(qū)域中
try:
image,contours,hierarchy=cv2.findContours(img_edge2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
exceptValueError:
#ValueError:notenoughvaluestounpack(expected3,got2)
#cv2.findContours方法在高版本OpenCV中只返回兩個參數
contours,hierarchy=cv2.findContours(img_edge2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
contours=[cntforcntincontoursifcv2.contourArea(cnt)>self.Min_Area]
#逐個排除不是車牌的矩形區(qū)域
car_contours=[]
forcntincontours:
哈爾濱理工大學HarbinUniversityof
Science
and
Technology電子信息工程系DepartmentofElectronicInformation8.3.2車牌定位與識別方案設計#框選
生成最小外接矩形
返回值(中心(x,y),(寬,高),旋轉角度)rect=cv2.minAreaRect(cnt)#print('寬高:',rect[1])
area_width,area_height=rect[1]
#選擇寬大于高的區(qū)域
ifarea_width<area_height:
area_width,area_height=area_height,ar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖品采購合同范例
- 主播簽約商家合同范例
- 代理入金合同范例
- 親戚之間贈與合同范例
- 企業(yè)設備抵押合同范例
- 人才選拔合同范例
- 農村農田過戶合同范例
- 分車協議合同范本
- 入股農場合同范例
- 上海環(huán)保市政工程合同范例
- 《無機化學》課件-離子鍵
- 醫(yī)院實驗室生物安全風險評估表
- 關于境內機構境外放款登記業(yè)務的申請書【模板】
- 九三學社申請入社人員簡歷表
- 2024年湖南株洲市天元區(qū)社區(qū)專職工作者招聘筆試沖刺題(帶答案解析)
- 腎臟疾病的早期發(fā)現和治療
- 村級財務監(jiān)督培訓課件
- 2024年赤峰職業(yè)技術學院高職單招(英語/數學/語文)筆試歷年真題摘選含答案解析
- 大數據在國家安全與防控中的作用
- 水電廠設備分析報告
- 電腦一體機技術方案
評論
0/150
提交評論