關(guān)鍵詞:目標(biāo)檢測(cè);YOLO;行為識(shí)別;計(jì)算機(jī)視覺
0 引言
隨著社會(huì)的發(fā)展和公共衛(wèi)生意識(shí)的提升,煙草控制成為全球范圍內(nèi)的重要議題。公共場(chǎng)合禁煙政策的實(shí)施,旨在創(chuàng)造一個(gè)更加健康的環(huán)境。然而,傳統(tǒng)的吸煙監(jiān)測(cè)方式多依賴于人工檢查,既耗時(shí)又效率低下。因此,如何科技化、自動(dòng)化地檢測(cè)吸煙行為,成為研究的熱點(diǎn)。近年來,深度學(xué)習(xí)技術(shù)的迅猛發(fā)展為解決這一問題提供了新途徑。特別是在計(jì)算機(jī)視覺領(lǐng)域,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法已經(jīng)顯示出其強(qiáng)大的應(yīng)用潛力[1]。
在此背景下,本文提出一種基于YOLOv5的吸煙行為識(shí)別檢測(cè)系統(tǒng)。YOLOv5作為目前先進(jìn)的目標(biāo)檢測(cè)算法之一,以其高效率和準(zhǔn)確性在多個(gè)領(lǐng)域得到應(yīng)用。人們進(jìn)一步通過引入YOLOv8的C2f模塊,增強(qiáng)了系統(tǒng)對(duì)吸煙行為的檢測(cè)能力。本文旨在通過精確快速地識(shí)別公共場(chǎng)所的吸煙行為,輔助執(zhí)行禁煙政策,并促進(jìn)公共衛(wèi)生的提升。
本研究將詳細(xì)介紹吸煙行為檢測(cè)的意義、研究背景,以及基于YOLOv5的檢測(cè)系統(tǒng)的創(chuàng)新點(diǎn)。通過深入分析,旨在展現(xiàn)本研究的價(jià)值和實(shí)際應(yīng)用前景,為后續(xù)研究提供參考。
1 研究?jī)?nèi)容概述
本研究基于OpenCV+Jupyter Notebook+Labelimg 方式將自己收集的圖片和視頻進(jìn)行RGB轉(zhuǎn)換、抽幀、保存、標(biāo)注并導(dǎo)出符合YOLO格式DR2AW0N438rBnh9IEf3Ycg==的.txt文件和.jpg文件作為訓(xùn)練數(shù)據(jù)集。利用Python語言基于YOLOv5s 模型來識(shí)別吸煙行為,本系統(tǒng)會(huì)對(duì)進(jìn)入檢測(cè)區(qū)域范圍的人進(jìn)行信息捕捉采集,將采集到行為信息進(jìn)行相應(yīng)的數(shù)據(jù)處理,并將其送到Y(jié)OLOv5骨干網(wǎng)絡(luò)的深度卷積網(wǎng)絡(luò)(CSPDarknet[2]) ,對(duì)輸入圖像進(jìn)行特征提取。 骨干網(wǎng)絡(luò)的輸出會(huì)傳遞至特征融合模塊(具有FPNlike結(jié)構(gòu)),不同尺度的特征經(jīng)過處理后融合在一起。經(jīng)過融合的特征圖會(huì)被送入一系列的卷積層中,這些卷積層會(huì)為每個(gè)網(wǎng)格點(diǎn)預(yù)測(cè)若干個(gè)邊界框,每一個(gè)邊界框包含物體的位置、尺度、類別等信息。在預(yù)測(cè)結(jié)果中,選擇置信度超過一定閾值的邊界框,使用非極大值抑制(Non-Maximum Suppression,NMS) 來去除重復(fù)的檢測(cè)結(jié)果,最終剩下的邊界框和對(duì)應(yīng)的類別就是YOLOv5模型的檢測(cè)結(jié)果。并將YOLOv8的block文件下的C2f[3]模塊導(dǎo)入到Y(jié)OLOv5骨干網(wǎng)絡(luò)中改變網(wǎng)絡(luò)結(jié)構(gòu),利用創(chuàng)建帶有YOLOv8的C2f(Coarse to Fine) 模塊的.yaml文件訓(xùn)練數(shù)據(jù)集。達(dá)到特征提取值、圖像分類等更加快速、更加準(zhǔn)確,來優(yōu)化YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)的整體性能。
2 YOLOv5模型優(yōu)化
2.1 YOLOv5原始模型
YOLOv5的原始模型如圖1,構(gòu)成主要分為四個(gè)層次[4]:輸入端(Input)、骨干網(wǎng)層(Backbone)、中間層(Neck) 和頭層(Head)。在 YOLOv5 網(wǎng)絡(luò)中,C3[4]模塊是一個(gè)包含三個(gè)卷積層的模塊,每個(gè)卷積層后都跟隨著一個(gè)批量歸一化層和一個(gè)激活層。C3模塊以殘差連接的方式接入網(wǎng)絡(luò),以增強(qiáng)模型的特征提取能力。在模型的 Head 部分,C3 模塊主要負(fù)責(zé)提取圖像的紋理特征,這些細(xì)節(jié)特征用于模型在執(zhí)行具體任務(wù)(如物體檢測(cè)、分類)時(shí)對(duì)對(duì)象的細(xì)微差別進(jìn)行區(qū)分。在模型的 Backbone 部分,C3模塊則擔(dān)任著提取更高層次,更抽象的語義信息的任務(wù),如物體的整體形狀、物體的種類等特征。同時(shí),由于 Backbone 部分的作用主要是提取圖像中的全局和語義信息,所以在這里的C3 模塊、位置信息和細(xì)節(jié)信息的比例相對(duì)較小。
2.2 YOLOv5優(yōu)化模型
本文基于吸煙行為的檢測(cè),而香煙在提取圖片中屬于小目標(biāo),在深度學(xué)習(xí)的目標(biāo)檢測(cè)模型中,小目標(biāo)因其少量的像素信息和在卷積層中經(jīng)多層提取后易于丟失的特性,較難檢測(cè)。在YOLOv5中,C3模塊[4](CSP Bottleneck with 3 convolutions) ,即帶有三個(gè)卷積層的CSPNet(Cross Stage Partial Network) 瓶頸模塊,要負(fù)責(zé)進(jìn)行特征提取和特征的融合。但在C3的空間分辨率是有限的,在卷積神經(jīng)網(wǎng)絡(luò)中,隨著層次的加深,特征圖通常會(huì)經(jīng)過多次下采樣處理。這種設(shè)計(jì)使網(wǎng)絡(luò)可以學(xué)習(xí)更加抽象的語義信息,但同時(shí)也可能導(dǎo)致小目標(biāo)的空間信息丟失。用于小目標(biāo)特征提取的過程中尤其是通過多層網(wǎng)絡(luò)傳遞時(shí),細(xì)微的特征可能會(huì)逐漸消散,對(duì)小目標(biāo)來說這一點(diǎn)尤為重要。
C3模塊雖然通過部分跳連設(shè)計(jì)改善信息流動(dòng),但是依然無法完全避免在深層網(wǎng)絡(luò)中信息的逐步丟失,會(huì)導(dǎo)致小目標(biāo)的位置和特征信息退化。為了提高對(duì)香煙檢查的識(shí)別速度和精度,本文基于大量的實(shí)驗(yàn)求證并優(yōu)化了YOLOv5結(jié)構(gòu)模型,將YOLOv8的C2f模塊加入YOLOv5的Backbone層中,如圖2所示,這樣有效地加快類似香煙的小目標(biāo)檢測(cè)和細(xì)致邊界的劃分。C2f模塊可以在不同分辨率級(jí)別上提取不同大小的特征,可以提升YOLOv5目標(biāo)檢測(cè)的整體性能。YOLOv5 采用了卷積神經(jīng)網(wǎng)絡(luò)(CNN) 進(jìn)行圖像處理和特征提取。由于C2f模塊首先在較低分辨率上快速識(shí)別設(shè)定的傾向區(qū)域,然后在這些區(qū)域以更高分辨率進(jìn)行精細(xì)分析,因此可以減少在高分辨率下需要處理的數(shù)據(jù)量,極大地提升計(jì)算效率。通過在粗糙級(jí)別上先進(jìn)行檢測(cè),然后對(duì)檢測(cè)結(jié)果進(jìn)行精修,增強(qiáng)模型對(duì)于噪聲和其他干擾的魯棒性,并有助于減小誤檢和漏檢的情況。在粗糙到精細(xì)的過程中不斷修正和優(yōu)化目標(biāo)的位置和大小,提高系統(tǒng)在香煙小目標(biāo)定位的精度,特別是在復(fù)雜背景、邊界模糊和手部遮擋的情況下。通過在粗糙階段減少計(jì)算負(fù)擔(dān),C2f可在有限的計(jì)算資源下進(jìn)行更高效的運(yùn)算,這對(duì)于有資源限制的設(shè)備或系統(tǒng)非常重要。C2f模塊與YOLO系列的結(jié)合在計(jì)算機(jī)檢測(cè)的相關(guān)領(lǐng)域中取得了諸多成果。
2.3 C2f 模塊
針對(duì)類似香煙的小目標(biāo),在數(shù)據(jù)處理流經(jīng)太多的C3模塊的深度學(xué)習(xí)目標(biāo)檢測(cè)模型中,小目標(biāo)因其少量的像素信息和在卷積層中經(jīng)多層提取后易于丟失的特性,較難檢測(cè)。而基于YOLOv8的C2f模塊,如圖3 所示,可以在特征傳遞的過程中逐步集成更細(xì)粒度的信息,幫助模型更好地理解和重建圖像的細(xì)節(jié)并提高YOLOv5對(duì)小目標(biāo)的檢測(cè)能力[3]。
C2f類是一個(gè)建立在nn.Module基礎(chǔ)上的高級(jí)模型類,專門設(shè)計(jì)來實(shí)現(xiàn)CSP Bottleneck結(jié)構(gòu)中的兩個(gè)關(guān)鍵卷積層。在其初始化方法init中,這個(gè)類接收多個(gè)參數(shù):c1代表輸入特征圖的通道數(shù),c2為輸出特征圖的通道數(shù),n 指定了Bottleneck 模塊重復(fù)的次數(shù),shortcut表示是否采用shortcut[3]連接以促進(jìn)梯度流動(dòng)和特征重用,g 為卷積操作的分組數(shù),而e 是決定隱藏層通道數(shù)的擴(kuò)展因子。
構(gòu)造過程首先是依據(jù)擴(kuò)展因子e來確定隱藏通道數(shù)self.c,這一步驟是為了調(diào)節(jié)模型的寬度以適配不同的運(yùn)算需求。緊接著,類中設(shè)立了兩個(gè)專門進(jìn)行1x1 卷積操作的卷積層self.cv1和self.cv2。這兩層的職能是對(duì)特征圖進(jìn)行有效的通道數(shù)調(diào)整和特征提取。此外,通過nn.ModuleList,我們創(chuàng)建了一個(gè)包含n 個(gè)Bottleneck模塊的列表self.m,這個(gè)列表是CSP Bottle?neck結(jié)構(gòu)的核心,每個(gè)模塊都對(duì)特征進(jìn)行深入的分析和處理。
在前向傳播函數(shù)forward中,模型首先將輸入的特征圖x通過self.cv1卷積層進(jìn)行處理,這一步不僅調(diào)整了特征圖的通道數(shù),還將信息按通道維度一分為二。
接下來,我們將其中一部分特征圖作為輸入,依次傳遞給self.m中的每一個(gè)Bottleneck[3]模塊,并將各模塊處理后的輸出收集到列表y中。在獲取到所有必要的特征輸出后,最后一步是將這些特征圖沿通道維度進(jìn)行拼接,然后通過self.cv2卷積層進(jìn)行最終的輸出特征圖整合與調(diào)整,生成最終的輸出結(jié)果。
2.4 框的回歸損失(Box Regression Loss)
用于最小化預(yù)測(cè)的邊界框和真實(shí)邊界框之間的誤差[5]。YOLOv5 使用 CIoU 損失(Complete Intersec?tion over Union Loss) 來計(jì)算邊界框的損失,以提升模型的定位準(zhǔn)確性。在 YOLOv5 中,框的回歸損失是指預(yù)測(cè)的邊界框(Bounding Box) 和真實(shí)邊界框之間的誤差,這種誤差用于訓(xùn)練模型以便更準(zhǔn)確地定位對(duì)象。YOLOv5 使用的是完整的IoU(Intersection over Union) 損失[1],又稱為 CIoU Loss。CIoU 損失的計(jì)算公式如下:
式中, b 代表預(yù)測(cè)的邊界框,b_GT 是標(biāo)注的真實(shí)邊界框,ρ 是兩個(gè)邊界框中心之間的距離,c 是對(duì)角線長(zhǎng)度,v 是邊界框的寬高比之間的差異。傳統(tǒng)的 IoU 損失僅考慮了預(yù)測(cè)邊界框和真實(shí)邊界框之間的交集和并集,而 CIoU 損失則更進(jìn)一步,同樣考慮了邊界框的中心點(diǎn)距離以及寬高比例之間的差異。使用CIoU 損失的優(yōu)點(diǎn)是,模型可以在訓(xùn)練過程中同時(shí)考慮到目標(biāo)的位置,形狀以及大小,進(jìn)一步提高了定位的準(zhǔn)確性。
3 仿真實(shí)驗(yàn)
3.1 搭建模型測(cè)試平臺(tái)
YOLOv5模型的訓(xùn)練需要針對(duì)實(shí)際訓(xùn)練的物理環(huán)境,進(jìn)行相應(yīng)的調(diào)整,使訓(xùn)練效果達(dá)到最大化。所以綜合各種因素--weights權(quán)重文件選用官方預(yù)訓(xùn)練完成的yolov5s.pt 文件。--epochs 設(shè)置為100 輪,--batch-size調(diào)成一次16張。隨后,模型訓(xùn)練過程采納了余弦退火[5](Cosine Annealing) 策略來動(dòng)態(tài)地調(diào)整學(xué)習(xí)率。這種方法模仿了退火過程中溫度的周期性變化,將學(xué)習(xí)率隨著每一次迭代緩慢降低,類似于溫度在一個(gè)周期中逐漸減小直至接近零的過程。通過這樣的策略,學(xué)習(xí)率能夠在訓(xùn)練過程中實(shí)現(xiàn)更加精細(xì)的調(diào)節(jié),從而在初期快速下降探索優(yōu)化方向,在后期則更細(xì)致地進(jìn)行搜索,避免過早陷入局部最優(yōu)。這不僅提升了訓(xùn)練的效率,同時(shí)也增強(qiáng)了模型在未知數(shù)據(jù)上的泛化能力。搭建模型測(cè)試平臺(tái)配置如表1所示。
3.2 數(shù)據(jù)集預(yù)處理
數(shù)據(jù)集收集分為兩部分,其一是將網(wǎng)絡(luò)中1 866張吸煙圖片,使用LabelImg標(biāo)注工具來圖像數(shù)據(jù)。對(duì)于每一個(gè)目標(biāo),繪制一個(gè)緊密圍繞目標(biāo)的邊界框(Bound?ing Box) 并標(biāo)注其類別。保存標(biāo)注信息為YOLO格式,即每個(gè)圖像文件生成對(duì)應(yīng)一個(gè)同名的.txt文件,其中包含類別索引和歸一化的邊界框坐標(biāo)( ) 。其二利用攝像機(jī)分別錄制向陽處、背光處、近處和遠(yuǎn)處的視頻,利用openCV對(duì)視頻進(jìn)行切割提取,按照從0幀開始,每間隔2幀抽取1幀進(jìn)行抽幀。并用Jupyter Notebook 將錄像中每幀呈現(xiàn)的圖片進(jìn)行RGB的顏色轉(zhuǎn)換。將兩部分的數(shù)據(jù)集去除自動(dòng)生成圖像中不清晰的圖像,確認(rèn)所有圖像都符合YOLOv5要求的格式和色彩空間。將數(shù)據(jù)集中的images文件夾的圖像和labels文件夾中的標(biāo)簽按照比例7:3的方式劃分為訓(xùn)練集(train) 和驗(yàn)證集(val) 。按照YOLOv5的要求創(chuàng)建datasets數(shù)據(jù)集,并創(chuàng)建兩個(gè)子文件夾一個(gè)images文件夾和一個(gè)labels文件夾,并在這兩個(gè)文件夾中保持相同的目錄結(jié)構(gòu)。最后編輯YOLOv5的.yaml配置文件,指明訓(xùn)練集、驗(yàn)證集的路徑,以及類別的名稱和數(shù)量[1]。
3.3 實(shí)驗(yàn)結(jié)果分析
為驗(yàn)證本文章被提到的優(yōu)化后的YOLOv5模型的性能,本實(shí)驗(yàn)通過該模型與優(yōu)化前的YOLOv5模型進(jìn)行了對(duì)比實(shí)驗(yàn)[6,7]。為了實(shí)驗(yàn)結(jié)果盡最大可能的準(zhǔn)確,在實(shí)驗(yàn)中應(yīng)盡可能地將一系列的參數(shù)保持統(tǒng)一。其中兩者的--epochs均設(shè)置為100輪,--batch-size均調(diào)成一次16張。實(shí)驗(yàn)結(jié)果參數(shù)如表2所示,兩者在pre?cision(準(zhǔn)確率),recall(召回率),mAP_0.5(IoU閾值被設(shè)置為0.5),mAP_0.5:0.95(IoU 閾值從0.5 到 0.95,以0.05為步長(zhǎng)增加)均相差較大。優(yōu)化后YOLOv5模型相較于優(yōu)化前YOLOv5模型在precision提升約0.15,在recall提升約0.09,在mAP_0.5提升約0.13,在mAP_0.5:0.95提升約0.16。說明優(yōu)化后的模型可以使邊界框的回歸更加理想化,預(yù)測(cè)的準(zhǔn)確率也使之提高。
接著讓優(yōu)化前后兩個(gè)模型分別運(yùn)行645張shape 為(1,3,640,640) 的吸煙行為圖片,根據(jù)終端實(shí)時(shí)顯示的結(jié)果分別如圖4所示,明顯可以看出優(yōu)化后(圖4b) 的推理時(shí)間為9.6ms比優(yōu)化前(圖4a) 的10.3ms降低0.7ms,并且優(yōu)化后的模型運(yùn)行NMS算法對(duì)結(jié)果進(jìn)行優(yōu)化去除重疊的預(yù)測(cè)框,只保留最佳的預(yù)測(cè)框花費(fèi)的時(shí)間為1.3ms比優(yōu)化前模型降低了0.8ms。可見優(yōu)化后的YOLOv5模型相比于之前的模型在準(zhǔn)確率、召回率、執(zhí)行效率、檢測(cè)精度和實(shí)時(shí)性能均表現(xiàn)出了明顯的優(yōu)勢(shì)。
3.4 優(yōu)化前后模型實(shí)驗(yàn)效果對(duì)比
截取了如圖5所示的兩種模型針對(duì)某段實(shí)驗(yàn)視頻部分實(shí)驗(yàn)識(shí)別結(jié)果進(jìn)行對(duì)此參考,直接生動(dòng)地展示優(yōu)化的提升效果。第一行為優(yōu)化前模型截圖,第二行為優(yōu)化后模型截圖。通過對(duì)比截圖優(yōu)化后的模型檢測(cè)精確度明顯提高。
4 結(jié)束語
本文利用YOLOv5基礎(chǔ)上對(duì)吸煙行為識(shí)別與檢測(cè)進(jìn)行了相關(guān)研究,并在此基礎(chǔ)上提出了一種關(guān)于YO?LOv5骨干網(wǎng)絡(luò)的改進(jìn)方法。向YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)中添加YOLOv8中的C2f模塊改變網(wǎng)絡(luò)結(jié)構(gòu),優(yōu)化YO?LOv5網(wǎng)絡(luò)結(jié)構(gòu)的整體性能。C2f模塊工作時(shí),更高層的特征會(huì)通過上采樣擴(kuò)大到與下一層相同的空間維度,然后與下一層的特征進(jìn)行融合,這通常通過特征圖的逐元素加法或者卷積操作來完成。這樣逐層向下,最終形成一個(gè)融合了多尺度信息的特征圖,提高了模型對(duì)不同尺度目標(biāo)的檢測(cè)能力。相比于原始YOLOv5 模型無論是在precision,recall 還是在mAP_0.5,mAP_0.5:0.95 都得到了一定提升。在mAP_0.5:0.95的實(shí)驗(yàn)結(jié)果達(dá)到了63.97%,這很大程度上提高模型檢測(cè)香煙的準(zhǔn)確性,完成了該研究的指定目標(biāo),達(dá)到了預(yù)期效果。該研究通過解決吸煙行為檢測(cè)這一具體問題,對(duì)YOLOv5模型的適應(yīng)性、精度及實(shí)時(shí)性進(jìn)行了深入分析和優(yōu)化,為相關(guān)領(lǐng)域的學(xué)者提供了有價(jià)值的研究參考和新的研究方向。
本實(shí)驗(yàn)研究過程中,尚且存在一定的不足,比如對(duì)CSPDarknet網(wǎng)絡(luò)結(jié)果掌握度欠缺,在數(shù)據(jù)集收集過程中還是缺少對(duì)像惡劣天氣等綜合環(huán)境的考慮,導(dǎo)致在實(shí)驗(yàn)設(shè)計(jì)中部分模塊與實(shí)際環(huán)境結(jié)合較難實(shí)現(xiàn)。接下來,本項(xiàng)目將深入了解并研究環(huán)境對(duì)吸煙行為數(shù)據(jù)采集的影響,逐漸完善該系統(tǒng)模型,并進(jìn)一步提高該模型的綜合性能。
電腦知識(shí)與技術(shù)2024年30期