基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計_第1頁
基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計_第2頁
基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計_第3頁
基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計_第4頁
基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

目錄

1引言............................................................................................................................1

1.1項目背景......................................................................................................1

1.2開發(fā)環(huán)境與工具..........................................................................................2

1.2.1Python簡介..........................................................................................2

1.2.2PyTorch簡介........................................................................................2

1.2.3YOLOv3簡介..........................................................................................2

1.2.4CRNN簡介..............................................................................................3

1.2.5PyCharm簡介........................................................................................3

1.2.6Python第三方庫簡介..........................................................................3

2需求分析....................................................................................................................4

2.1可行性需求分析..........................................................................................4

2.2數(shù)據(jù)采集功能分析......................................................................................4

2.3關(guān)鍵技術(shù)分析..............................................................................................5

2.3.1數(shù)據(jù)采集技術(shù).......................................................................................5

2.3.2數(shù)據(jù)集可視化技術(shù)...............................................................................6

2.3.3卷積神經(jīng)網(wǎng)絡(luò)原理...............................................................................6

2.3.4模型的訓(xùn)練與預(yù)測...............................................................................7

3數(shù)據(jù)采集....................................................................................................................8

3.1數(shù)據(jù)集需求分析..........................................................................................8

3.2數(shù)據(jù)集獲取分析..........................................................................................8

3.3編程實現(xiàn)......................................................................................................9

4數(shù)據(jù)集處理..............................................................................................................11

4.1數(shù)據(jù)預(yù)處理................................................................................................11

4.2數(shù)據(jù)增強....................................................................................................11

4.3切分訓(xùn)練集與測試集................................................................................13

5模型構(gòu)建及評估分析..............................................................................................16

5.1模型構(gòu)建....................................................................................................16

I

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5.1.1模型網(wǎng)絡(luò)結(jié)構(gòu).....................................................................................16

5.1.2創(chuàng)建模型.............................................................................................18

5.2模型編譯....................................................................................................25

5.2.1優(yōu)化器設(shè)置.........................................................................................25

5.2.2損失函數(shù)設(shè)置.....................................................................................26

5.3模型訓(xùn)練與調(diào)優(yōu)........................................................................................34

5.3.1模型訓(xùn)練設(shè)置.....................................................................................34

5.3.2學(xué)習(xí)率調(diào)優(yōu).........................................................................................38

5.3.3batch_size設(shè)置................................................................................38

5.4模型部署....................................................................................................39

5.4.1系統(tǒng)前端設(shè)計.....................................................................................39

5.4.2系統(tǒng)后端部署.....................................................................................39

5.4.3設(shè)計效果展示及分析.........................................................................42

6小結(jié)..........................................................................................................................44

參考資料.........................................................................................................................46

II

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

基于YOLOv3+CRNN模型的車牌識別系統(tǒng)設(shè)計

1引言

當(dāng)下社會的科技發(fā)展速度日新月異,隨之而來的互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、移動互

聯(lián)網(wǎng)及社交網(wǎng)絡(luò)等技術(shù)的涌現(xiàn),催生了人工智能技術(shù)的崛起。作為一個龐大的

研究領(lǐng)域,人工智能涵蓋了多個子領(lǐng)域,包括機器學(xué)習(xí)、深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、

計算機視覺、自然語言處理等。人工智能技術(shù)在未來的發(fā)展前景令人矚目,它

為機器人技術(shù)、醫(yī)療技術(shù)、物流運輸?shù)阮I(lǐng)域提供全新解決方案,為人類社會帶

來革命性的改變。

隨著時代的變遷,人工智能正以驚人的速度融入我們的生產(chǎn)和生活中。它

的應(yīng)用不僅能極大地提高工作效率和降低成本,還能為經(jīng)濟和社會發(fā)展注入新

的能量。從人臉識別登機、無人超市、多功能巡邏機器人到智慧醫(yī)療等,人工

智能技術(shù)正在不斷拓展,推進(jìn)著人類生產(chǎn)和生活方式的巨大變革。越來越多的

國家和地區(qū)已把人工智能納入國家發(fā)展戰(zhàn)略中,將其視為推動經(jīng)濟轉(zhuǎn)型、改善

民生福祉的重要工具,以把握這一重要發(fā)展機遇。

1.1項目背景

隨著人工智能時代的到來,人工智能技術(shù)在社會中的應(yīng)用越來越廣泛。在

我們?nèi)粘5纳钪?,智能手機已不再是傳統(tǒng)手機的簡單通訊工具,它已經(jīng)具備

了人臉識別、語音識別、指紋識別等人性化功能。與此同時,經(jīng)濟社會的快速

