【維普】軟件工程-基于YOLO技術(shù)的口罩佩戴識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
【維普】軟件工程-基于YOLO技術(shù)的口罩佩戴識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
【維普】軟件工程-基于YOLO技術(shù)的口罩佩戴識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
【維普】軟件工程-基于YOLO技術(shù)的口罩佩戴識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
【維普】軟件工程-基于YOLO技術(shù)的口罩佩戴識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄緒論本章節(jié)主要對(duì)口罩佩戴識(shí)別系統(tǒng)的研究背景和研究現(xiàn)狀進(jìn)行了詳細(xì)的分析。通過(guò)對(duì)目前疫情現(xiàn)象和口罩佩戴情況進(jìn)行分析,提出本系統(tǒng)的部分個(gè)性化功能及目標(biāo)。1.1研究背景隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,如今人臉識(shí)別已經(jīng)成為了人們生活中多個(gè)領(lǐng)域的應(yīng)用熱點(diǎn)。一方面,人臉識(shí)別使得我們的生活更加智能化,另一方面,個(gè)人身份信息泄露、各種高端詐騙方式層出不窮等問(wèn)題也是層出不窮,這也給人們生活帶來(lái)了極大威脅。而人臉圖像所包含的特征相對(duì)來(lái)說(shuō)要豐富得多,在識(shí)別時(shí)也不用和目標(biāo)進(jìn)行接觸,獲取圖像的途徑相對(duì)來(lái)說(shuō)也較為簡(jiǎn)單,因此在諸多領(lǐng)域被研究應(yīng)用。近二十年來(lái),人臉識(shí)別技術(shù)在刑事識(shí)別、智能視頻監(jiān)控、人機(jī)交互、人證比對(duì)、社交娛樂(lè)等諸多方面取得了重要進(jìn)展,但在現(xiàn)實(shí)生活中,由于面部表情變化、光照不均勻、遮擋等多種原因,以及遮擋的大小、形狀、類(lèi)型等都存在很大的不確定性,使得現(xiàn)有的識(shí)別方法難以適應(yīng)現(xiàn)實(shí)生活。此外,在2019年,新型肺炎在全球迅速傳播的情況下,人們?cè)谕獬龉矆?chǎng)所的時(shí)候,都需要戴上口罩,才能對(duì)其進(jìn)行有效的保護(hù)。但是,佩戴口罩會(huì)給人們的生活帶來(lái)很多問(wèn)題。比如,當(dāng)他們?cè)谏习啻蚩ǖ臅r(shí)候,由于口罩遮擋了一部分面孔,導(dǎo)致打卡設(shè)備不能正確地識(shí)別面孔,從而不能完成打卡任務(wù)。但是,如果摘掉口罩打卡,又會(huì)加大病毒傳染的風(fēng)險(xiǎn)?,F(xiàn)在,隨著“環(huán)境傳人”的流行,以及多個(gè)國(guó)家都出現(xiàn)了病毒的變異,大家都應(yīng)該自覺(jué)地戴上口罩,堅(jiān)定自己的信念,用科學(xué)的方法來(lái)應(yīng)對(duì)這場(chǎng)瘟疫。為了在實(shí)際應(yīng)用中實(shí)現(xiàn)高效的人臉識(shí)別,并為新型冠狀病毒的傳播提供更大的安全保護(hù),我們必須在口罩檢測(cè)的過(guò)程中,對(duì)被遮擋的面孔進(jìn)行身份驗(yàn)證,從而為構(gòu)建被遮擋的面孔實(shí)時(shí)識(shí)別系統(tǒng)奠定了堅(jiān)實(shí)的基礎(chǔ)[1]。1.2國(guó)內(nèi)外研究現(xiàn)狀近年來(lái),許多研究人員在受限條件下研究出了一些行之有效的算法,取得了較好的結(jié)果。然而,目前的人臉識(shí)別系統(tǒng)由于在實(shí)際應(yīng)用中存在局部遮擋,難以準(zhǔn)確地實(shí)現(xiàn)無(wú)限制條件下的人臉識(shí)別。最近幾年,國(guó)內(nèi)外研究者將以深度學(xué)習(xí)為基礎(chǔ),對(duì)有遮擋人臉有效識(shí)別問(wèn)題進(jìn)行了研究,并提出了很多有效的算法[2]。Wright等人[3]首先提出了一種基于稀疏表達(dá)的分類(lèi)(SRC)算法,以提高人臉識(shí)別的準(zhǔn)確率。針對(duì)這一問(wèn)題,提出了一種基于稀疏表達(dá)的人臉識(shí)別方法。然后通過(guò)對(duì)訓(xùn)練樣本的字典進(jìn)行求解,從而實(shí)現(xiàn)人臉圖像的分類(lèi)。這種算法在特征不敏感的情況下,可以進(jìn)行很好的圖像分類(lèi),但是其對(duì)于圖像的維數(shù)是比較敏感的。針對(duì)這一問(wèn)題,Wright[4]提出了一種魯棒SRC算法,但是這種算法對(duì)除遮擋之外的其他非面部因素非常敏感,易造成魯棒分類(lèi)器的混淆,從而造成局部混淆。施志剛等人[5]提出了基于權(quán)重矩陣的協(xié)作表達(dá)式分類(lèi)(CRC),以基于權(quán)重矩陣的協(xié)作表達(dá)式分類(lèi)(CRC)為基礎(chǔ),實(shí)現(xiàn)了基于權(quán)重矩陣的協(xié)作表達(dá)式分類(lèi),減少了分類(lèi)對(duì)象。這個(gè)項(xiàng)目提出了一種基于非遮擋區(qū)域的高權(quán)值編碼方法,使得圖像中的遮擋區(qū)域可以被忽略或者被忽略,但其核心問(wèn)題在于如何準(zhǔn)確地檢測(cè)出遮擋區(qū)域,避免了對(duì)遮擋區(qū)域的理解,提高了圖像中遮擋區(qū)域的識(shí)別效率。Zhou等人[6]提出基于Markov隨機(jī)場(chǎng)的稀疏誤差校正模型,利用遮擋誤差檢測(cè)遮擋區(qū)域,獲得遮擋支撐丟棄遮擋特征,通過(guò)無(wú)遮擋區(qū)域?qū)?yīng)的特征實(shí)現(xiàn)識(shí)別,達(dá)到高效率的識(shí)別結(jié)果。Sun等[7]針對(duì)多個(gè)被遮擋的面孔,從魯棒的深層特征中提取出多個(gè)被遮擋的面孔,分別提出了DeepID,DeepID2,DeepID2+三個(gè)網(wǎng)絡(luò)架構(gòu),并對(duì)多個(gè)被遮擋的面孔進(jìn)行了自下而上、不同尺寸的黑色塊體的多尺度遮擋試驗(yàn),結(jié)果表明,被遮擋的比例在20%以下。因此,Chan等人[8]提出了一種將卷積神經(jīng)網(wǎng)絡(luò)和局部二值模式相結(jié)合的框架,并提出了一種主成分分析的網(wǎng)絡(luò)。該網(wǎng)絡(luò)可以通過(guò)PCA濾波器提取出主成分特征,從而極大地過(guò)濾掉圖像中的遮擋特征,并可以有效地提高圖像的質(zhì)量。該算法還可以有效地消除圖像中的噪聲和失真,從而獲得更加清晰、準(zhǔn)確的圖像。但是,由于遮擋噪聲,使得PCANet的特征在很大程度上喪失了冗余性,李小薪等人[9]提出了局部球面規(guī)范化(LOF),將其與PCANet結(jié)合起來(lái)。近年來(lái)有一些方法在遮擋人臉識(shí)別中也取得了較好的效果。除了GoogleNet[10]和ResNet[10]等深度神經(jīng)網(wǎng)絡(luò),這些深度神經(jīng)網(wǎng)絡(luò)具有明顯的優(yōu)勢(shì),它們可以更好地處理復(fù)雜的數(shù)據(jù),并且可以更快地學(xué)習(xí)復(fù)雜的模型。傳統(tǒng)方法需要大量的參數(shù)來(lái)訓(xùn)練模型,而深度神經(jīng)網(wǎng)絡(luò)可以有效地避免這個(gè)問(wèn)題,因?yàn)樗鼈儾恍枰嗟膮?shù),而且能夠更快地學(xué)習(xí)復(fù)雜的模型。此外,深度神經(jīng)網(wǎng)絡(luò)還可以有效地避免過(guò)擬合問(wèn)題,因?yàn)樗鼈儾粫?huì)把所有數(shù)據(jù)都擬合在一起,而是能夠找到數(shù)據(jù)中的共性。徐迅[11]通過(guò)試驗(yàn),發(fā)現(xiàn)當(dāng)遮擋率為20%-30%的時(shí)候,其識(shí)別率可以達(dá)到98.2%。以上方法的主要目的是在人臉存在遮擋時(shí),能夠進(jìn)行快速準(zhǔn)確的識(shí)別。而本文主要研究的任務(wù)是:在新冠病毒肆虐的情況下,對(duì)人們外出時(shí)口罩佩戴的檢測(cè)。有遮擋人臉識(shí)別往往要結(jié)合有遮擋人臉識(shí)別,才能實(shí)現(xiàn)高精度人臉及口罩識(shí)別。因此,要實(shí)現(xiàn)對(duì)穿戴式口罩的識(shí)別,就必須對(duì)其進(jìn)行相應(yīng)的算法進(jìn)行研究,而到現(xiàn)在為止,還沒(méi)有一種高效的口罩識(shí)別方法?,F(xiàn)有的物體檢測(cè)算法可分為兩種,一種是預(yù)生成一個(gè)候選物體,另一種是端到端的學(xué)習(xí)。預(yù)生成候選盒是一種對(duì)象檢測(cè)算法,它首先對(duì)候選盒進(jìn)行歸一化處理,并對(duì)候選盒進(jìn)行特征抽取。接下來(lái),對(duì)于上述檢測(cè)模型能否將特征提取到CNN中,Ren等人[12]采用了區(qū)域候選網(wǎng)絡(luò)與檢測(cè)網(wǎng)絡(luò)共享全部卷積特征的方法,這樣既節(jié)省了計(jì)算費(fèi)用,又因?yàn)楹蜻x盒沒(méi)有提取太多重復(fù)的特征,從而提高了算法的檢測(cè)準(zhǔn)確性。由于預(yù)處理的候選盒具有較高的檢測(cè)率,但其檢測(cè)速度較慢,因此,本項(xiàng)目將重點(diǎn)研究一種無(wú)需預(yù)處理候選盒的深度學(xué)習(xí)方法。包括Redmon等人[13],通過(guò)回歸問(wèn)題的角度解決目標(biāo)檢測(cè)問(wèn)題,簡(jiǎn)化了流程,將檢測(cè)速度提升到了58.5幀的實(shí)時(shí)檢測(cè)水平的YOLO目標(biāo)檢測(cè)算法。但是,因?yàn)椴辉偕珊蜻x區(qū)域,所以導(dǎo)致了檢測(cè)的準(zhǔn)確率不高。為了在檢測(cè)的準(zhǔn)確率和速度上都能達(dá)到最優(yōu),Liu等人[14]提出了一種基于全卷積的單個(gè)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,它利用了多個(gè)不同尺寸的特征圖來(lái)提取特征,從而降低了訓(xùn)練參數(shù),解決了多尺度檢測(cè)問(wèn)題,并提高了檢測(cè)的速度。1.3研究目的與內(nèi)容在使用該系統(tǒng)時(shí),用戶(hù)需要先選擇本地的圖片或視頻,并發(fā)送到系統(tǒng)中。系統(tǒng)對(duì)圖片進(jìn)行預(yù)處理后,定位目標(biāo)人臉區(qū)域,然后在定位的人臉區(qū)域上識(shí)別是否戴口罩,最后輸出識(shí)別結(jié)果。根據(jù)以上描述,系統(tǒng)應(yīng)具備以下幾個(gè)功能:圖片選擇、圖片識(shí)別、結(jié)果輸出。添加的功能有:視頻選擇、視頻識(shí)別、結(jié)果輸出、攝像頭開(kāi)啟、攝像頭識(shí)別、結(jié)果輸出。選取不同的目標(biāo)檢測(cè)模型進(jìn)行對(duì)比實(shí)驗(yàn),對(duì)實(shí)驗(yàn)結(jié)果繪制表格分析。1.4論文結(jié)構(gòu)本文結(jié)構(gòu)將分為七個(gè)章節(jié),概述如下:第一章為緒論,作為論文的第一個(gè)章節(jié),本章節(jié)對(duì)基于YOLO目標(biāo)檢測(cè)的口罩佩戴識(shí)別系統(tǒng)的項(xiàng)目背景、研究現(xiàn)狀和研究目的與內(nèi)容進(jìn)行了描述,提出該課題所要實(shí)現(xiàn)的目標(biāo)。第二章為對(duì)本文涉及到相關(guān)基礎(chǔ)知識(shí)的概念進(jìn)行研究和闡述,如深度學(xué)習(xí)思想、神經(jīng)網(wǎng)絡(luò)理論等。第三章為口罩識(shí)別系統(tǒng)的需求分析,分別對(duì)功能需求、非功能需求和算法需求進(jìn)行分析闡述。第四章是對(duì)口罩識(shí)別系統(tǒng)的整體設(shè)計(jì),首先是數(shù)據(jù)集的制作,然后在前兩章的基礎(chǔ)上對(duì)基于PythonYOLOV4模型的設(shè)計(jì),對(duì)口罩佩戴識(shí)別系統(tǒng)的流程進(jìn)行描述。第五章是系統(tǒng)實(shí)現(xiàn),給出了每個(gè)功能模塊具體的界面顯示并對(duì)內(nèi)容詳細(xì)描述,同時(shí)選取了不同的模型進(jìn)行對(duì)比實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。第六章是系統(tǒng)測(cè)試將對(duì)實(shí)現(xiàn)的系統(tǒng)的環(huán)境進(jìn)行配置和測(cè)試。第七章為對(duì)本系統(tǒng)的總結(jié)與展望,總結(jié)系統(tǒng)的優(yōu)點(diǎn)和存在的不足,提出相應(yīng)的改進(jìn)方向。 第2章基本的相關(guān)理論概念2基本的相關(guān)理論概念詳細(xì)介紹相關(guān)的理論知識(shí)概念如神經(jīng)網(wǎng)絡(luò)理論、激活函數(shù)、深度學(xué)習(xí)思想等。2.1神經(jīng)網(wǎng)絡(luò)基礎(chǔ)理論神經(jīng)網(wǎng)絡(luò)是一種類(lèi)似于人類(lèi)神經(jīng)系統(tǒng)的計(jì)算模型,由大量的節(jié)點(diǎn)(神經(jīng)元)相互連接而成,用于實(shí)現(xiàn)復(fù)雜的非線(xiàn)性函數(shù)映射和模式識(shí)別等任務(wù)。2.1.1神經(jīng)網(wǎng)絡(luò)模型與淺層神經(jīng)網(wǎng)絡(luò)相比,深度神經(jīng)網(wǎng)絡(luò)需要更多的神經(jīng)元來(lái)進(jìn)行擬合。因?yàn)闇\層神經(jīng)網(wǎng)絡(luò)所需的神經(jīng)元較多,而深層神經(jīng)網(wǎng)絡(luò)所需的神經(jīng)元較少。這就是為何大部分的深度學(xué)習(xí)網(wǎng)絡(luò)更省力,但深度學(xué)習(xí)不易。這是由于深度網(wǎng)絡(luò)要求大量的數(shù)據(jù),并有良好的技術(shù)來(lái)匹配,并且他們傾向于在一個(gè)完整的數(shù)據(jù)集上訓(xùn)練[15]。下面的圖表2.1顯示了深度網(wǎng)路的不同架構(gòu)及其在訓(xùn)練時(shí)間與電腦資源上的效果。圖2.1簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的示意圖2.1.2激活函數(shù)激活函數(shù)是神經(jīng)網(wǎng)絡(luò)中的一種函數(shù),用于將神經(jīng)元的輸入信號(hào)進(jìn)行非線(xiàn)性變換,增強(qiáng)網(wǎng)絡(luò)的表達(dá)能力。[16]常見(jiàn)的激活函數(shù)包括:(1)Sigmoid函數(shù):sigmoid函數(shù)將實(shí)數(shù)映射到一個(gè)(0,1)之間的區(qū)間,其函數(shù)形式為f(x)

