李昌夏 加文浩 黃政龍 黃文峰 甘恒
摘要:為了實(shí)現(xiàn)對公共場合中的抽煙行為的自動識別檢測,提出了利用YOLOv5算法獲取抽煙行為目標(biāo)的方法。該實(shí)驗(yàn)使用python編程語言在pytorch上建立模型,訓(xùn)練模型,最終能對吸煙行為進(jìn)行有效檢測,對抽煙檢測研究具有參考價(jià)值。
關(guān)鍵詞:YOLOv5;實(shí)時(shí)抽煙檢測;pytorch;python
中圖分類號 TP391? ? ?文獻(xiàn)標(biāo)識碼 A
文章編號:1009-3044(2022)08-0100-03
公共場合抽煙的危害很大,國家也相應(yīng)地出臺了在公共場合禁煙的政策。以前實(shí)行相關(guān)的政策都是靠工作人員巡邏發(fā)現(xiàn)并出言禁止,這樣做效率很低下。計(jì)算機(jī)視覺領(lǐng)域發(fā)展迅速,而抽煙檢測也屬于一種計(jì)算機(jī)視覺目標(biāo)檢測的行為,可以采用目標(biāo)檢測[1]的方法來實(shí)現(xiàn)。目前,目標(biāo)檢測在很多領(lǐng)域都取得顯著成就[2],但是在抽煙檢測領(lǐng)域方面進(jìn)行研究卻幾乎沒有。該研究可以有效節(jié)省成本,對公共場合禁煙政策的實(shí)行有很大的推動作用。
1 YOLOv5算法簡介
YOLO[3]系列是基于深度學(xué)習(xí)的回歸方法。該系列陸續(xù)誕生出YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5。本實(shí)驗(yàn)采用的算法是YOLOv5,它是一種單階段目標(biāo)檢測的算法,因?yàn)樵撍惴梢愿鶕?jù)落地要求靈活地通過chaneel和layer的控制因子來配置和調(diào)節(jié)模型,所以在比賽和落地中應(yīng)用比較多。同時(shí)它有YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s四種模型。它具有以下優(yōu)點(diǎn):1)在pytorch環(huán)境下編寫;2)可以很容易編譯成ONNX和Core ML;3)運(yùn)行速度很快,每秒可以達(dá)到140FPS的速度;4)模型精度高;5)集成了YOLOv3和YOLOv4的部分優(yōu)秀特性,進(jìn)行了推陳出新的改進(jìn)。
2 相關(guān)技術(shù)
2.1 輸入端
2.1.1 Mosaic數(shù)據(jù)增強(qiáng)
Mosaic數(shù)據(jù)增強(qiáng)技術(shù)[4]采用了四張圖片的隨機(jī)縮放、隨機(jī)剪裁、隨機(jī)排布的方式對數(shù)據(jù)進(jìn)行拼接,相比CutMix數(shù)據(jù)增強(qiáng)多用了兩張圖片。在目標(biāo)識別過程中,要識別的目標(biāo)有大目標(biāo)、中等目標(biāo)、小目標(biāo),并且三種目標(biāo)的占比例不均衡,其中,小目標(biāo)的數(shù)量是最多的,但是出現(xiàn)的頻率很低,這種情況就會導(dǎo)致在bp時(shí)對小目標(biāo)的優(yōu)化不足,模型正確識別小目標(biāo)的難度比識別中、大目標(biāo)的難度要大很多,于是對于小目標(biāo)來說很容易出現(xiàn)誤檢和漏檢的情況。Mosaic數(shù)據(jù)增強(qiáng)技術(shù)做出改進(jìn)后,上述的問題得到有效的解決。該技術(shù)的優(yōu)點(diǎn)是:⑴豐富了數(shù)據(jù)集,采用“三個(gè)隨機(jī)”的方式對數(shù)據(jù)進(jìn)行拼接豐富了檢測的數(shù)據(jù)集,尤其是隨機(jī)縮放增加了很多小目標(biāo),克服了小目標(biāo)的不足,讓網(wǎng)絡(luò)的魯棒性得到提高;⑵減少GPU的使用,在Mosaic增強(qiáng)訓(xùn)練時(shí),四張圖片拼接在一起,GPU可以直接計(jì)算四張圖片的數(shù)據(jù),讓Mini-batch的大小減少了很多,這使得一個(gè)GPU就可以達(dá)到比較可觀的效果。
2.1.2 自適應(yīng)anchor
自適應(yīng)anchor是check_anchors函數(shù)通過遺傳算法與Kmeans迭代算出的最大可能召回率的anchor組合。在網(wǎng)絡(luò)模型的訓(xùn)練過程中,網(wǎng)絡(luò)在初始化的錨框的基礎(chǔ)上輸出預(yù)測框,然后與真實(shí)框groundtruth進(jìn)行對比,計(jì)算兩個(gè)框之間的差值,再根據(jù)差值進(jìn)行反向更新,迭代網(wǎng)絡(luò)參數(shù),最后求出最佳的錨框值。自適應(yīng)的anchor能夠更好地配合網(wǎng)絡(luò)訓(xùn)練,提高模型的精度,減少對anchor的設(shè)計(jì)難度,具有很好的實(shí)用性。
2.1.3 自適應(yīng)圖片縮放
為了提高模型的推理速度,YOLOv5提出自適應(yīng)圖片縮放,根據(jù)長寬比對圖像進(jìn)行縮放,并添加最少的黑邊,減少計(jì)算量。該方法是用縮放后的長邊減去短邊再對32進(jìn)行取余運(yùn)算,求出padding。在訓(xùn)練時(shí)并沒有采用縮減黑邊的方法,該方法只是在測試模型推理的時(shí)候才使用,這樣提高了目標(biāo)檢測的準(zhǔn)確率和速度。
2.2 Backbone
2.2.1 Focus結(jié)構(gòu)
該結(jié)構(gòu)采用切片操作,將特征切片成四份,每一份將當(dāng)成下采樣的特征,然后在channel維度進(jìn)行concat。例如:原始608*608*3的數(shù)據(jù)圖片,經(jīng)過切片操作先變成304*304*12的特征圖,再經(jīng)過一次32個(gè)卷積核的卷積操作,變成304*304*32的特征圖。
2.2.2 CSP結(jié)構(gòu)
YOLOv5中的CSP[5]結(jié)構(gòu)應(yīng)用于兩處,一處是CSP1_X結(jié)構(gòu)應(yīng)用于Backbone的主干網(wǎng)絡(luò)中,另一處的CSP2_X結(jié)構(gòu)應(yīng)用于Neck中,用于加強(qiáng)網(wǎng)絡(luò)的特征融合的能力。CSPNet主要從網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的角度解決推理中從計(jì)算量很大的問題。該結(jié)構(gòu)的優(yōu)點(diǎn)有:1)增強(qiáng)CNN的學(xué)習(xí)能力,使得模型在輕量化的同時(shí)保持較高的準(zhǔn)確性;2)減低計(jì)算的瓶頸問題;3)減低內(nèi)存的分險(xiǎn)。
2.3 Neck
2.3.1 PFN+PAN結(jié)構(gòu)
這個(gè)結(jié)構(gòu)是FPN和PAN的聯(lián)合。FPN是自頂向下的,將高層的特征信息通過上采樣的方式進(jìn)行傳遞融合,得到進(jìn)行預(yù)測的特征圖,而PAN正好與FPN的方向是相反的方向,它是自底向上地采取特征信息。兩個(gè)結(jié)構(gòu)各自從不同的主干層對不同的檢測層進(jìn)行參數(shù)聚合。兩個(gè)結(jié)構(gòu)的強(qiáng)強(qiáng)聯(lián)合讓得到的特征圖的特征更加明顯和清楚。
2.4 Prediction
2.4.1 Bounding box的損失函數(shù)
Bounding box損失函數(shù)[6]增加了相交尺度的衡量方式,有效緩解了當(dāng)兩個(gè)框不相交和兩個(gè)框大小完全相同的兩種特殊情況。因?yàn)楫?dāng)預(yù)測框和目標(biāo)框不相交時(shí),IOU=0,無法反應(yīng)兩個(gè)框距離的遠(yuǎn)近的時(shí)候,此時(shí)的損失函數(shù)不可導(dǎo);兩個(gè)框大小完全相同,兩個(gè)IOU也相同,IOU_LOSS無法區(qū)分以上兩種特殊情況。
2.4.2 nms非極大值抑制
在目標(biāo)檢測過程的后續(xù)處理中,對于大量的目標(biāo)框的篩選問題,通常會進(jìn)行nms操作,以此來達(dá)到一個(gè)不錯的效果。YOLOv5算法同樣采用了加權(quán)的nms操作。
3 識別吸煙行為實(shí)驗(yàn)
3.1 數(shù)據(jù)源與處理
為了保證有效的檢測精度,制作了抽煙行為數(shù)據(jù)集。分別從正視、側(cè)視、俯視三個(gè)角度對不同人進(jìn)行抽煙行為視頻錄制,將吸煙行為定義為“somke”類,對錄制的視頻進(jìn)行截圖、篩選;用LabelImg標(biāo)記軟件對圖像進(jìn)行標(biāo)注,生成 .txt 文件。共獲得1200張有效圖片,其中訓(xùn)練集包含圖片1000張,測試集200張。將數(shù)據(jù)集的路徑寫入.yaml文件。
3.2 實(shí)驗(yàn)過程
該實(shí)驗(yàn)采用的算法是YOLOv5的目標(biāo)檢測算法,該算法具有很高的靈活性和很快的速度,在訓(xùn)練模型的時(shí)候還會對數(shù)據(jù)進(jìn)行自動地加工處理,通過自動縮放、色彩空間調(diào)整和馬賽克增強(qiáng)三種手段讓目標(biāo)物體變得更容易識別,提高模型的準(zhǔn)確度。同時(shí)也正是因?yàn)閷?shù)據(jù)進(jìn)行上述的處理加工才讓“煙”這種小的目標(biāo)識別得更加精確。
本實(shí)驗(yàn)用python編程語言在pytorch上構(gòu)建模型,通過大量的數(shù)據(jù)集訓(xùn)練模型,模型訓(xùn)練結(jié)束后評估模型的準(zhǔn)確率,最后使用模型進(jìn)行檢測。檢測方式可以是使用照片、使用視頻和連接攝像頭實(shí)時(shí)檢測。
3.3 實(shí)驗(yàn)結(jié)果分析
如圖5是利用YOLOv5算法下對吸煙行為的檢測情況,圖中的“somke 0.9”是圖中動作與吸煙動作的相似度,從俯視角度的識別結(jié)果可以看出該模型能對吸煙行為做出較為精準(zhǔn)的識別。
mAP@0.5(mean Average Precision loU=0.5)即對每一類的所有圖片的平均精度再對類求平均,如圖6,本實(shí)驗(yàn)中的mAP@0.5的值在0.65左右表明在系統(tǒng)預(yù)測出來標(biāo)記結(jié)果與原圖片的標(biāo)記重合度為0.5時(shí)檢測精度能達(dá)到0.65。
4 總結(jié)
對于本實(shí)驗(yàn)的抽煙實(shí)時(shí)檢測采用的是YOLOv5算法,從數(shù)據(jù)集的制作到模型的選擇和訓(xùn)練整個(gè)實(shí)驗(yàn)過程,得到以下結(jié)論:
本實(shí)驗(yàn)對抽煙行為的檢測可以實(shí)現(xiàn)對照片、視頻和攝像頭實(shí)時(shí)進(jìn)行檢測,但是由于制作數(shù)據(jù)集的場景比較單一,所以對地點(diǎn)和攝像頭的拍攝角度有要求,攝像頭的放置高度對也會有一定影響,比如攝像頭安置的高度、目標(biāo)識別距離等。如果太高太遠(yuǎn)的話,識別的數(shù)據(jù)就會很小,識別小目標(biāo)就會增加難度,所以綜合來說模型還有很大的完善和進(jìn)步空間。
參考文獻(xiàn):
[1] 張慧,王坤峰,王飛躍.深度學(xué)習(xí)在目標(biāo)視覺檢測中的應(yīng)用進(jìn)展與展望[J].自動化學(xué)報(bào),2017,43(8):1289-1305.
[2] 宋彬彬.計(jì)算機(jī)視覺技術(shù)在自動化中的應(yīng)用探析[J].電子世界,2020(20):10-11.
[3] 陳輝東,丁小燕,劉艷霞.基于深度學(xué)習(xí)的目標(biāo)檢測算法綜述[J].北京聯(lián)合大學(xué)學(xué)報(bào),2021,35(3):39-46.
[4] 包迪.基于YOLO V4+Word2Vec的試卷問答題評分算法研究[D].昆明:昆明理工大學(xué),2021:33.
[5] 王立輝.基于卷積神經(jīng)網(wǎng)絡(luò)的行人檢測與跟蹤算法研究[D].武漢:武漢科技大學(xué),2021:11.
[6] 沈記全,陳相均,翟海霞.改進(jìn)交并比邊界框回歸損失的YOLOv3檢測算法[J].計(jì)算機(jī)工程,2021(4):4-5.
【通聯(lián)編輯:梁書】