發(fā)展和機動車保有量的不斷增長,已經(jīng)成為交通擁堵和車輛管理效率低下的重

要問題。為此,設(shè)計一個車牌識別系統(tǒng)來監(jiān)控車輛情況,以提高車輛管理效率

和緩解道路交通壓力,顯得十分必要。車牌號碼是唯一可以在公共場合確定汽

車身份的標(biāo)識證書,因此車牌識別系統(tǒng)成為解決這一問題的理想方案。

隨著大數(shù)據(jù)和人工智能技術(shù)的不斷發(fā)展,智能車牌識別已經(jīng)成為現(xiàn)代智能

系統(tǒng)的重要組成部分,并得到了廣泛的應(yīng)用,如高速公路、停車場、十字路口

等場景。智能車牌識別技術(shù)在數(shù)據(jù)處理、自適應(yīng)學(xué)習(xí)和特殊場景訓(xùn)練等方面得

到了顯著提升,具備更強的容錯性和強壯性。通過利用車牌自動識別和跟蹤技

術(shù),我們能夠有效地降低車輛管理成本,規(guī)范車輛行為,從而為社會的穩(wěn)定和

恢復(fù)提供堅實的保障。

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

1.2開發(fā)環(huán)境與工具

1.2.1Python簡介

Python是一門高級編程語言,由GuidoRossum于1989年創(chuàng)造。2005年至

2012年期間,大量應(yīng)用Python的谷歌引起了廣泛關(guān)注,進(jìn)一步推動了Python

語言的發(fā)展。OpenStack框架是2012年云計算的主要發(fā)展方向之一,其中

Python也扮演了重要的開發(fā)角色,使得Python在當(dāng)時備受矚目。隨著2014年

人工智能的興起,Python再度高調(diào)亮相。事實上,Python內(nèi)置了大量第三方庫,

非常適合用來開發(fā)算法;同時,Python具有簡單易學(xué)、開發(fā)效率高等特點,因

此Python逐漸成為了AI開發(fā)的熱門語言。2017年,Python也走進(jìn)了普羅大眾

視野,成為學(xué)科教育的一門必修課程。如今,Python已成為一門廣泛應(yīng)用于網(wǎng)

絡(luò)爬蟲、機器學(xué)習(xí)、數(shù)據(jù)分析和可視化等多領(lǐng)域的高級編程語言。最重要的是,

Python具有開源(免費)的特點、豐富的庫、支持跨平臺和可移植性強等優(yōu)勢。

1.2.2PyTorch簡介

PyTorch是Facebook開源的,專為使用GPU加速深度神經(jīng)網(wǎng)絡(luò)編程的

Torch的Python版本。Torch是一種經(jīng)典的張量庫,用于處理多維矩陣數(shù)據(jù),

被廣泛應(yīng)用于機器學(xué)習(xí)和其他數(shù)學(xué)密集型應(yīng)用。PyTorch采用動態(tài)圖形而不是

TensorFlow的靜態(tài)圖形,能夠根據(jù)計算需求實時調(diào)整圖形。然而,由于Torch

語言使用的是Lua,因此在國內(nèi)已經(jīng)較少見,并逐漸被支持Python的

TensorFlow所取代。作為經(jīng)典機器學(xué)習(xí)庫Torch的Python端口,PyTorch為使

用Python語言的用戶提供了更為便利的編程選擇。實現(xiàn)yolov3是通過PyTorch

來構(gòu)建的。

1.2.3YOLOv3簡介

YOLO(YouOnlyLookOnce)是JosephRedmon,AliFarhadi等人在2015

年提出的一種高速目標(biāo)檢測方法,至今已經(jīng)發(fā)展出了YOLOv1,YOLO9000,以及

YOLOv3三個版本,而在保持高精度的情況下YOLOv3的檢測速度仍可以達(dá)到51

ms/幀,是相對目前所有方法來說,速度最快的。YOLOv3模型相較之前復(fù)雜了許

多,可以通過改變模型結(jié)構(gòu)來權(quán)衡速度和精度,而且保留了很多v2和v1的特性。

除了網(wǎng)絡(luò)結(jié)構(gòu),其余的沒有太大變化,主要是將當(dāng)今一些較好的檢測思路融入

到Y(jié)OLO中,在保持速度優(yōu)勢的前提下,進(jìn)一步提高檢測精度,特別是小物體的

檢測能力。具體來說,YOLOv3主要改進(jìn)了網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)特性和后續(xù)計算。

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

1.2.4CRNN簡介

CRNN的全稱是ConvolutionalRecurrentNeuralNetwork,是一種卷積循