=

1/(1+exp(-x))。sigmoid函數(shù)常用于二分類(lèi)問(wèn)題的輸出層,但其容易出現(xiàn)梯度消失問(wèn)題。(2)Tanh函數(shù):tanh函數(shù)是sigmoid函數(shù)的一種變形,將實(shí)數(shù)映射到一個(gè)(-1,1)之間的區(qū)間,其函數(shù)形式為f(x)

=

(exp(x)

-

exp(-x))

/

(exp(x)

+

exp(-x))。tanh函數(shù)也容易出現(xiàn)梯度消失問(wèn)題。(3)ReLU函數(shù):ReLU函數(shù)是一種簡(jiǎn)單而有效的激活函數(shù),將所有負(fù)數(shù)輸入映射為0,而正數(shù)輸入不進(jìn)行變換,其函數(shù)形式為f(x)

=

max(0,

x)。ReLU函數(shù)在處理深層神經(jīng)網(wǎng)絡(luò)時(shí)具有良好的收斂性能,但容易出現(xiàn)神經(jīng)元死亡問(wèn)題。(4)Leaky

ReLU函數(shù):Leaky

ReLU函數(shù)是ReLU函數(shù)的一種改進(jìn)版本,在負(fù)數(shù)輸入時(shí)不再映射為0,而是將其乘以一個(gè)小于1的斜率系數(shù),其函數(shù)形式為f(x)

=

max(0.01x,

x)。Leaky

ReLU函數(shù)能夠一定程度上避免神經(jīng)元死亡問(wèn)題。(5)Softmax函數(shù):softmax函數(shù)常用于多分類(lèi)問(wèn)題的輸出層,將神經(jīng)元的輸出轉(zhuǎn)化為一個(gè)概率分布。其函數(shù)形式為f(x_i)

=

exp(x_i)

/

sum(exp(x_j)),其中sum(exp(x_j))表示所有輸出的指數(shù)函數(shù)之和。2.2感知機(jī)模型感知機(jī)是一種二元分類(lèi)器,可以用于對(duì)輸入數(shù)據(jù)進(jìn)行二分類(lèi)(如將圖像分為兩類(lèi))。它是一種最簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)模型,由兩層神經(jīng)元組成:輸入層和輸出層。感知機(jī)的輸入可以是任何數(shù)量的特征,每個(gè)特征都有一個(gè)對(duì)應(yīng)的權(quán)重。感知機(jī)的工作原理很簡(jiǎn)單:給定一個(gè)輸入向量x和一組權(quán)重向量w,將它們相乘并加上一個(gè)偏差值b,得到一個(gè)輸出y。如果輸出y大于等于0,則感知機(jī)預(yù)測(cè)該樣本屬于類(lèi)別1;如果輸出y小于0,則感知機(jī)預(yù)測(cè)該樣本屬于類(lèi)別-1。具體來(lái)說(shuō),感知機(jī)的模型可以表示為:y

=

f(w

*

x

+

b)其中,w是權(quán)重向量,x是輸入向量,b是偏差值,f是一個(gè)激活函數(shù)(通常為階躍函數(shù)),y是輸出值。

感知機(jī)的訓(xùn)練過(guò)程采用的是隨機(jī)梯度下降法(Stochastic

Gradient

Descent,SGD):對(duì)于每個(gè)訓(xùn)練樣本,通過(guò)比較感知機(jī)的輸出與真實(shí)標(biāo)簽,計(jì)算誤差并更新權(quán)重和偏差值,以最小化誤差。盡管感知機(jī)模型很簡(jiǎn)單,但它仍然是機(jī)器學(xué)習(xí)的基礎(chǔ)之一。感知機(jī)模型的一些變體,如多層感知機(jī)(Multilayer

Perceptron,MLP)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional

Neural

Network,CNN),在現(xiàn)代深度學(xué)習(xí)中被廣泛應(yīng)用[17]。多層感知機(jī)(Multilayer

Perceptron,MLP)是一種常見(jiàn)的人工神經(jīng)網(wǎng)絡(luò)模型,它由多個(gè)全連接層組成,每個(gè)層之間都有權(quán)重和偏差值。它可以用于解決分類(lèi)和回歸等問(wèn)題。

