長(zhǎng)江大學(xué)電子信息學(xué)院 呂 星 王壯壯 楊友平
目標(biāo)檢測(cè)廣泛應(yīng)用在人臉檢測(cè)、行人檢測(cè)、車輛檢測(cè)等領(lǐng)域。目前從圖片和視頻中需要提取更多信息和特征,這就對(duì)網(wǎng)絡(luò)的準(zhǔn)確性和實(shí)時(shí)性提出了更高的要求。特別是在小目標(biāo)檢測(cè)方向,小目標(biāo)一般存在分辨率低、圖像模糊、攜帶的信息少,導(dǎo)致特征表達(dá)能力弱,即在提取特征的過程中收集的信息較少。小目標(biāo)有兩種定義方式,一種是相對(duì)尺寸大小,如目標(biāo)尺寸的長(zhǎng)寬是原圖像尺寸的0.1,即可認(rèn)為是小目標(biāo),另外一種是絕對(duì)尺寸的定義,即尺寸小于32×32像素的目標(biāo)即可認(rèn)為是小目標(biāo)。小目標(biāo)檢測(cè)在深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)模型中一直是一個(gè)難題。早期的目標(biāo)檢測(cè)框架大多數(shù)是針對(duì)通用的目標(biāo)來進(jìn)行檢測(cè),如經(jīng)典的One-stage算法YOLO和SSD,Two-stage算法faster-RCNN等,這些方法主要是針對(duì)通用目標(biāo)數(shù)據(jù)集來設(shè)計(jì)的解決方案,因此對(duì)于圖像中的小目標(biāo)來說,檢測(cè)效果不是很理想。
為了提高小目標(biāo)檢測(cè)的精度和大學(xué)課堂的一般情況,我們將學(xué)生的到課情況進(jìn)行統(tǒng)計(jì),我們使用神經(jīng)網(wǎng)絡(luò)對(duì)教室的首先我們將從課堂中獲取的視頻進(jìn)行逐幀預(yù)處理,然后使用YOLOv4網(wǎng)絡(luò)訓(xùn)練頭部檢測(cè)模型,最后將訓(xùn)練好的模型對(duì)課堂中的視頻、圖片進(jìn)行檢測(cè)。實(shí)驗(yàn)結(jié)果表明,通過本文基于深度學(xué)習(xí)的方法,與其它的小目標(biāo)檢測(cè)相比,速度和準(zhǔn)確率更好,模型泛化能力更強(qiáng)。
圖1 頭部檢測(cè)流程圖
本文針對(duì)課堂教室場(chǎng)景,通過頭部檢測(cè)的方法觀察課堂上學(xué)生的學(xué)習(xí)情況。首先,對(duì)輸入視頻進(jìn)行預(yù)處理,使用交叉訓(xùn)練的方式將數(shù)據(jù)集分成:訓(xùn)練集、測(cè)試集、驗(yàn)證集,之后調(diào)整網(wǎng)絡(luò)參數(shù)來訓(xùn)練頭部檢測(cè)模型,最后進(jìn)行頭部檢測(cè)。如圖1所示。
YOLO系列的算法屬于目標(biāo)檢測(cè)網(wǎng)絡(luò)中One-stage算法,相比于Two-stage算法,其速度相對(duì)就很快。One-stage算法因?yàn)閮H僅需要送入網(wǎng)絡(luò)一次就可以預(yù)測(cè)出所有的邊界框(如圖2所示),將Two-stage中很多的分類流程都省略掉,因而速度較快。
圖2 One-stage算法流程
然而,One-stage算法通常與Two-stage算法相比,準(zhǔn)確率都達(dá)不到理想的效果。在目前國(guó)外最新推出的目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLOv4之后,該算法的檢測(cè)速度和精度都超過之前其它方法。該網(wǎng)絡(luò)主要分成4部分:輸入端、骨干網(wǎng)絡(luò)、頸部、預(yù)測(cè)端。YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
輸出端:將輸入的圖片都固定為一定尺寸,為了增強(qiáng)網(wǎng)絡(luò)模型的泛化能力,該網(wǎng)絡(luò)對(duì)訓(xùn)練時(shí)的輸入端進(jìn)行馬賽克數(shù)據(jù)增強(qiáng)、SAT自對(duì)抗訓(xùn)練等操作。
骨干網(wǎng)絡(luò):使用CSPDarknet53,該模塊通過優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)來減少計(jì)算量,降低內(nèi)存成本,同時(shí)也保證檢測(cè)的準(zhǔn)確率。
頸部:網(wǎng)絡(luò)中加入了SPP模塊,用來固定輸出圖像的尺寸大小,為多尺度訓(xùn)練提供了基礎(chǔ)。網(wǎng)絡(luò)的頸部,使用PANet替換YOLO v3中的特征金字塔(FPN),前者加強(qiáng)了特征金字塔的結(jié)構(gòu),縮短了高低層特征融合的路徑。
預(yù)測(cè)端:預(yù)測(cè)使用原來yolo v3的頭部結(jié)構(gòu),輸出三種尺度的邊界框:13×13、26×26、52×52,小尺度輸出用來檢測(cè)大型目標(biāo),最大尺度用來檢測(cè)小目標(biāo)。
該實(shí)驗(yàn)是使用操作系統(tǒng)Ubuntu18.04,深度學(xué)習(xí)框架TensorFlow1.15.0和圖像處理庫(kù)Opencv3.4.3進(jìn)行的。使用的硬件是采用GeForce GTX 1660Ti Max-Q Design。
我們將大學(xué)課堂上的視頻和圖片作為自己的數(shù)據(jù)集來訓(xùn)練,選取課堂上2000張左右的圖片,數(shù)據(jù)集采用VOC格式,通過人工做標(biāo)簽的方式制作數(shù)據(jù)集。訓(xùn)練采用交叉驗(yàn)證的方式,將數(shù)據(jù)集分為訓(xùn)練集、測(cè)試集、驗(yàn)證集,訓(xùn)練集包含549張圖片,測(cè)試集包含1099張圖片,驗(yàn)證集包含550張圖片。
學(xué)習(xí)率設(shè)為0.001,每批次輸入64張圖片,將64張圖片分成64份放入網(wǎng)絡(luò)進(jìn)行訓(xùn)練,動(dòng)量設(shè)置為0.9,權(quán)重衰減為0.0005,最大迭代次數(shù)設(shè)為6萬次。頭部模型檢測(cè)結(jié)果如圖4所示。
通過YOLOv4訓(xùn)練好的模型,我們?cè)O(shè)計(jì)了一個(gè)頭部測(cè)的軟件系統(tǒng),用python語(yǔ)言編寫,系統(tǒng)測(cè)試效果如圖5所示。
我們對(duì)課堂中的學(xué)生頭部進(jìn)行檢測(cè),該目標(biāo)在檢測(cè)中存在目標(biāo)小、容易被遮擋的問題,對(duì)于以上問題,我們提出使用新的YOLOv4網(wǎng)絡(luò)來訓(xùn)練頭部檢測(cè)模型,實(shí)驗(yàn)結(jié)果證明該網(wǎng)絡(luò)對(duì)于小目標(biāo)的檢測(cè)達(dá)到了不錯(cuò)的效果,學(xué)生后排被遮擋的問題已經(jīng)被解決,同時(shí)也能保證檢測(cè)模型精度不受影響。
在設(shè)計(jì)好的數(shù)據(jù)可視化界面中,我們調(diào)用訓(xùn)練好的改進(jìn)yolo v4模型進(jìn)行測(cè)試,其結(jié)果表明頭部檢測(cè)的精度和遮擋問題已經(jīng)得到解決。圖5所示為可視化界面測(cè)試的效果。
總結(jié):本文提出基于YOLOv4的頭部檢測(cè)方法,采用網(wǎng)絡(luò)訓(xùn)練好的頭部模型,然后對(duì)圖片或視頻進(jìn)行檢測(cè)。通過上述的實(shí)驗(yàn)結(jié)果表明,YOLOv4算法雖然屬于One-stage目標(biāo)檢測(cè)算法中的一類,但其具備了One-stage和Two-stage兩種算法的優(yōu)點(diǎn):既準(zhǔn)確速度又快。在目標(biāo)檢測(cè)中難以突破的小目標(biāo)檢測(cè)方向,也具有良好的檢測(cè)定位能力。
圖4 頭部模型檢測(cè)結(jié)果
圖5 系統(tǒng)測(cè)試結(jié)果