環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),用于不定長度文本序列的端到端識別。相較于先切割單個文

本,CRNN采用將文本識別轉(zhuǎn)化為時變序列學(xué)習(xí)問題的方式,實現(xiàn)基于圖像的序

列識別。CRNN是一種當(dāng)前廣泛應(yīng)用于圖像識別的模型,它可以識別長文本序列。

該模型由CNN特征提取層和BLSTM序列特征提取層組成,實現(xiàn)了端到端的聯(lián)合

訓(xùn)練。CRNN利用BLSTM和CTC部件學(xué)習(xí)字符圖像中的上下文關(guān)系,提高了文本

識別的準(zhǔn)確率,從而使得模型更加健壯可靠。在預(yù)測過程中,標(biāo)準(zhǔn)的CNN網(wǎng)絡(luò)

用于提取文本圖像的特征,BLSTM則通過融合特征向量來提取字符序列的上下文

特征,最終,通過轉(zhuǎn)錄層(CTCrule)進(jìn)行預(yù)測,可得到文本序列的概率分布。

1.2.5PyCharm簡介

PyCharm是一款功能齊全的Python集成開發(fā)環(huán)境(IDE),它包含了一系列能

夠幫助用戶提高Python編程效率的工具,比如調(diào)試器、代碼語法高亮、項目管

理、代碼跳轉(zhuǎn)、智能提示、自動補全、單元測試及版本控制等。此外,該IDE

還提供了一些高級功能,例如支持使用Django框架進(jìn)行專業(yè)的Web開發(fā)。因此,

PyCharm已成為編寫Python文件的熱門開發(fā)環(huán)境之一。

1.2.6Python第三方庫簡介

NumPy:NumPy是一款功能強大的Python庫,專門用于進(jìn)行多維數(shù)組計算。

該庫的名稱來源于Numerical和Python這兩個單詞,提供了許多常用的庫函數(shù)

和操作,可以更加便捷地進(jìn)行數(shù)值計算。NumPy在數(shù)據(jù)分析和機器學(xué)習(xí)等領(lǐng)域得

到廣泛應(yīng)用。在使用Python的第三方庫之前,先進(jìn)行安裝。

Cv2:OpenCV2(OpenSourceComputerVisionLibrary),即開源計算機

視覺庫,是一個開放源代碼的平臺,并提供了強大的圖片處理功能。它涵蓋了

圖像處理和計算機視覺的很多通用算法,具有廣泛的應(yīng)用前景。

Tensorflow:開源的深度學(xué)習(xí)框架,廣闊應(yīng)用于圖形分類、音頻處理、系統(tǒng)、

和自然語言處理等,是深度學(xué)習(xí)中非常熱門的框架。

PIL:Pillow是Python中常用的基礎(chǔ)圖像處理庫,主要用于圖像的基本操

作,例如裁剪、大小調(diào)整和顏色處理等。相比之下,OpenCV和Scikit-image功

能更為豐富,但使用復(fù)雜度也更高,它們主要應(yīng)用于機器視覺、圖像分析等領(lǐng)

域,例如人臉識別。

matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、扇形

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖、散點圖、直方圖等等。

torchvision:torchvision是一個獨立于PyTorch的Python庫,其中包括

流行數(shù)據(jù)集、模型架構(gòu)和常見計算機視覺圖像轉(zhuǎn)換工具。主要面向圖像操作方

面的應(yīng)用。

tqdm:tqdm是一個快速、易于擴展的進(jìn)度條提示模塊。

Scipy:Scipy是一個基于Numpy的Python模塊,集成了多種數(shù)學(xué)算法和方

便的函數(shù)。

H5py:讀寫超過內(nèi)存的大數(shù)據(jù)。

2需求分析

2.1可行性需求分析

1.技術(shù)可行性

深度學(xué)習(xí)是一種特殊的機器學(xué)習(xí),是借鑒了人腦由很多神經(jīng)元組成的特性

而形成的一個框架。相對于普通的機器學(xué)習(xí),深度學(xué)習(xí)在海量數(shù)據(jù)情況下的效

果要比機器學(xué)習(xí)更為出色??梢哉f目前所有應(yīng)用了人工智能的行業(yè),基本都用

到了深度學(xué)習(xí)模型。當(dāng)今時代,卷積神經(jīng)網(wǎng)絡(luò)是目前深度學(xué)習(xí)領(lǐng)域非常熱門的

技術(shù),在計算機視覺領(lǐng)域表現(xiàn)尤為突出。它在圖像目標(biāo)檢測、跟蹤、行為識別、