MLP模型的基本結(jié)構(gòu)是由輸入層、若干個(gè)隱層和輸出層組成。每個(gè)層都由多個(gè)神經(jīng)元組成,每個(gè)神經(jīng)元都與上一層的所有神經(jīng)元相連。隱層和輸出層的每個(gè)神經(jīng)元都有一個(gè)激活函數(shù),通常使用Sigmoid函數(shù)、ReLU函數(shù)等。MLP模型的前向傳播過(guò)程非常簡(jiǎn)單:輸入向量被輸入到輸入層,逐層計(jì)算神經(jīng)元的輸出,直到輸出層。輸出層的輸出被用來(lái)計(jì)算損失函數(shù),并且損失函數(shù)可以用來(lái)更新權(quán)重和偏差值。MLP模型的訓(xùn)練使用反向傳播算法(Backpropagation,BP算法)和梯度下降法(Gradient

Descent,GD算法),其目的是最小化損失函數(shù)。具體來(lái)說(shuō),BP算法通過(guò)鏈?zhǔn)椒▌t計(jì)算出每個(gè)神經(jīng)元對(duì)誤差的貢獻(xiàn),并將誤差傳播回每個(gè)層,然后使用梯度下降法更新權(quán)重和偏差值。與感知機(jī)模型相比,MLP模型更加靈活和強(qiáng)大,可以學(xué)習(xí)更復(fù)雜的非線(xiàn)性函數(shù)關(guān)系。但是,MLP模型也存在一些缺點(diǎn),如容易出現(xiàn)過(guò)擬合、需要大量的數(shù)據(jù)和計(jì)算資源等。為了解決這些問(wèn)題,一些正則化技術(shù)和優(yōu)化算法被應(yīng)用到MLP模型中,如dropout、L1/L2正則化、動(dòng)量?jī)?yōu)化等。2.3BP傳播算法BP(Backpropagation)神經(jīng)網(wǎng)絡(luò)算法是一種基于誤差反向傳播的有監(jiān)督學(xué)習(xí)算法。它是一種反向傳播算法,用于訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)。BP算法基于一種稱(chēng)為“誤差反向傳播”的方法,它利用鏈?zhǔn)椒▌t將誤差信號(hào)從輸出層反向傳播到輸入層。[18]這個(gè)過(guò)程可以分為兩個(gè)主要階段:前向傳播階段:通過(guò)輸入層將輸入向量輸入到神經(jīng)網(wǎng)絡(luò)中,逐層計(jì)算神經(jīng)元的輸出,并將其傳遞到下一層。這個(gè)過(guò)程一直持續(xù)到輸出層,產(chǎn)生神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果。反向傳播階段:通過(guò)計(jì)算輸出層與期望輸出之間的誤差,將誤差信號(hào)反向傳播回網(wǎng)絡(luò),以更新網(wǎng)絡(luò)中的權(quán)重和偏差。這個(gè)過(guò)程可以使用梯度下降法來(lái)更新權(quán)重和偏差,以最小化誤差。BP算法的目標(biāo)是通過(guò)調(diào)整權(quán)重和偏差,使神經(jīng)網(wǎng)絡(luò)能夠逼近輸入數(shù)據(jù)的真實(shí)函數(shù)關(guān)系。因此,BP算法通常用于分類(lèi)和回歸任務(wù)中。需要注意的是,BP算法存在著一些缺點(diǎn),比如容易過(guò)擬合、梯度消失和局部極小值等問(wèn)題,但是這些問(wèn)題可以通過(guò)正則化、批處理和隨機(jī)初始化等方法來(lái)解決。圖2.2神經(jīng)網(wǎng)絡(luò)模型以上圖2.2中的三層神經(jīng)網(wǎng)絡(luò)模型為例,來(lái)說(shuō)明BP算法的原理及推導(dǎo)求解過(guò)程。2.4梯度下降法梯度下降法(Gradient

Descent)是一種常用的優(yōu)化算法,用于最小化一個(gè)損失函數(shù)。在機(jī)器學(xué)習(xí)中,我們通常將模型的參數(shù)作為損失函數(shù)的自變量,將損失函數(shù)的輸出作為模型的誤差,并希望通過(guò)調(diào)整模型的參數(shù)來(lái)最小化誤差。梯度下降法就是一種常用的實(shí)現(xiàn)這個(gè)過(guò)程的算法。梯度下降法的基本思路是在每個(gè)迭代步驟中,將當(dāng)前參數(shù)的梯度方向作為下降方向,以一定的步長(zhǎng)學(xué)習(xí)率沿著下降方向更新參數(shù),從而最小化損失函數(shù)。這個(gè)過(guò)程可以形象地理解為爬山,我們希望找到一個(gè)山頂即損失函數(shù)的最小值,每次迭代通過(guò)向當(dāng)前位置的梯度方向移動(dòng)一定距離來(lái)逐漸接近山頂[19]。具體來(lái)說(shuō),在每個(gè)迭代步驟中,梯度下降法計(jì)算當(dāng)前參數(shù)向量的梯度(即損失函數(shù)對(duì)參數(shù)的偏導(dǎo)數(shù)),然后將參數(shù)向量沿著負(fù)梯度方向即梯度的相反方向移動(dòng)一定距離,從而更新參數(shù)。這個(gè)距離由學(xué)習(xí)率和梯度大小決定,通常需要通過(guò)實(shí)驗(yàn)來(lái)調(diào)整。梯度下降法有很多變種,包括批量梯度下降法、隨機(jī)梯度下降法和小批量梯度下降法等。批量梯度下降法在每次迭代中使用全部訓(xùn)練數(shù)據(jù)來(lái)計(jì)算梯度,因此收斂速度較慢但穩(wěn)定。隨機(jī)梯度下降法在每次迭代中使用單個(gè)樣本來(lái)計(jì)算梯度,因此收斂速度較快但不穩(wěn)定。小批量梯度下降法則是介于兩者之間,同時(shí)具有較好的收斂速度和穩(wěn)定性。梯度下降法也存在一些問(wèn)題,例如可能陷入局部最小值、學(xué)習(xí)率的選擇可能影響收斂速度和穩(wěn)定性等。因此,現(xiàn)在常常使用更高級(jí)的優(yōu)化算法來(lái)替代梯度下降法,例如牛頓法、共軛梯度法、擬牛頓法等。2.5正則化正則化是一種常見(jiàn)的機(jī)器學(xué)習(xí)技術(shù),用于減少模型的過(guò)擬合(Overfitting)問(wèn)題。在訓(xùn)練模型時(shí),為了最小化訓(xùn)練誤差,模型往往會(huì)過(guò)度擬合訓(xùn)練數(shù)據(jù),導(dǎo)致在測(cè)試集上的表現(xiàn)很差。正則化的目的是在保持訓(xùn)練誤差的同時(shí),減少測(cè)試誤差,提高模型的泛化能力。正則化技術(shù)主要分為兩種:L1正則化和L2正則化[20]。L1正則化(L1

Regularization)也稱(chēng)為L(zhǎng)asso正則化,它是通過(guò)對(duì)模型的權(quán)重向量的L1范數(shù)進(jìn)行懲罰來(lái)實(shí)現(xiàn)的。具體來(lái)說(shuō),L1正則化將L1范數(shù)與損失函數(shù)相加,并且使用梯度下降法最小化它,以使權(quán)重向量的一些分量變?yōu)?。L1正則化可以用于特征選擇,因?yàn)樗鼉A向于讓模型的權(quán)重向量中大部分分量為0,從而剔除一些不重要的特征。L2正則化(L2

Regularization)也稱(chēng)為Ridge正則化,它是通過(guò)對(duì)模型的權(quán)重向量的L2范數(shù)進(jìn)行懲罰來(lái)實(shí)現(xiàn)的。與L1正則化不同,L2正則化會(huì)使權(quán)重向量中的所有分量變小,但不會(huì)剔除任何分量。與L1正則化相比,L2正則化更容易優(yōu)化,因?yàn)樗奶荻雀交?。除了L1和L2正則化,還有一些其他的正則化技術(shù),[21]如Dropout、Early

Stopping等。Dropout是一種常見(jiàn)的正則化技術(shù),它在訓(xùn)練過(guò)程中隨機(jī)刪除一些神經(jīng)元,以防止模型過(guò)擬合。Early