圖像分類和圖像分割等領(lǐng)域廣泛應(yīng)用。而用Python來實現(xiàn)深度學(xué)習(xí)具有開發(fā)效

率高,簡單、免費、兼容性、面向?qū)ο?、豐富的庫、規(guī)范的代碼、可擴展性和

可嵌入性,修改容易,不需考慮垃圾回收內(nèi)存泄露。利用Pycharm作為Python

的編譯平臺可以更快速編寫代碼,便于調(diào)試。

2.項目可行性

車牌識別在社會日常中有廣泛的應(yīng)用,無論是小區(qū),停車場,路口,還是

高速公路,對車輛進(jìn)行身份檢測的地方都會用到。本項目主要對車牌各種漢字,

數(shù)字與字母的組成進(jìn)行檢測和識別,利用YOLOv3對圖片內(nèi)容是否存在車牌進(jìn)行

檢測,通過CRNN進(jìn)行識別后的內(nèi)容是否與真實車牌號一致,從網(wǎng)上下載VOC2007

標(biāo)準(zhǔn)數(shù)據(jù)集(已進(jìn)行標(biāo)注)準(zhǔn)備數(shù)據(jù)集,并進(jìn)行數(shù)據(jù)集處理和網(wǎng)絡(luò)訓(xùn)練,最后

進(jìn)行訓(xùn)練結(jié)果預(yù)測,進(jìn)而可以輸入圖片進(jìn)行任意檢測。

2.2數(shù)據(jù)采集功能分析

此次項目的數(shù)據(jù)來源中科大團隊在ECCV2018國際會議上發(fā)表了論文,題為

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

《TowardsEnd-to-EndLicensePlateDetectionandRecognition:ALarge

DatasetandBaseline》。該論文提出了一種端到端的車牌檢測和識別方法,并

提供了一個大型的車牌數(shù)據(jù)集和基線模型。,網(wǎng)址如下:

/mirrors/detectrecog/ccpd?utm_source=csdn_git

hub_accelerator

CCPD2019車牌數(shù)據(jù)集是用來識別車牌的大型數(shù)據(jù)量的數(shù)據(jù)集,源于中科大

的科研人員收集而構(gòu)成的。數(shù)據(jù)集全都采集于安徽合肥的各種車型(不包括新

能源汽車),數(shù)據(jù)集包括近30萬張圖片,大小為720*1160*3。

其中各類別車牌介紹有如圖2-1所示:

圖2-1車牌類別

2.3關(guān)鍵技術(shù)分析

2.3.1數(shù)據(jù)采集技術(shù)

數(shù)據(jù)采集技術(shù)主要通過下載中科大團隊建立的CCPD2019數(shù)據(jù)集,于源項目

下圖2-2給出的網(wǎng)盤地址下載:

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖2-2數(shù)據(jù)集下載

2.3.2數(shù)據(jù)集可視化技術(shù)

把數(shù)據(jù)通過可視化傳達(dá)出數(shù)據(jù)的見解的技術(shù),主要是數(shù)據(jù)以信息圖形的形

式展示,用以了解數(shù)據(jù)中的關(guān)系。通過數(shù)據(jù)的可視化,可以清晰直觀地了解圖

片信息之間的相關(guān)屬性與聯(lián)系。

可視化技術(shù)在計算機系統(tǒng)的大量數(shù)據(jù)以圖片形式呈現(xiàn),給予分析任務(wù)有很

大的幫助,了解各種車牌在不同時間,不同地點,不同角度等不同環(huán)境下的可

視化,以供研究。

2.3.3卷積神經(jīng)網(wǎng)絡(luò)原理

卷積神經(jīng)網(wǎng)絡(luò)是一種用于分析視覺圖像的人工神經(jīng)網(wǎng)絡(luò),使用卷積運算來

代替矩陣乘法。它主要用于圖像識別和處理。卷積神經(jīng)網(wǎng)絡(luò)的工作過程可以分

為兩個主要步驟:第一步是通過卷積、激活函數(shù)和池化來提取特征;第二步是

通過全連接層進(jìn)行分類識別。圖2-3為目標(biāo)識別卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖2-3手寫識別卷積網(wǎng)絡(luò)結(jié)構(gòu)圖

2.3.4模型的訓(xùn)練與預(yù)測

在深度學(xué)習(xí)中模型模型不斷的訓(xùn)練與預(yù)測,從而達(dá)到預(yù)測精準(zhǔn),效果最佳,

發(fā)揮更大作用,更便利于人們專業(yè)或日常中所需。機器通過大量數(shù)據(jù)的測試?yán)?/p>

用,訓(xùn)練出模型,然后可以利用模型來進(jìn)行對特定目標(biāo)的預(yù)測,從而達(dá)到擬人