Stopping是通過(guò)在訓(xùn)練過(guò)程中監(jiān)測(cè)驗(yàn)證誤差,當(dāng)驗(yàn)證誤差停止改善時(shí)停止訓(xùn)練,以避免過(guò)擬合。正則化技術(shù)在機(jī)器學(xué)習(xí)中得到了廣泛應(yīng)用,可以幫助提高模型的泛化能力,避免過(guò)擬合問(wèn)題,從而更好地適應(yīng)新的數(shù)據(jù)。2.6深度學(xué)習(xí)的思想深度學(xué)習(xí)的核心思想是建立一個(gè)多層次的神經(jīng)網(wǎng)絡(luò)模型,利用反向傳播算法來(lái)訓(xùn)練模型,使其能夠從數(shù)據(jù)中自動(dòng)學(xué)習(xí)特征,并進(jìn)行預(yù)測(cè)和決策。在深度學(xué)習(xí)中,我們使用多個(gè)隱藏層來(lái)學(xué)習(xí)數(shù)據(jù)的不同抽象層次的特征,這使得模型能夠逐漸提取更高級(jí)別的特征,從而獲得更好的性能。通過(guò)不斷地優(yōu)化模型的參數(shù),我們可以讓模型不斷地學(xué)習(xí)和改進(jìn),以便更好地適應(yīng)我們所面對(duì)的各種任務(wù)和問(wèn)題[22]。深度學(xué)習(xí)的另一個(gè)核心思想是使用大量的數(shù)據(jù)來(lái)訓(xùn)練模型。隨著數(shù)據(jù)規(guī)模的增加,深度學(xué)習(xí)模型的性能通常會(huì)得到顯著的提升。同時(shí),使用并行計(jì)算和分布式計(jì)算技術(shù),可以加速深度學(xué)習(xí)的訓(xùn)練過(guò)程。總之,深度學(xué)習(xí)的核心思想是使用多層神經(jīng)網(wǎng)絡(luò)模型,利用反向傳播算法來(lái)訓(xùn)練模型,并通過(guò)大量的數(shù)據(jù)和并行計(jì)算技術(shù)來(lái)提高模型的性能和訓(xùn)練效率。特征提取過(guò)程如圖2.3所示。圖2.3特征提取過(guò)程圖2.7本章小結(jié)本章節(jié)對(duì)本文涉及到相關(guān)基礎(chǔ)知識(shí)的概念進(jìn)行研究和闡述,如深度學(xué)習(xí)思想、神經(jīng)網(wǎng)絡(luò)理論等。 第3章口罩佩戴識(shí)別的需求分析3口罩佩戴識(shí)別的需求分析本章節(jié)將對(duì)口罩佩戴識(shí)別系統(tǒng)進(jìn)行需求分析。3.1口罩佩戴識(shí)別系統(tǒng)功能需求分析口罩佩戴識(shí)別系統(tǒng)的主要用戶(hù)為檢測(cè)者,即那些需要對(duì)某些特定圖片,視頻或場(chǎng)所進(jìn)行檢測(cè)是否佩戴口罩,用戶(hù)選擇完檢測(cè)目標(biāo)后系統(tǒng)能進(jìn)行識(shí)別并給出相應(yīng)的檢測(cè)結(jié)果。3.1.1功能需求分析本系統(tǒng)的用戶(hù)分為檢測(cè)者和管理員,主要用戶(hù)是檢測(cè)者,檢測(cè)者可以通過(guò)使用本系統(tǒng)完成以下所需的功能:1.圖片選擇:提供從本地文件夾中選擇待識(shí)別圖片的功能。用戶(hù)可以從本地文件夾中獲取想要識(shí)別的圖片,并傳遞給系統(tǒng)。2.圖像識(shí)別:是將已經(jīng)輕預(yù)測(cè)的圖像進(jìn)一步分解,通過(guò)這種方式提取圖像銷(xiāo)售和需求,定位子自標(biāo),對(duì)預(yù)處理后的圖像進(jìn)一步分類(lèi),進(jìn)行特征提取、目標(biāo)定位和目標(biāo)識(shí)別。3.結(jié)果輸出:該功能可以輸出已經(jīng)識(shí)別的圖像的結(jié)果。4.視頻選擇和識(shí)別:供用戶(hù)可以從本地文件夾中獲取想要識(shí)別的視頻,并傳遞給系統(tǒng)。對(duì)預(yù)處理后的圖像進(jìn)一步分類(lèi),進(jìn)行特征提取、目標(biāo)定位和目標(biāo)識(shí)別。5.攝像頭開(kāi)啟與識(shí)別:用戶(hù)可以與主機(jī)攝像頭連接然后對(duì)攝像頭中內(nèi)容進(jìn)行識(shí)別。綜上所述,檢測(cè)者的口罩佩戴識(shí)別用例圖如3.1所示圖3.1檢測(cè)者的用例圖管理員作為口罩佩戴識(shí)別系統(tǒng)的最高權(quán)限者,可管理測(cè)試集和數(shù)據(jù)集、識(shí)別算法模型變換、不同模型對(duì)比。1.管理者可以對(duì)系統(tǒng)中運(yùn)用的測(cè)試集和標(biāo)注的數(shù)據(jù)集進(jìn)行修改。2.管理者可以選取不同的識(shí)別算法的模型實(shí)現(xiàn)同樣的檢測(cè)功能。3.管理者可以對(duì)不同的算法模型進(jìn)行對(duì)比實(shí)驗(yàn),通過(guò)圖像繪制出表格,評(píng)估出效率更好的那一個(gè)。綜上所述,管理者的口罩佩戴識(shí)別用例圖如3.2所示圖3.2管理者的用例圖3.1.2非功能需求分析(1)處理及時(shí)性和準(zhǔn)確性:在用戶(hù)上傳圖片以及開(kāi)啟攝像頭進(jìn)行實(shí)時(shí)口罩識(shí)別檢測(cè)時(shí)準(zhǔn)確性和及時(shí)性是口罩佩戴識(shí)別檢測(cè)項(xiàng)目開(kāi)發(fā)過(guò)程中必要的基礎(chǔ),只有保證準(zhǔn)確性和及時(shí)性才可以使得整個(gè)系統(tǒng)能夠運(yùn)作。(2)易用性和可維護(hù)性:系統(tǒng)需要具備良好的用戶(hù)界面和易用性,以方便用戶(hù)操作和維護(hù)。同時(shí),系統(tǒng)的代碼需要具備清晰的架構(gòu)和良好的可讀性,以方便維護(hù)和更新。(3)可擴(kuò)充性:在口罩佩戴識(shí)別檢測(cè)項(xiàng)目的開(kāi)發(fā)基礎(chǔ)上,在之后由于用戶(hù)的需求變動(dòng),項(xiàng)目需要進(jìn)行進(jìn)一步擴(kuò)展或者更改功能,這就要求項(xiàng)目需要支持可擴(kuò)充性。(4)高效性能:系統(tǒng)需要具備較高的處理速度和準(zhǔn)確性,能夠在實(shí)時(shí)場(chǎng)景下快速地檢測(cè)和識(shí)別佩戴口罩的人群。同時(shí),系統(tǒng)還需要具備良好的魯棒性和可擴(kuò)展性,以滿(mǎn)足不同場(chǎng)景和需求的應(yīng)用。(5)界面需求①界面風(fēng)格:使用圖形化響應(yīng)界面,頁(yè)面美觀(guān),界面風(fēng)格保持一致,顏色明亮簡(jiǎn)潔。②界面布局:系統(tǒng)界面合理,分布均勻,便于用戶(hù)進(jìn)行點(diǎn)擊等操作。③界面操作:界面操作容易,圖標(biāo)符合大眾認(rèn)知,易于理解和進(jìn)行操作。3.2口罩佩戴識(shí)別系統(tǒng)算法需求分析(1)訓(xùn)練數(shù)據(jù)集:系統(tǒng)需要準(zhǔn)備一定規(guī)模的口罩?jǐn)?shù)據(jù)集,包括正常佩戴口罩、未佩戴口罩和佩戴不正確的口罩等多種情況。數(shù)據(jù)集的規(guī)模和質(zhì)量對(duì)模型的準(zhǔn)確性和泛化能力有很大影響,需要進(jìn)行合理的選擇和處理。(2)網(wǎng)絡(luò)模型:系統(tǒng)需要選擇合適的神經(jīng)網(wǎng)絡(luò)模型,以實(shí)現(xiàn)對(duì)口罩的檢測(cè)和分類(lèi)。YOLOV4是一種流行的目標(biāo)檢測(cè)算法,其具備快速、準(zhǔn)確和可擴(kuò)展等優(yōu)勢(shì),在口罩識(shí)別系統(tǒng)中也有很好的應(yīng)用前景。(3)算法參數(shù)和超參數(shù)的調(diào)優(yōu):系統(tǒng)需要對(duì)模型的參數(shù)和超參數(shù)進(jìn)行調(diào)優(yōu),以提高模型的準(zhǔn)確性和泛化能力。調(diào)優(yōu)的過(guò)程中需要綜合考慮訓(xùn)練集、驗(yàn)證集和測(cè)試集的表現(xiàn)。(4)算法評(píng)估:系統(tǒng)需要對(duì)算法進(jìn)行評(píng)估,以驗(yàn)證算法的準(zhǔn)確性和效果。評(píng)估的方法包括精度、召回率、mAP值等指標(biāo),需要根據(jù)具體的應(yīng)用場(chǎng)景和需求進(jìn)行選擇。(5)模型訓(xùn)練和迭代:系統(tǒng)需要進(jìn)行模型的訓(xùn)練和迭代,以不斷優(yōu)化模型的性能和效果。模型訓(xùn)練的過(guò)程中需要進(jìn)行合理的監(jiān)督和反饋,以避免過(guò)擬合或者欠擬合等問(wèn)題。同時(shí),模型迭代的過(guò)程中需要對(duì)數(shù)據(jù)集和算法進(jìn)行不斷的更新和優(yōu)化,以滿(mǎn)足實(shí)際應(yīng)用的需求。3.3本章小結(jié)本章節(jié)主要口罩識(shí)別系統(tǒng)的需求分析,分別對(duì)功能需求、非功能需求和算法需求進(jìn)行分析闡述。 第4章口罩佩戴識(shí)別系統(tǒng)分析與設(shè)計(jì)4口罩佩戴識(shí)別系統(tǒng)分析與設(shè)計(jì)本章節(jié)將對(duì)口罩佩戴識(shí)別系統(tǒng)設(shè)計(jì)進(jìn)行分析與闡述。4.1關(guān)鍵技術(shù)分析4.1.1數(shù)據(jù)集的準(zhǔn)備本系統(tǒng)需要抓取大概1000張圖片作為口罩佩戴檢測(cè)數(shù)據(jù)集,有口罩和無(wú)口罩的圖片數(shù)量基本相同。對(duì)于樣品的圖像,我們進(jìn)行兩種類(lèi)型的標(biāo)記,一種有掩模,另一種沒(méi)有掩模。訓(xùn)練集中有1000張左右不同的圖片。在每個(gè)同步數(shù)據(jù)中,有許多差異。口罩的角度和顏色都不一樣。這種訓(xùn)練有助于提高我們磨損檢測(cè)的準(zhǔn)確性。4.1.2圖像識(shí)別功能即特征提取YOLO網(wǎng)絡(luò)一般將輸入圖像劃分為32*32的網(wǎng)格,檢測(cè)目標(biāo)掩膜。只要掩模的中心落入一個(gè)網(wǎng)格,這個(gè)網(wǎng)格就會(huì)立即負(fù)責(zé)檢測(cè)目標(biāo)。在同一檢測(cè)點(diǎn)檢測(cè)物體的算法比其他任何算法都有優(yōu)勢(shì)。其優(yōu)勢(shì)在于其多尺度預(yù)測(cè)算法,尤其是實(shí)時(shí)性,凸顯了算法的強(qiáng)大,更好地滿(mǎn)足了大流量的需求。YOLOV4算法基于原有的YOLO目標(biāo)檢測(cè)架構(gòu),采用了近年來(lái)CN領(lǐng)域最好的優(yōu)化策略,包括數(shù)據(jù)處理、骨干網(wǎng)、網(wǎng)絡(luò)訓(xùn)練激活函數(shù)、損失函數(shù)等方面都有不同程度的優(yōu)化。YOLO模型的主干網(wǎng)絡(luò)用于特征提取。YOLOV4在使用YOLOLoss的基礎(chǔ)上使用了新的特征提取網(wǎng)絡(luò),并集成了許多新的優(yōu)化方法和模型策略,達(dá)到了良好的檢測(cè)精度和速度。YOLOV4的特征提取網(wǎng)絡(luò)是CSP-Darknet,包括Mish激活函數(shù)、CSP結(jié)構(gòu)和Darknet。4.2口罩佩戴識(shí)別系統(tǒng)流程分析4.2.1圖片識(shí)別模塊檢測(cè)者可以通過(guò)點(diǎn)擊選擇圖片按鈕從本地選取需要檢測(cè)的圖片,然后點(diǎn)擊識(shí)別按鈕對(duì)選取的圖片進(jìn)行人臉口罩佩戴識(shí)別判斷,等待系統(tǒng)反應(yīng)完畢輸出結(jié)果,即如果佩戴口罩圖片中的檢測(cè)框顯示Mask,如果未佩戴口罩圖片中的檢測(cè)框顯示NO_Mask,并且后面會(huì)給出置信度,圖片識(shí)別流程圖如圖4.1所示。圖4.1圖片識(shí)別模塊流程圖4.2.2視頻識(shí)別模塊檢測(cè)者可以通過(guò)點(diǎn)擊選擇視頻按鈕從本地選取需要檢測(cè)的視頻,然后點(diǎn)擊識(shí)別按鈕對(duì)選取的視頻進(jìn)行人臉口罩佩戴識(shí)別判斷,等待系統(tǒng)反應(yīng)完畢輸出結(jié)果,即如果佩戴口罩視頻中的檢測(cè)框顯示Mask,如果未佩戴口罩視頻中的檢測(cè)框顯示NO_Mask,并且后面會(huì)給出置信度,視頻識(shí)別流程圖如圖4.2所示。圖4.2視頻識(shí)別模塊流程圖4.2.3開(kāi)啟攝像頭識(shí)別識(shí)別模塊檢測(cè)者可以通過(guò)點(diǎn)擊開(kāi)啟攝像頭按鈕打開(kāi)本地?cái)z像頭,然后點(diǎn)擊識(shí)別按鈕對(duì)攝像頭中的用例進(jìn)行人臉口罩佩戴識(shí)別判斷,等待系統(tǒng)反應(yīng)完畢輸出結(jié)果,即如果佩戴口罩用例中的檢測(cè)框顯示Mask,如果未佩戴口罩用例中的檢測(cè)框顯示NO_Mask,并且后面會(huì)給出置信度,攝像頭識(shí)別流程圖如圖4.3所示。圖4.3圖片識(shí)別模塊流程圖4.3制作自己的數(shù)據(jù)集4.3.1數(shù)據(jù)集的作用口罩佩戴識(shí)別數(shù)據(jù)集是一種包含佩戴口罩和未佩戴口罩的圖像或視頻數(shù)據(jù)集,并對(duì)其進(jìn)行標(biāo)注??谡峙宕髯R(shí)別數(shù)據(jù)集的作用主要體現(xiàn)在以下幾個(gè)方面:(1)訓(xùn)練口罩佩戴識(shí)別模型:通過(guò)使用口罩佩戴識(shí)別數(shù)據(jù)集,可以訓(xùn)練出高性能的口罩佩戴識(shí)別模型,實(shí)現(xiàn)對(duì)人們佩戴口罩的自動(dòng)識(shí)別。(2)提高口罩佩戴檢測(cè)準(zhǔn)確率:口罩佩戴識(shí)別數(shù)據(jù)集可以用于訓(xùn)練和優(yōu)化口罩佩戴檢測(cè)算法,提高算法的準(zhǔn)確率和可靠性,減少誤報(bào)和漏報(bào)的情況。4.3.2制作數(shù)據(jù)集制作數(shù)據(jù)集步驟:下載安裝miniconda3,方便的創(chuàng)建多個(gè)python虛擬環(huán)境,方便多個(gè)python項(xiàng)目同時(shí)開(kāi)發(fā)的時(shí)候,每個(gè)項(xiàng)目都有自己獨(dú)立的python開(kāi)發(fā)環(huán)境。相當(dāng)于在一個(gè)園區(qū),建立很多倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)都相互獨(dú)立,可以安裝不同的python環(huán)境,防止python環(huán)境不對(duì)應(yīng)導(dǎo)致代碼運(yùn)行出錯(cuò)。通過(guò)miniconda3即Anaconda下載安裝labelimg。添加自定義類(lèi)即修改labelimg-master,分別添加顯示未佩戴口罩類(lèi)NO_Mask和顯示佩戴口罩類(lèi)Mask,在data/predefined_classes.txt定義訓(xùn)練中使用的類(lèi)的列表,進(jìn)行構(gòu)建和啟動(dòng)。在工具欄中的“保存”按鈕下方,單擊“PascalVOC”按鈕以切換為YOLO格式。具體操作過(guò)程如圖4.4所示。圖4.4啟動(dòng)labelimg以及具體界面4.4YOLOV4的網(wǎng)絡(luò)結(jié)構(gòu)和基本原理4.4.1YOLOV4網(wǎng)絡(luò)結(jié)構(gòu)從下面的圖4.5可以看出,YOLOV4網(wǎng)絡(luò)主要由三個(gè)部分組成,首先是CSPDarknet53主干網(wǎng)絡(luò),這也算是整個(gè)網(wǎng)絡(luò)的入口,輸入圖像首先會(huì)經(jīng)過(guò)該網(wǎng)絡(luò)。然后會(huì)通過(guò)SPP層和PANet層,最后經(jīng)由YOLOV3Head輸出結(jié)果,這里的結(jié)果包括初始的預(yù)測(cè)框的位置信息和檢測(cè)目標(biāo)的得分信息等,經(jīng)過(guò)后處理才能得到最終的結(jié)果。圖4.5YOLOV4網(wǎng)絡(luò)結(jié)構(gòu)圖4.4.2骨干CSPDarknet53CSPDarknet53就是將CSP結(jié)構(gòu)融入了Darknet53中。CSP結(jié)構(gòu)是在CSPNet(CrossStagePartialNetwork)論文中提出的,CSPNet作者說(shuō)在目標(biāo)檢測(cè)任務(wù)中使用CSP結(jié)構(gòu)有如下好處:減少網(wǎng)絡(luò)的計(jì)算量以及對(duì)顯存的占用,同時(shí)保證網(wǎng)絡(luò)的能力不變或者略微提升。CSP結(jié)構(gòu)的思想?yún)⒖荚撐闹欣L制的CSPDenseNet,進(jìn)入每個(gè)stage(一般在下采樣后)先將數(shù)據(jù)劃分成倆部分,Part1和Part2。具體劃分是在CSPNet中是直接按照通道均分,但在YOLOv4網(wǎng)絡(luò)中是通過(guò)兩個(gè)1x1的卷積層來(lái)實(shí)現(xiàn)的。在Part2后跟一堆Blocks然后在通過(guò)1x1的卷積層(圖中的Transition),接著將兩個(gè)分支的信息在通道方向進(jìn)行Concat拼接,最后再通過(guò)1x1的卷積層進(jìn)一步融合。#MISH激活函數(shù)