的識別效果。為了能夠做出更好的系統(tǒng),就需要對模型的不斷訓(xùn)練和預(yù)測。典

型的機器學(xué)習(xí)的模型訓(xùn)練與預(yù)測如圖2-4:

圖2-4機器學(xué)習(xí)訓(xùn)練與預(yù)測圖

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

3數(shù)據(jù)采集

車牌的數(shù)據(jù)集的采集需要采集兩種:(1)是包含車牌的車輛全貌的原圖片

用于預(yù)測定位,(2)是只包含車牌號碼的車牌矩形框用于文字識別。

3.1數(shù)據(jù)集需求分析

車牌定位數(shù)據(jù)集于2-2數(shù)據(jù)采集中,通過下載得到CCPD數(shù)據(jù)集。打開

MicrosoftEdge瀏覽器進(jìn)入mirrors/detectrecog/ccpd·GitCode。

在readme.md中通過百度網(wǎng)盤或谷歌網(wǎng)盤下載好CCPD數(shù)據(jù)集解壓后。所使

用的數(shù)據(jù)集格式是VOC格式。自建文件夾VOC2007后,分別建立

Annotations,ImageSets和JPEGImages三個二級目錄文件夾。把數(shù)據(jù)集存放入

VOC2007/JPEGImages中,展示如圖3-1:

圖3-1原車牌圖片數(shù)據(jù)集展示

3.2數(shù)據(jù)集獲取分析

車牌識別數(shù)據(jù)集就是OCR數(shù)據(jù)集,獲取OCR數(shù)據(jù)集的方式有兩種:一是直

接從網(wǎng)上下載CCPD已截出的車牌號數(shù)據(jù)集,第二種是根據(jù)車輛圖片自行制作截

圖車牌號圖片做成數(shù)據(jù)集。車牌號識別數(shù)據(jù)集制作從CCPD數(shù)據(jù)集中的原圖片截

取下來。展示為圖3-2:

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖3-2車牌號識別數(shù)據(jù)集展示

3.3編程實現(xiàn)

首先對下載好的車牌數(shù)據(jù)集進(jìn)行簡單的劃分為訓(xùn)練集和驗證集。

需單獨找到車牌號,CCPD圖片文件名的第五個字段專門表示車牌號。

需要按照三個字典表的順序

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

文件解析與圖片路徑生成:

切出車牌大小的區(qū)域圖片并標(biāo)注:

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

保存后展示即為圖3-2的車牌號識別數(shù)據(jù)集。

4數(shù)據(jù)集處理

4.1數(shù)據(jù)預(yù)處理

為了更好識別到原圖片的車牌號,需要更精確獲取原圖片中車牌的位置,

所以要用到數(shù)據(jù)標(biāo)注,數(shù)據(jù)標(biāo)注是對原圖片中目標(biāo)內(nèi)容的裁取。一般需要用

labelimg數(shù)據(jù)標(biāo)注軟件對目標(biāo)進(jìn)行標(biāo)注如圖4-1:

圖4-1數(shù)據(jù)標(biāo)注軟件

4.2數(shù)據(jù)增強

緣于原來的CCPD車牌數(shù)據(jù)集數(shù)量過于龐大,標(biāo)注所費事與費時過大,需要

更為快速地標(biāo)注到車牌號。由于車牌的的顏色大小的普遍性與一致性,可以編

寫數(shù)據(jù)標(biāo)注腳本get_xml.py以便捷迅速獲取車牌標(biāo)注文件。

首先導(dǎo)入包如圖4-2:

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖4-2導(dǎo)包

解析圖片與獲取文件,以及對圖片中車牌位置的處理:

圖4-3解析與獲取

文件生成入口包括各類標(biāo)簽名與文件保存路徑,保存到

VOC2007/Annotations:

圖4-4文件生成

運行后得到所有原圖片中包含車牌號矩形框的數(shù)據(jù)標(biāo)注文件:

圖4-5get_xml運行

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖4-6數(shù)據(jù)標(biāo)注文件

4.3切分訓(xùn)練集與測試集

在有JPEGImage包含原圖片和Annotations保存數(shù)據(jù)標(biāo)注文件后,需要劃

分訓(xùn)練集、測試集和驗證集,這三類會生成在ImageSets中,在ImageSets中

創(chuàng)建Main文件夾后分別創(chuàng)建test.txt、train.txt、trainval.txt、val.txt

用于存放數(shù)據(jù)。

voc_annotations.py用來生成切分的訓(xùn)練集、測試集與驗證集。

切分用的區(qū)分類別的文件路徑,文件主要是名為lincese的被標(biāo)注文件