classMish(nn.Module):

def__init__(self):

super(Mish,self).__init__()

defforward(self,x):

returnx*torch.tanh(F.softplus(x))完整網(wǎng)絡(luò)結(jié)構(gòu)

classCSPDarkNet(nn.Module):

def__init__(self,layers):

super(CSPDarkNet,self).__init__()

#需要先定義第一個(gè)殘差塊的輸入

self.inplanes=32

#輸入維度為3,輸出通道self是殘差塊的輸入

self.conv1=BasicConv(3,self.inplanes,kernel_size=3,stride=1)

#每個(gè)殘差塊的維度轉(zhuǎn)變,輸出維度

self.feature_channels=[64,128,256,512,1024]4.4.3SPP層對(duì)特征綜合首先為輸入層,它的尺寸可以為任意,通過(guò)卷積操作,直到最后一層(圖中為\(conv_5\))的輸出,它才能獲得該層的特性映射,它的尺寸也可以為任意。接下來(lái),進(jìn)入SPP層,我們首先來(lái)看一張?jiān)谧钭髠?cè)有16個(gè)藍(lán)色小格子的圖,這張圖代表的是將從\(conv_5\)得到的特征映射分成16份,16X256中的256代表的是Channel,也就是SPP對(duì)每一層都分成16份(不一定是等得分,這一點(diǎn)在后面的內(nèi)容中就能明白了)。在4.6中顯示了SPP的層次結(jié)構(gòu)。圖4.6SPP層結(jié)構(gòu)圖#SPP結(jié)構(gòu),利用不同大小的池化核進(jìn)行池化

#池化后堆疊

classSpatialPyramidPooling(nn.Module):

def__init__(self,pool_sizes=[5,9,13]):

super(SpatialPyramidPooling,self).__init__()

#ModuleList是將池化核為5、9、13的三個(gè)池化層放在了列表里