圖4-7分類文件路徑

訓(xùn)練集+驗證集對測試集和訓(xùn)練集對驗證集的比例設(shè)為9:1

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖4-8兩個比例

指向數(shù)據(jù)集所在文件夾,默認(rèn)指向根目錄下的VOC數(shù)據(jù)集

圖4-9指向路徑

劃分主要代碼:

圖4-10劃分

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

生成切分為訓(xùn)練集、測試集和驗證集

圖4-11訓(xùn)練集測試集驗證集

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5模型構(gòu)建及評估分析

5.1模型構(gòu)建

(1)YOLOv3是一種快速的目標(biāo)檢測方法,首先是構(gòu)建YOLOv3使用的主干

提取網(wǎng)絡(luò)Darknet53后預(yù)測。

(2)OCR文字識別是通過圖形處理和模式識別對字符進(jìn)行識別,OCR文字

識別需要構(gòu)建CRNN模型來實現(xiàn)。

5.1.1模型網(wǎng)絡(luò)結(jié)構(gòu)

(1)

圖5-1Yolov3主干特征提取網(wǎng)絡(luò)Darknet53

YOLOv3基于DarkNet53的骨干網(wǎng)絡(luò)結(jié)構(gòu),以及使用殘差網(wǎng)絡(luò)進(jìn)行特征提取

的原理。在殘差卷積中,通過使用3x3的內(nèi)核和步長為2的卷積操作,在壓縮

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

輸入特征層的同時獲得特征層/圖層。在特征層上進(jìn)行連續(xù)的1x1卷積和3x3卷

積操作,并加上該層的輸入,形成殘差結(jié)構(gòu)。

此外,Darknet53的每個卷積部分都采用獨特的DarknetConv2D結(jié)構(gòu),并使

用L2正則化、BatchNormalization規(guī)范化和LeakyReLU。與正常的ReLU設(shè)置

負(fù)值為零不同,LeakyReLU為所有負(fù)值分配了一個非零斜率,在數(shù)學(xué)上可以表示

為:

圖5-2LeakyReLU

從主干特征提取網(wǎng)絡(luò)—>提取特征輸入圖片416x416

X3—>進(jìn)行下采樣,寬高壓縮,通道數(shù)不斷擴張—>獲取特征層,表示輸入

進(jìn)來的圖片的特征。

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

(2)

圖5-3CRNN網(wǎng)絡(luò)結(jié)構(gòu)圖

CRNN是一種網(wǎng)絡(luò)架構(gòu),由卷積層、循環(huán)層和轉(zhuǎn)錄層三部分組成,如圖所示。

其底層結(jié)構(gòu)包括以下三個步驟:1卷積層用于提取輸入圖像的特征序列;2循環(huán)

層用于預(yù)測特征序列的每一幀的標(biāo)簽分布;3轉(zhuǎn)錄層將循環(huán)層每幀的預(yù)測結(jié)果轉(zhuǎn)

化為標(biāo)簽序列。因此,CRNN的底部包含卷積層,用于自動提取特征序列;循環(huán)

層用于預(yù)測卷積層輸出的特征序列的每一幀;頂部的轉(zhuǎn)錄層將循環(huán)層的每幀預(yù)

測轉(zhuǎn)換為標(biāo)簽序列。雖然CRNN由不同類型的網(wǎng)絡(luò)架構(gòu)組成,如CNN和RNN,但

利用損失函數(shù)聯(lián)合訓(xùn)練可以提高整體性能。

5.1.2創(chuàng)建模型

(1)Darknet53網(wǎng)絡(luò)結(jié)構(gòu)代碼編程實現(xiàn):

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

殘差結(jié)構(gòu)采用了1x1卷積進(jìn)行通道數(shù)下降,并使用3x3卷積提取特征并實

現(xiàn)通道數(shù)上升。

DarkNet主干部分(展示部分)

由結(jié)構(gòu)圖每一個ResidualBlock塊堆疊的個數(shù)是[1,2,8,8,4]

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

由layer3、layer4、layer5得出三次最終特征提取的結(jié)果

圖5-4三次特征提取結(jié)果

YoloBody結(jié)構(gòu)代碼實現(xiàn):

從Darknet53主干特征提取網(wǎng)絡(luò)提取特征來獲取達(dá)到Y(jié)olo模型預(yù)測結(jié)果。

Yolo主體部分

得出結(jié)構(gòu)圖紅框的三個輸出特征層。

20

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

通道上的維度發(fā)生的變化即1x1卷積和3x1x1卷積變化。

make_last_layers里面一共有七個卷積,前五個是用于提取圖像特征的卷