self.maxpools=nn.ModuleList([nn.MaxPool2d(pool_size,1,pool_size//2)forpool_sizeinpool_sizes])

defforward(self,x):

features=[maxpool(x)formaxpoolinself.maxpools[::-1]]

features=torch.cat(features+[x],dim=1)

returnfeatures4.4.4YOLOV3Head輸出結(jié)果首先對(duì)于任意一張輸入圖像,我們還是需要將其縮放到我們指定的大?。ㄟ@個(gè)大小可以變,32的倍數(shù)即可)。然后將圖像轉(zhuǎn)化為T(mén)ensor(因?yàn)槲矣玫腜ytorch框架)類(lèi)型(tensor類(lèi)型會(huì)將圖像歸一化),對(duì)于這個(gè)tensor矩陣將是我們真實(shí)輸入網(wǎng)絡(luò)的東西,但其是3維的,我們需要將其擴(kuò)展到4維才能夠輸入網(wǎng)絡(luò)。#最后獲得yolov4的輸出

defyolo_head(filters_list,in_filters):

#模型的最后的輸出,第一個(gè)卷積是前面自定義的,它包含一個(gè)3x3卷積層,第二個(gè)是1x1卷積

m=nn.Sequential(

conv2d(in_filters,filters_list[0],3),

nn.Conv2d(filters_list[0],filters_list[1],1),

)

returnm4.5本章小結(jié)本章節(jié)對(duì)口罩識(shí)別系統(tǒng)的整體設(shè)計(jì),首先是數(shù)據(jù)集的制作,然后在前兩章的基礎(chǔ)上對(duì)基于PythonYOLOV4模型的設(shè)計(jì),對(duì)口罩佩戴識(shí)別系統(tǒng)的流程進(jìn)行描述。 第5章系統(tǒng)實(shí)現(xiàn)5系統(tǒng)實(shí)現(xiàn)本章節(jié)是對(duì)口罩識(shí)別系統(tǒng)實(shí)現(xiàn)進(jìn)行描述,以及進(jìn)行對(duì)比實(shí)驗(yàn),對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。5.1本地圖片選擇和識(shí)別系統(tǒng)實(shí)現(xiàn)通過(guò)Pycharm編譯器運(yùn)行程序,通過(guò)pyqt5構(gòu)建識(shí)別界面,在編譯無(wú)錯(cuò)誤的情況下顯示系統(tǒng)界面如圖5.1所示。圖5.1系統(tǒng)主界面本次測(cè)試圖片如圖5.2所示。圖5.2測(cè)試集圖片選擇:提供從本地文件夾中選擇待識(shí)別圖片的功能。用戶(hù)可以從本地文件夾中獲取想要識(shí)別的圖片,并傳遞給系統(tǒng)。圖片識(shí)別:對(duì)獲取的圖片進(jìn)行人臉口罩識(shí)別。本地圖片選擇和識(shí)別功能部分代碼如下,詳細(xì)代碼見(jiàn)附錄D。#對(duì)單張圖片進(jìn)行預(yù)測(cè)defdetect_image(image_path):

print('Startdetect!')

yolo=YOLO()

try:

image=Image.open(image_path)點(diǎn)擊系統(tǒng)界面中的選擇圖片按鈕,從本地圖片找到測(cè)試集,然后選中一張想要測(cè)試的圖片,將圖像導(dǎo)入到系統(tǒng)中,如圖5.3所示。圖5.3選取檢測(cè)圖片點(diǎn)擊界面中的識(shí)別按鈕進(jìn)行人臉口罩佩戴識(shí)別,等待系統(tǒng)反應(yīng)完畢后給出識(shí)別的結(jié)果,如圖5.4所示。識(shí)別的結(jié)果是圖片中的兩個(gè)用例均佩戴口罩,兩個(gè)參數(shù)mask后面的置信度均為0.98。圖5.4識(shí)別結(jié)果選擇不同的圖片測(cè)試用例點(diǎn)擊選擇圖片按鈕,從本地圖片找到測(cè)試集,然后選中一張想要測(cè)試的圖片,將圖像導(dǎo)入到系統(tǒng)中,如圖5.5所示。圖5.5選取檢測(cè)圖片點(diǎn)擊界面中的識(shí)別按鈕進(jìn)行人臉口罩佩戴識(shí)別,等待系統(tǒng)反應(yīng)完畢后給出識(shí)別的結(jié)果,如圖5.6所示。識(shí)別的結(jié)果是圖片中的用例均佩戴口罩,一個(gè)參數(shù)nomask后面的置信度為0.98。圖5.6識(shí)別結(jié)果5.2本地視頻選擇和識(shí)別及實(shí)現(xiàn)視頻選擇:提供從本地文件夾中選擇待識(shí)別視頻的功能。用戶(hù)可以從本地文件夾中獲取想要識(shí)別的視頻,并傳遞給系統(tǒng)。視頻識(shí)別:對(duì)獲取的視頻進(jìn)行人臉口罩識(shí)別。點(diǎn)擊系統(tǒng)界面中的選擇視頻進(jìn)行識(shí)別按鈕,從本地視頻找到測(cè)試集,然后選中想要測(cè)試的視頻,將視頻導(dǎo)入到系統(tǒng)中。等待系統(tǒng)反應(yīng)完成,系統(tǒng)會(huì)根據(jù)視頻中的內(nèi)容自動(dòng)輸出識(shí)別結(jié)果,視頻中的內(nèi)容在不斷變化,檢測(cè)框給出的結(jié)果也在不斷變化即一個(gè)人在視頻里由未佩戴口罩的狀態(tài)變成佩戴口罩的狀態(tài),系統(tǒng)界面顯示的輸出結(jié)果也會(huì)由nomask變成mask,如圖5.7和圖5.8所示。識(shí)別的結(jié)果是視頻中的用例均未佩戴口罩,四個(gè)參數(shù)nomask后面的置信度分別為0.98、0.98、0.99、0.99,如圖5.7所示。在視頻中四個(gè)用例佩戴口罩的過(guò)程中,識(shí)別的結(jié)果是視頻中的用例均佩戴口罩,四個(gè)參數(shù)mask后面的置信度分別為0.96、0.95、0.94、0.88,如圖5.8所示。本地視頻選擇和識(shí)別功能部分代碼如下,詳細(xì)代碼見(jiàn)附錄E。#對(duì)一段視頻進(jìn)行檢測(cè)

defdetect_video(video_path):

print('Startdetect!')

yolo=YOLO()

capture=cv2.VideoCapture(video_path)

writer=None

fps=0.0

whileTrue:

t1=time.time()

#讀取某一幀

grabbed,frame=capture.read()

ifnotgrabbed:

break圖5.7視頻識(shí)別結(jié)果1圖5.8視頻識(shí)別結(jié)果25.3攝像頭開(kāi)啟與識(shí)別設(shè)計(jì)及實(shí)現(xiàn)攝像頭開(kāi)啟:與主機(jī)的攝像頭連接,打開(kāi)攝像頭。攝像頭識(shí)別:對(duì)攝像頭中內(nèi)容進(jìn)行人臉口罩識(shí)別。以本人為測(cè)試用例,點(diǎn)擊攝像頭識(shí)別按鈕即可打開(kāi)攝像頭識(shí)別功能,等待系統(tǒng)反應(yīng)完成,系統(tǒng)會(huì)根據(jù)用例中的內(nèi)容自動(dòng)輸出識(shí)別結(jié)果,攝像頭中的內(nèi)容在不斷變化,檢測(cè)框給出的結(jié)果也在不斷變化即本人在視頻里由未佩戴口罩的狀態(tài)變成佩戴口罩的狀態(tài),系統(tǒng)界面顯示的輸出結(jié)果也會(huì)由nomask變成mask,如圖5.9和圖5.10所示。識(shí)別的結(jié)果是攝像頭中的用例未佩戴口罩,一個(gè)參數(shù)nomask后面的置信度分別為0.99,如圖5.9所示。隨著我選擇佩戴口罩后,在攝像頭中出現(xiàn)的用例識(shí)別的結(jié)果是佩戴口罩,一個(gè)參數(shù)mask后面的置信度0.98,如圖5.10所示。攝像頭開(kāi)啟與識(shí)別功能部分代碼如下,詳細(xì)代碼見(jiàn)附錄F。defshexiangtoushibie(self):

cap=cv2.VideoCapture(0)#打開(kāi)攝像頭,0表示第一個(gè)攝像頭

self.close=False

ifnotcap.isOpened():#檢查攝像頭是否打開(kāi)成功

print("無(wú)法打開(kāi)攝像頭")

exit()

whileTrue:

ret,frame=cap.read()#讀取一幀圖像

ifnotret:#如果讀取失敗,則退出循環(huán)

break圖5.9攝像頭識(shí)別結(jié)果1圖5.10視頻識(shí)別結(jié)果25.4對(duì)比模型選取了兩個(gè)不同的目標(biāo)檢測(cè)的網(wǎng)絡(luò)模型與YOLOV4模型進(jìn)行對(duì)比,下面先介紹這兩個(gè)模型。5.4.1Centernet網(wǎng)絡(luò)模型CenterNet是一種利用基于關(guān)鍵點(diǎn)的方法的實(shí)時(shí)對(duì)象檢測(cè)網(wǎng)絡(luò)。它是由加州大學(xué)圣地亞哥分校的研究人員開(kāi)發(fā)的,并在2019年的論文《作為點(diǎn)的物體》中首次引入。CenterNet通過(guò)檢測(cè)對(duì)象的中心點(diǎn),然后從該點(diǎn)預(yù)測(cè)對(duì)象的大小、方向和其他屬性,實(shí)現(xiàn)了對(duì)象檢測(cè)的高精度。CenterNet體系結(jié)構(gòu)由骨干網(wǎng)絡(luò)(通常是卷積神經(jīng)網(wǎng)絡(luò)或CNN)、特征金字塔網(wǎng)絡(luò)和檢測(cè)網(wǎng)絡(luò)組成。骨干網(wǎng)絡(luò)從輸入圖像中提取特征,特征金字塔網(wǎng)絡(luò)生成多尺度特征圖,該多尺度特征映射允許檢測(cè)不同大小的對(duì)象。然后,檢測(cè)網(wǎng)絡(luò)使用熱圖來(lái)預(yù)測(cè)對(duì)象的中心點(diǎn)及其相關(guān)屬性。CenterNet已被證明可以快速準(zhǔn)確地進(jìn)行物體檢測(cè),并且可以在各種數(shù)據(jù)集上進(jìn)行訓(xùn)練,包括COCO和PascalVOC。它還被擴(kuò)展到執(zhí)行關(guān)鍵點(diǎn)檢測(cè),通常用于自動(dòng)駕駛、機(jī)器人和其他計(jì)算機(jī)視覺(jué)應(yīng)用。5.4.2YOLO-tiny網(wǎng)絡(luò)模型yolo-tiny是一種輕量級(jí)的物體檢測(cè)模型,相對(duì)于yolo模型而言,yolo-tiny減少了網(wǎng)絡(luò)結(jié)構(gòu)中的卷積層和參數(shù)數(shù)量,能夠在保證較高準(zhǔn)確率的同時(shí)提高檢測(cè)速度,適用于資源限制較大的環(huán)境中。yolo-tiny網(wǎng)絡(luò)模型的結(jié)構(gòu)和yolo模型類(lèi)似,采用了Darknet19網(wǎng)絡(luò)結(jié)構(gòu),但是省略了其中的一些卷積層和降低了網(wǎng)絡(luò)分辨率,參數(shù)數(shù)量減少到了50萬(wàn)左右。yolo-tiny還采用了一些技巧來(lái)提高模型的準(zhǔn)確率,如使用Passthrough層將較低層的特征圖與較高層的特征圖相加,增加了模型的感受野,容易識(shí)別小目標(biāo)。yolo-tiny的檢測(cè)速度非??欤軌蜻_(dá)到每秒160幀以上的檢測(cè)效果,同時(shí)保持了較高的準(zhǔn)確率。該模型已經(jīng)廣泛應(yīng)用于移動(dòng)設(shè)備、無(wú)人駕駛和安防等領(lǐng)域中。5.5實(shí)驗(yàn)結(jié)果與分析此次實(shí)驗(yàn)主要分別測(cè)試YOLOV4模型、Centernet模型以及YOLOV4-tiny模型目標(biāo)檢測(cè)性能評(píng)價(jià)指標(biāo)即mAP和Precision。5.5.1深度學(xué)習(xí)下的目標(biāo)檢測(cè)性能評(píng)價(jià)指標(biāo)目標(biāo)檢測(cè)的Precision和Recall精確度Precision和召回率Recall查準(zhǔn)率和查全率這兩個(gè)概念在論文中經(jīng)常會(huì)遇到,下面會(huì)有解釋。所謂精度,是指我們得到的預(yù)測(cè)框有多少面積在真值框內(nèi),重疊面積除以檢測(cè)框面積就是精度??梢暬梢岳斫鉃槊新?,意思是我預(yù)測(cè)的有多少在真理盒里。召回率從字面意思上很好理解,就是我發(fā)出去多少,最終接收回來(lái)多少,也就是預(yù)測(cè)框和真值框重疊的面積除以真值框的面積。從以上概念可以看出,準(zhǔn)確率和召回率一般是成反比的。準(zhǔn)確率越高,召回率越低;召回率高,但準(zhǔn)確率普遍較低。想象一下,如果我們需要提出一種對(duì)象檢測(cè)算法來(lái)檢測(cè)圖像中的狗。為了盡可能的提高召回率,我們可以檢測(cè)出很多盒子來(lái)盡可能的包含圖像中狗狗可能出現(xiàn)的地方,甚至直接把整幅圖像作為預(yù)測(cè)盒子。此時(shí)召回率最高,接近1,但顯然,準(zhǔn)確率很低。目標(biāo)檢測(cè)的mAPmAP即MeanAveragePrecision即平均AP值,是對(duì)多個(gè)驗(yàn)證集個(gè)體求平均AP值,作為objectdection中衡量檢測(cè)精度的指標(biāo)。mAP的大小一定在[0,1]區(qū)間,越大越好。該指標(biāo)是目標(biāo)檢測(cè)算法中最重要的一個(gè)。5.5.2對(duì)比結(jié)果與分析(1)YOLOV4模型的mAP結(jié)果如圖5.11圖5.11YOLOV4模型mAP結(jié)果(2)Centernet模型的mAP結(jié)果如圖5.12圖5.12Centernet網(wǎng)絡(luò)模型mAP結(jié)果(3)YOLOV4-tiny模型的mAP結(jié)果如圖5.13圖5.13YOLOV4-tiny網(wǎng)絡(luò)模型mAP結(jié)果通過(guò)公式計(jì)算和圖像得出三個(gè)模型不同的精確度、召回率和mAP的值,并繪制成表格1。表1三個(gè)模型的精確度、召回率和mAP對(duì)比YOLOV4CenternetYOLOV4-tinyMaskPrecision97.33%98.46%95.95%NO_MaskPrecision90.05%97.81%78.63%MaskRecall82.95%72.73%80.68%NO_MaskRecall47.38%36.91%53.72%mAP75.76%72.89%73.70%根據(jù)表格1總結(jié)得出結(jié)論,不管是Mask還是NO_Mask的用例在YOLOV4模型下的精確度比Centernet模型的精確度低,比tiny模型的精確度高,介于兩者之間,在精確度方面中規(guī)中矩;對(duì)于Mask的用例在YOLOV4模型下的召回率高于Centernet模型和tiny模型的召回率,對(duì)于NO_Mask的用例在YOLOV4模型下的召回率高于Centernet模型下的低于tiny模型下的,在召回率方面也有一定優(yōu)勢(shì);根據(jù)之前對(duì)目標(biāo)檢測(cè)性能指標(biāo)的研究,mAP的值越大越好,該指標(biāo)是目標(biāo)檢測(cè)算法中最重要的一個(gè),表1中數(shù)據(jù)顯示在YOLOV4模型下mAP值均高于Centernet模型下的和tiny模型下的,所以YOLOV4整體上是目標(biāo)檢測(cè)中性能較好的模型。5.6本章小結(jié)本章節(jié)給出了每個(gè)功能模塊具體的界面顯示并對(duì)內(nèi)容詳細(xì)描述,同時(shí)選取了不同的模型進(jìn)行對(duì)比實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。提出了兩個(gè)不同于YOLOV4的模型:Centernet模型和YOLOV4-tiny模型進(jìn)行對(duì)比實(shí)驗(yàn),并給出對(duì)比結(jié)果與分析。 第6章系統(tǒng)測(cè)試6系統(tǒng)測(cè)試 本章節(jié)將對(duì)系統(tǒng)進(jìn)行功能性和非功能性的測(cè)試。6.1測(cè)試計(jì)劃與環(huán)境本次測(cè)試使用的電腦為64位操作系統(tǒng),為Windows10家庭中文版,處理器為Intel(R)Core(TM)i7-9750HCPU@2.60GHz2.59GHz,內(nèi)存為8.0G,JDK為1.8,屏幕分辨率為1920*1080,顯卡為lntel(R)UHDGraphics630、NVIDIAGeForceGTX1650。安裝PyCharm等軟件,啟動(dòng)項(xiàng)目,進(jìn)行功能測(cè)試。非功能測(cè)試是對(duì)該系統(tǒng)進(jìn)行安全性的測(cè)試和兼容性的測(cè)試,以便達(dá)到用戶(hù)的要求。6.2測(cè)試與結(jié)果分析本節(jié)為對(duì)口罩佩戴識(shí)別系統(tǒng)進(jìn)行功能測(cè)試和非功能測(cè)試,保證該軟件的健壯性。表1口罩佩戴識(shí)別功能測(cè)試測(cè)試用例測(cè)試步驟期望輸出實(shí)際輸出測(cè)試用例1編譯代碼,啟動(dòng)口罩識(shí)別系統(tǒng)編譯無(wú)誤,系統(tǒng)正常運(yùn)行,跳轉(zhuǎn)至系統(tǒng)界面編譯無(wú)誤,系統(tǒng)可以運(yùn)行,系統(tǒng)界面正常顯示測(cè)試用例2點(diǎn)擊選擇圖片按鈕系統(tǒng)會(huì)跳轉(zhuǎn)至本地測(cè)試圖片文件夾系統(tǒng)正常跳轉(zhuǎn)至圖片文件夾,進(jìn)行下一步操作測(cè)試用例3選擇圖片完成后,點(diǎn)擊識(shí)別按鈕系統(tǒng)對(duì)選擇的圖片進(jìn)行識(shí)別,等待反應(yīng)完畢,在界面中顯示識(shí)別結(jié)果,并給出置信度圖片識(shí)別完成,系統(tǒng)界面顯示識(shí)別結(jié)果即是否佩戴口罩,并可以看到置信度測(cè)試用例4點(diǎn)擊打開(kāi)視頻按鈕系統(tǒng)會(huì)跳轉(zhuǎn)至本地測(cè)試視頻文件夾系統(tǒng)正常跳轉(zhuǎn)至視頻文件夾,進(jìn)行下一步操作測(cè)試用例5打開(kāi)本地視頻完成后,系統(tǒng)對(duì)視頻內(nèi)容進(jìn)行識(shí)別系統(tǒng)對(duì)選擇的視頻進(jìn)行識(shí)別,等待反應(yīng)完畢,在界面中顯示識(shí)別結(jié)果,并給出置信度系統(tǒng)會(huì)根據(jù)視頻中的內(nèi)容不斷變化輸出對(duì)應(yīng)的識(shí)別結(jié)果,并可以看到置信度測(cè)試用例6點(diǎn)擊打開(kāi)攝像頭按鈕等待系統(tǒng)反應(yīng)會(huì)開(kāi)啟本地?cái)z像頭系統(tǒng)正常開(kāi)啟本地?cái)z像頭,攝像頭中出現(xiàn)屏幕前的畫(huà)面,進(jìn)行下一步操作測(cè)試用例7打開(kāi)攝像頭完成后,系統(tǒng)對(duì)攝像頭中內(nèi)容進(jìn)行識(shí)別系統(tǒng)對(duì)攝像頭中的內(nèi)容進(jìn)行識(shí)別,等待反應(yīng)完畢,在界面中顯示識(shí)別結(jié)果,并給出置信度系統(tǒng)會(huì)根據(jù)攝像頭中的內(nèi)容不斷變化輸出對(duì)應(yīng)的識(shí)別結(jié)果,并可以看到置信度6.3小結(jié)本章節(jié)主要對(duì)該系統(tǒng)進(jìn)行功能性和非功能性的測(cè)試,以提升該系統(tǒng)的正確性、健壯性等,保證該系統(tǒng)的正常運(yùn)行,便于對(duì)該系統(tǒng)進(jìn)行運(yùn)營(yíng)和維護(hù)。 第7章總結(jié)與展望7總結(jié)與展望7.1實(shí)驗(yàn)總結(jié)在對(duì)影響卷積神經(jīng)網(wǎng)絡(luò)模型的各種因素(網(wǎng)絡(luò)層數(shù)、學(xué)習(xí)算法、卷積核大小、Pooling方式、激活函數(shù)、Dropout、BatchNormalization等)進(jìn)行分析的基礎(chǔ)上,我們將YOLOV4模型應(yīng)用于圖像數(shù)據(jù)集,并與其進(jìn)行了比較,結(jié)果顯示,我們所設(shè)計(jì)的深度網(wǎng)絡(luò)模型具有很高的分類(lèi)準(zhǔn)確率,超過(guò)了在數(shù)據(jù)集官網(wǎng)上發(fā)表的大多數(shù)文章的準(zhǔn)確率,如果還想要進(jìn)一步提升,我們可以在以下幾個(gè)方面展開(kāi)改進(jìn):(1)更細(xì)致地設(shè)計(jì)學(xué)習(xí)率,從而當(dāng)成本函數(shù)小于0.2時(shí),能夠得到更合適的學(xué)習(xí)率。(2)對(duì)輸入圖像進(jìn)行細(xì)致的預(yù)處理。(3)在原始數(shù)據(jù)集上,對(duì)其進(jìn)行更多的重復(fù)。7.2展望在人流量較多的公共場(chǎng)所許多人并沒(méi)有嚴(yán)格遵守規(guī)章制度按照要求佩戴口罩。這時(shí)候如果是派人在群眾中監(jiān)督又費(fèi)時(shí)費(fèi)力,如何盡可能快速高效的方法來(lái)檢測(cè)人們佩戴口罩并落實(shí)相關(guān)的效果,保護(hù)人民生命健康與安全,成為了一項(xiàng)重大的考驗(yàn)。因此,要設(shè)計(jì)一款能夠自動(dòng)檢測(cè)的工具,幫助工作人員快速進(jìn)行檢測(cè),而人臉口罩檢測(cè)系統(tǒng)就能夠幫助防疫工作人員提高檢測(cè)效率,快速識(shí)別隱形風(fēng)險(xiǎn),統(tǒng)籌疫情防控管理,在預(yù)防新冠病毒,提高人民群眾防范病毒意識(shí),保護(hù)人民群眾生命健康安全等方面起到了重要的作用。本文主要完成了以下工作:(1)對(duì)基于YOLO目標(biāo)檢測(cè)的口罩佩戴識(shí)別系統(tǒng)的項(xiàng)目背景、研究現(xiàn)狀和研究目的與內(nèi)容進(jìn)行了描述,提出該課題所要實(shí)現(xiàn)的目標(biāo)。(2)對(duì)本文涉及到相關(guān)基礎(chǔ)知識(shí)的概念進(jìn)行研究和闡述,如深度學(xué)習(xí)思想、神經(jīng)網(wǎng)絡(luò)理論等。(3)對(duì)口罩識(shí)別系統(tǒng)的需求分析,分別對(duì)功能需求、非功能需求和算法需求進(jìn)行分析闡述。(4)對(duì)口罩識(shí)別系統(tǒng)的整體設(shè)計(jì),首先是數(shù)據(jù)集的制作,然后在前兩章的基礎(chǔ)上對(duì)基于PythonYOLOV4模型的設(shè)計(jì),對(duì)口罩佩戴識(shí)別系統(tǒng)的流程進(jìn)行描述。(5)完成口罩識(shí)別系統(tǒng)實(shí)現(xiàn),給出了每個(gè)功能模塊具體的界面顯示并對(duì)內(nèi)容詳細(xì)描述,同時(shí)選取了不同的模型進(jìn)行對(duì)比實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。(6)系統(tǒng)測(cè)試將對(duì)實(shí)現(xiàn)的系統(tǒng)的環(huán)境進(jìn)行配置和測(cè)試。 參考文獻(xiàn)參考文獻(xiàn)羅奕彬,洪遠(yuǎn)泉,周永倫,成雪蕾,郭灼豪.基于OpenCV的人臉口罩規(guī)范佩戴檢測(cè)[J].電子技術(shù)與軟件工程,2023(01):153-158.趙元章.人臉遮擋物識(shí)別算法的研究與應(yīng)用[D].青海師范大學(xué),2022.DOI:10.27778/ki.gqhzy.2022.000066.汪淑賢,歐陽(yáng)玉梅.基于深度學(xué)習(xí)的三維人臉識(shí)別方法研究[J].集成電路應(yīng)用,2023,40(01):73-75.DOI:10.19339/j.issn.1674-2583.2023.01.026.郭鯤.基于深度學(xué)習(xí)的有遮擋圖像識(shí)別研究[D].蘭州大學(xué),2022.DOI:10.27204/ki.glzhu.2022.003227.董艷花.基于深度學(xué)習(xí)的人臉口罩識(shí)別研究與應(yīng)用[D].青島大學(xué),2021.DOI:10.27262/ki.gqdau.2021.002275.黃強(qiáng).基于稀疏表示的魯棒性人臉識(shí)別研究[D].重慶郵電大學(xué),2021.DOI:10.27675/ki.gcydx.2021.000887.董艷花,張樹(shù)美,趙俊莉.基于深度神經(jīng)網(wǎng)絡(luò)的有遮擋身份驗(yàn)證[J].青島大學(xué)學(xué)報(bào)(自然科學(xué)版),2021,34(02):45-52.盧乃昕.基于深度卷積神經(jīng)網(wǎng)絡(luò)的紋理分類(lèi)方法研究[D].河南科技大學(xué),2022.DOI:10.27115/ki.glygc.2022.000595.徐遐齡,劉濤,田國(guó)輝,于文娟,肖大軍,梁陜鵬.有遮擋環(huán)境下的人臉識(shí)別方法綜述[J].計(jì)算機(jī)工程與應(yīng)用,2021,57(17):46-60.YenurkarGanesh,MalSandip.FutureforecastingpredictionofCovid-19usinghybriddeeplearningalgorithm.[J].Multimediatoolsandapplications,2022.董艷花,張樹(shù)美,趙俊莉.有遮擋人臉識(shí)別方法綜述[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(09):1-12.O'DriscollOlivia,HiseyRebecca,CamireDaenis,ErbJason,HowesDaniel,FichtingerGabor,UngiTamas.Objectdetectiontocomputeperformancemetricsforskillassessmentincentralvenouscatheterization[P].Queen'sUniv.(Canada),2021.黃海新,李志剛.基于YOLOv5算法的遙感飛機(jī)圖像檢測(cè)[J].通信與信息技術(shù),2023(02):17-21.陳穎.基于卷積神經(jīng)網(wǎng)絡(luò)的安全帽佩戴視頻檢測(cè)模型研究[D].南京郵電大學(xué),2022.DOI:10.27251/ki.gnjdc.2022.001333.AllanBrahim,KegelIan,KalidassSriHarish,KharechkoAndriy,MillikenMichael,McCleanSally,ScotneyBryan,ZhangShuai.TowardsautomaticplacementofmediaobjectsinapersonalisedTVexperience[J].MultimediaSystems,2022,28(6).張楠,厲小潤(rùn),王森榮,林超.基于Yolov3算法的鐵軌彈條檢測(cè)識(shí)別[J].電氣自動(dòng)化,2023,45(02):22-24.黃景.基于深度學(xué)習(xí)的多尺度目標(biāo)檢測(cè)算法研究[D].山東大學(xué),2022.DOI:10.27272/ki.gshdu.2022.003112.MeleMarco,MagazzinoCosimo,SchneiderNicolas,NicolaiFloriana.RevisitingthedynamicinteractionsbetweeneconomicgrowthandenvironmentalpollutioninItaly:evidencefromagradientdescentalgorithm.[J].Environmentalscienceandpollutionresearchinternational,2021,28(37).李志義,許洪凱,段斌.基于深度學(xué)習(xí)CNN模型的圖像情感特征抽取研究[J].圖書(shū)情報(bào)工作,2019,63(11):96-107.DOI:10.13266/j.issn.0252-3116.2019.11.011.DubeyGaurav,SinghHarivansPratap,SheoranKavita,DhandGeetika,MalikPooja.DrugreviewsentimentalanalysisbasedonmodularlexicongenerationandafusionofbidirectionalthresholdweightedmappingCNN‐RNN[J].ConcurrencyandComputation:PracticeandExperience,2022,35(3).李英豪.基于卷積神經(jīng)網(wǎng)絡(luò)的復(fù)雜工況齒輪局部故障識(shí)別方法研究[D].重慶大學(xué),2021.DOI:10.27670/ki.gcqdu.2021.000517.李航.基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類(lèi)研究與應(yīng)用[D].杭州電子科技大學(xué),2022.DOI:10.27075/ki.ghzdc.2022.000484. 致謝附錄附錄A:YOLOV4訓(xùn)練以及損失計(jì)算核心代碼#平滑標(biāo)簽

defsmooth_labels(y_true,label_smoothing,num_classes):

returny_true*(1.0-label_smoothing)+label_smoothing/num_classes

defbox_ciou(b1,b2):

"""

輸入為:

b1:tensor,shape=(batch,feat_w,feat_h,anchor_num,4),xywh

b2:tensor,shape=(batch,feat_w,feat_h,anchor_num,4),xywh

返回為:

ciou:tensor,shape=(batch,feat_w,feat_h,anchor_num,1)

"""

#求出預(yù)測(cè)框左上角右下角

b1_xy=b1[...,:2]

b1_wh=b1[...,2:4]

b1_wh_half=b1_wh/2.

b1_mins=b1_xy-b1_wh_half

b1_maxes=b1_xy+b1_wh_half

#求出真實(shí)框左上角右下角

b2_xy=b2[...,:2]

b2_wh=b2[...,2:4]

b2_wh_half=b2_wh/2.

b2_mins=b2_xy-b2_wh_half

b2_maxes=b2_xy+b2_wh_half

#求真實(shí)框和預(yù)測(cè)框所有的iou

intersect_mins=torch.max(b1_mins,b2_mins)

intersect_maxes=torch.min(b1_maxes,b2_maxes)

intersect_wh=torch.max(intersect_maxes-intersect_mins,torch.zeros_like(intersect_maxes))

intersect_area=intersect_wh[...,0]*intersect_wh[...,1]

b1_area=b1_wh[...,0]*b1_wh[...,1]

b2_area=b2_wh[...,0]*b2_wh[...,1]

union_area=b1_area+b2_area-intersect_area

iou=intersect_area/torch.clamp(union_area,min=1e-6)

#計(jì)算中心的差距

center_distance=torch.sum(torch.pow((b1_xy-b2_xy),2),axis=-1

#找到包裹兩個(gè)框的最小框的左上角和右下角

enclose_mins=torch.min(b1_mins,b2_mins)

enclose_maxes=torch.max(b1_maxes,b2_maxes)

enclose_wh=torch.max(enclose_maxes-enclose_mins,torch.zeros_like(intersect_maxes))

#計(jì)算對(duì)角線(xiàn)距離

enclose_diagonal=torch.sum(torch.pow(enclose_wh,2),axis=-1)

ciou=iou-1.0*(center_distance)/torch.clamp(enclose_diagonal,min=1e-6)

v=(4/(math.pi**2))*torch.pow((torch.atan(b1_wh[...,0]/torch.clamp(b1_wh[...,1],min=1e-6))-torch.atan(b2_wh[...,0]/torch.clamp(b2_wh[...,1],min=1e-6))),2)

alpha=v/torch.clamp((1.0-iou+v),min=1e-6)

ciou=ciou-alpha*v

returnciou

defclip_by_tensor(t,t_min,t_max):

t=t.float()

result=(t>=t_min).float()*t+(t<t_min).float()*t_min

result=(result<=t_max).float()*result+(result>t_max).float()*t_max

returnresult

defMSELoss(pred,target):

return(pred-target)**2

defBCELoss(pred,target):

epsilon=1e-7

pred=clip_by_tensor(pred,epsilon,1.0-epsilon)

output=-target*torch.log(pred)-(1.0-target)*torch.log(1.0-pred)

returnoutput

classYOLOLoss(nn.Module):

def__init__(self,anchors,num_classes,img_size,label_smooth=0,cuda=True):

super(YOLOLoss,self).__init__()

self.anchors=anchors

self.num_anchors=len(anchors)

self.num_classes=num_classes

self.bbox_attrs=5+num_classes

self.img_size=img_size

self.feature_length=[img_size[0]//32,img_size[0]//16,img_size[0]//8]

self.label_smooth=label_smooth

self.ignore_threshold=0.5

self.lambda_conf=1.0

self.lambda_cls=1.0

self.lambda_loc=1.0

self.cuda=cuda

defforward(self,input,targets=None):

#input為bs,3*(5+num_classes),13,13

#一共多少?gòu)垐D片

bs=input.size(0)

#特征層的高

in_h=input.size(2)

#特征層的寬

in_w=input.size(3)

#計(jì)算步長(zhǎng)

#每一個(gè)特征點(diǎn)對(duì)應(yīng)原來(lái)的圖片上多少個(gè)像素點(diǎn)

#如果特征層為13x13的話(huà),一個(gè)特征點(diǎn)就對(duì)應(yīng)原來(lái)的圖片上的32個(gè)像素點(diǎn)

stride_h=self.img_size[1]/in_h

stride_w=self.img_size[0]/in_w

#把先驗(yàn)框的尺寸調(diào)整成特征層大小的形式

#計(jì)算出先驗(yàn)框在特征層上對(duì)應(yīng)的寬高

scaled_anchors=[(a_w/stride_w,a_h/stride_h)fora_w,a_hinself.anchors]

#bs,3*(5+num_classes),13,13->bs,3,13,13,(5+num_classes)

prediction=input.view(bs,int(self.num_anchors/3),

self.bbox_attrs,in_h,in_w).permute(0,1,3,4,2).contiguous()

#對(duì)prediction預(yù)測(cè)進(jìn)行調(diào)整

conf=torch.sigmoid(prediction[...,4])#Conf

pred_cls=torch.sigmoid(prediction[...,5:])#Clspred.

#找到哪些先驗(yàn)框內(nèi)部包含物體

mask,noobj_mask,t_box,tconf,tcls,box_loss_scale_x,box_loss_scale_y=self.get_target(targets,scaled_anchors,in_w,in_h,self.ignore_threshold)

noobj_mask,pred_boxes_for_ciou=self.get_ignore(prediction,targets,scaled_anchors,in_w,in_h,noobj_mask)

ifself.cuda:

mask,noobj_mask=mask.cuda(),noobj_mask.cuda()

box_loss_scale_x,box_loss_scale_y=box_loss_scale_x.cuda(),box_loss_scale_y.cuda()

tconf,tcls=tconf.cuda(),tcls.cuda()

pred_boxes_for_ciou=pred_boxes_for_ciou.cuda()

t_box=t_box.cuda()

box_loss_scale=2-box_loss_scale_x*box_loss_scale_y

#losses.

ciou=(1-box_ciou(pred_boxes_for_ciou[mask.bool()],t_box[mask.bool()]))*box_loss_scale[mask.bool()]

loss_loc=torch.sum(ciou/bs)

loss_conf=torch.sum(BCELoss(conf,mask)*mask/bs)+\

torch.sum(BCELoss(conf,mask)*noobj_mask/bs)

#print(smooth_labels(tcls[mask==1],self.label_smooth,self.num_classes))

loss_cls=torch.sum(BCELoss(pred_cls[mask==1],smooth_labels(tcls[mask==1],self.label_smooth,self.num_classes))/bs)

#print(loss_loc,loss_conf,loss_cls)

loss=lo

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論