積層。后兩個是針對這些特征進(jìn)行處理以獲得YOLO網(wǎng)絡(luò)預(yù)測結(jié)果的層。

測試打印三個紅框的形狀

結(jié)果互相對應(yīng):

圖5-5三個特征層輸出大小與紅框?qū)?yīng)

(2)CRNN網(wǎng)絡(luò)模型代碼的實現(xiàn)如下:

CRNN本體部分代碼

21

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

Init輸入的維度是(1,32,w)w寬度不需要限制。建立CNN模塊,搭建

兩層LSTM神經(jīng)網(wǎng)絡(luò)。

CNN建立的模塊:

車牌號的序列信息進(jìn)行特征提取后要識別信息在后接一個LSTM就可以

達(dá)到信息的預(yù)測了。雙向LSTM網(wǎng)絡(luò)層:

22

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

CNN卷積:

Forward函數(shù)部分,得到傳入圖片的卷積特征,B,512,1,*特征大小

BatchSize,512個通道,1指一行字符,*為寬度不確定。圖像寬度傳入LSTM,

通道數(shù)為特征。得到序列長度*BatchSize*預(yù)測類別

23

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

測試運行后得出:

圖5-6CRNN網(wǎng)絡(luò)模型測試結(jié)果

24

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5.2模型編譯

5.2.1優(yōu)化器設(shè)置

Yolo模型優(yōu)化器:

訓(xùn)練時需要調(diào)整的優(yōu)化器設(shè)置。

需要用到的optimizer_type優(yōu)化器種類為sgd,優(yōu)化器內(nèi)部使用momentum

參數(shù),weitght_decay權(quán)值衰減參數(shù)為5e-4防止過擬合。

根據(jù)優(yōu)化器種類選擇優(yōu)化器

圖5-7YOLO模型優(yōu)化器

CRNN模型優(yōu)化器:

CRNN用的優(yōu)化器簡單。

Optimizer優(yōu)化器放入Adam與訓(xùn)練學(xué)習(xí)率lr

Yolo模型計算損失函數(shù)時設(shè)置好的optimizer、lr與epoch

25

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

學(xué)習(xí)率函數(shù)lr_scheduler_func代碼為:

CRNN模型采用CTCloss函數(shù)

5.2.2損失函數(shù)設(shè)置

26

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

在本項目中主要以Yolo的損失函數(shù)為主,Yolo的損失函數(shù)的構(gòu)成有

loss_loc位置損失,表示標(biāo)注錨框的位置準(zhǔn)確性,loss_cls分類損失,表示框

內(nèi)對應(yīng)的目標(biāo)內(nèi)容的分類(在本項目中只有車牌一類),loss_conf置信度損失,

表示框內(nèi)是否包含目標(biāo)物體。

損失函數(shù)的主體,init里有anchors錨框,num_classes類別數(shù),

input_shape輸入圖片大小,cuda顯存設(shè)置,anchors_maskd九個先驗框:

Forward函數(shù)部分:

27

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

先驗框的位置調(diào)整參數(shù)與寬高調(diào)整參數(shù):

28

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

置信度參數(shù):

種類置信度參數(shù)

獲取網(wǎng)絡(luò)應(yīng)有的結(jié)果y_true,noobj_mask,box_loss_scale:

進(jìn)行結(jié)果解碼是否預(yù)測與真實高度重合。重合度過大為較為正確的特征的

則忽略。Xyhw偏移量,taegets真實值標(biāo)號,scaled_anchors錨框縮放的寬高,

in_h,in_w特征層大小與noobj_mask不包含物體掩碼。

圖5-8選擇最佳效果

29

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

取得目標(biāo)函數(shù)get_target的部分:

主要內(nèi)容是找到真實框是使用哪些標(biāo)號的先驗框來調(diào)整。

首先計算圖片數(shù)量,選取不包含物體的先驗框

get_target主體計算過程:

對于每一張圖片在BatchSize如果沒有真實框便跳過。有真實框則:

30

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

31

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

get_target方法得出真實框是用具體哪個先驗框調(diào)整的,用于上面結(jié)果解

碼。

Get_ignore忽略方法的部分:

該方法的主要內(nèi)容是找到預(yù)測的效果好但不是最佳來忽略,省去計算位置

損失。

32

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

33

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5.3模型訓(xùn)練與調(diào)優(yōu)

5.3.1模型訓(xùn)練設(shè)置

Yolo模型訓(xùn)練:

訓(xùn)練的要求:1、數(shù)據(jù)集滿足VOC格式,內(nèi)容有輸入圖片與標(biāo)簽(4數(shù)據(jù)集

處理中已滿足)2.判斷是否收斂需要損失函數(shù)3.每次訓(xùn)練的世代epoch包含若

干個步長step,每個訓(xùn)練步長step進(jìn)行一次梯度下降。

訓(xùn)練中需要注意的設(shè)置的參數(shù)與代碼調(diào)整:

Classes_path指向model_data下的txt,與訓(xùn)練的數(shù)據(jù)集相關(guān)

anchors_path先驗框?qū)?yīng)的文件txt與anchors_mask找到對應(yīng)的先驗框

對于不同數(shù)據(jù)集由于特征是通用的,因此可以使用通用的預(yù)訓(xùn)練權(quán)重。其

中最重要的是主干特征提取網(wǎng)絡(luò)的權(quán)重部分,它們用于提取特征。預(yù)訓(xùn)練權(quán)重

文件可以從網(wǎng)上下載。

輸入形狀大小一般416x416

加載主干網(wǎng)絡(luò)的預(yù)訓(xùn)練權(quán)重

凍結(jié)階段的訓(xùn)練參數(shù)

Init_Epoch模型當(dāng)前開始的訓(xùn)練世代從0開始

Freeze_Epoch凍結(jié)訓(xùn)練根據(jù)所需時間自行調(diào)整

Freeze_batch_size根據(jù)顯存自行調(diào)整

解凍階段的訓(xùn)練參數(shù)依上調(diào)整

10個epoch保存一次權(quán)值

34

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

在訓(xùn)練時10個epoch對驗證集進(jìn)行評估

訓(xùn)練集與驗證集的圖片標(biāo)簽路徑

獲取類別路徑與錨框路徑

開始創(chuàng)建yolo模型

根據(jù)預(yù)訓(xùn)練權(quán)重key與模型key進(jìn)行加載

獲取并記錄loss損失函數(shù)

讀取數(shù)據(jù)集對應(yīng)的txt

35

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

建議步長與總訓(xùn)練步長

開始模型訓(xùn)練

訓(xùn)練迭代步長為0或驗證迭代步長為0則數(shù)據(jù)集過小無法訓(xùn)練

訓(xùn)練gen與gen_val的數(shù)據(jù)加載,最后解凍訓(xùn)練

圖5-9Yolo模型訓(xùn)練

36

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

CRNN模型訓(xùn)練:

OCR部分的CRNN模型訓(xùn)練的配置

訓(xùn)練時的準(zhǔn)備:

加載CRNN模型

載入預(yù)訓(xùn)練模型

讀入?yún)?shù)

訓(xùn)練步驟的過程:

net調(diào)整訓(xùn)練模式,data用于圖片、目標(biāo)、目標(biāo)長度的遍歷,optimizer用

于清理梯度,criterion是CTCloss要求的輸入及batch_size參數(shù)等等

37

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖5-10CRNN模型訓(xùn)練

5.3.2學(xué)習(xí)率調(diào)優(yōu)

Yolo模型在開始訓(xùn)練前的學(xué)習(xí)率調(diào)整:

模型最大學(xué)習(xí)率1e-2與最小學(xué)習(xí)率為最大學(xué)習(xí)率的0.01

使用到的學(xué)習(xí)率下降方式為cos

根據(jù)以上batch_size的值(Freeze_batch_size)自行調(diào)整學(xué)習(xí)率

學(xué)習(xí)率下降的公式獲取

5.3.3batch_size設(shè)置

yolo模型batch_size的設(shè)置跟電腦的顯存大小有關(guān),由于本人機能限制的

顯存大小與batch_size受BatchNorm層影響最小為2,本項目設(shè)為4.

Freeze_batch_size為Unfreeze_batch_size的2倍,F(xiàn)reeze_batch_size

會影響到學(xué)習(xí)率的自行調(diào)整

38

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5.4模型部署

5.4.1系統(tǒng)前端設(shè)計

本車牌識別系統(tǒng)有多種預(yù)測測試的模式:predict單張圖片預(yù)測,video視

頻預(yù)測、fps幀數(shù)測試、dir_predict遍歷多張圖片預(yù)測、heatmap預(yù)測結(jié)果熱

力圖可視化等。

實現(xiàn)本系統(tǒng)是predict.py文件,通過mode修改可以多種預(yù)測。

首先初始化Yolo模型。

在本項目中主要任務(wù)是以檢測圖片為主,測試最基礎(chǔ)簡單的識別系統(tǒng)是否

完善,即模式為predict。

crop指的是是否單張圖片預(yù)測后截取目標(biāo),count指是否對目標(biāo)計數(shù)

當(dāng)模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論