◆詹文杰 邱梓逸 蔡振雄
基于YOLOv4與光流法的行人檢測(cè)和計(jì)數(shù)方法研究
◆詹文杰 邱梓逸 蔡振雄
(廣州大學(xué)華軟軟件學(xué)院(廣州) 廣東 51000)
針對(duì)行人進(jìn)行檢測(cè)與統(tǒng)計(jì)的問題進(jìn)行分析和研究,提出一種基于深度學(xué)習(xí)的方法。首先分析YOLOv4算法的優(yōu)越性,并使用監(jiān)控下獲取的行人圖像和YOLOv4算法,訓(xùn)練出深度學(xué)習(xí)模型。再在監(jiān)控下進(jìn)行實(shí)時(shí)行人檢測(cè)和統(tǒng)計(jì),針對(duì)部分實(shí)驗(yàn)結(jié)果精度較小的問題,采用光流法進(jìn)行改進(jìn)。改進(jìn)后的檢測(cè)速度以及檢測(cè)精度基本滿足行人檢測(cè)和計(jì)數(shù)的需求。
YOLOv4;行人檢測(cè);OPENCV;光流法
公共區(qū)域經(jīng)常出現(xiàn)因?yàn)槿肆髁窟^大,造成公共衛(wèi)生和公共安全的困擾。實(shí)時(shí)行人檢測(cè)和計(jì)數(shù)可以使管理部門在管理人群時(shí),做出更加合理和高效的決策。且高清監(jiān)控?cái)z像頭在公共區(qū)域的普及,讓更高質(zhì)量的行人檢測(cè)和計(jì)數(shù)有了保障。
目前通用的行人計(jì)數(shù)所采用的算法大致分為3類:基于高斯過程回歸的行人計(jì)數(shù)方法[1]、基于“幀差法”的行人計(jì)數(shù)方法[2]和基于目標(biāo)檢測(cè)的行人計(jì)數(shù)法[3]。這三種方法中,高斯混合模型的計(jì)算量較大且收效緩慢,不適合人數(shù)較多的情況;“幀差法”對(duì)環(huán)境要求較為苛刻,無法滿足在公共區(qū)域進(jìn)行行人檢測(cè)的要求,選擇過低的閾值不能處理好背景,過高則會(huì)出現(xiàn)無法正常識(shí)別行人。
除開上述三種算法,近年學(xué)者還提出了其他算法。其中由Joseph Redmon等人提出的YOLO系列算法,因?yàn)閮?yōu)異的檢測(cè)精度和檢測(cè)速度,迅速被廣泛應(yīng)用。
本文在使用YOLOv4的基礎(chǔ)上,利用LK光流法,訓(xùn)練出一種基本滿足行人檢測(cè)和計(jì)數(shù)要求的深度學(xué)習(xí)模型。
YOLO算法的特點(diǎn)是將目標(biāo)檢測(cè)轉(zhuǎn)換成回歸問題,用單一卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)預(yù)測(cè)邊界框和類別概率,速度快,可實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)。YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,CSPDarknet53作為骨干網(wǎng)絡(luò),SPP作為Neck的附加模塊,PANet作為Neck的特征融合模塊,YOLOv3作為Head[4]。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv4和前代YOLOv3不同點(diǎn)主要表現(xiàn)在三個(gè)方面:
(1)在2019年底提出的CutMix數(shù)據(jù)上推出Mosaic,豐富了檢測(cè)物體的背景。
(2)采用比YOLOv3更加先進(jìn)的CSPDarknet53主干網(wǎng)絡(luò),包含5個(gè)CSP模塊,每個(gè)CSP模塊采用3×3的卷積核,因此可以起到優(yōu)化采樣的作用。讓YOLOv4增強(qiáng)了CNN的學(xué)習(xí)能力并且降低了計(jì)算所需的內(nèi)存和計(jì)算要求。
(3)Mish激活函數(shù)是2019年下半年提出的激活函數(shù),相對(duì)于采用2013年提出的leaky_relu激活函數(shù),Mish的梯度更平滑,如圖2所示。
Yolov4中使用的Dropblock,其實(shí)和常見網(wǎng)絡(luò)中的Dropout功能類似,也是緩解過擬合的一種正則化方式。
但傳統(tǒng)的dropout對(duì)conv效果較差,因?yàn)橥ǔ>矸e、激活和池化層三層無條件連用,共享語義信息。即使Dropout在卷積層上效果并不好,輸入的信息仍舊能夠被送到下一層,容易導(dǎo)致網(wǎng)絡(luò)過擬合。
(4)YOLO V4的表現(xiàn)相當(dāng)驚人,如下圖所示,在精確度相當(dāng)?shù)那闆r下,YOLO V4的速度是其他模型的3、4倍。圖3展示了在相同 GPU 下,測(cè)量的各種檢測(cè)方法性能對(duì)比。
圖2 Mish激活函數(shù)與leaky_relu對(duì)比圖
圖3 性能對(duì)比
LK光流算法全稱為L(zhǎng)ucas–Kanade光流算法,由Bruce D. Lucas 和與Takeo Kanade提出[5],其本質(zhì)是通過最小二乘法以不需要迭代的方法求解光流。
“亮度恒定”、“運(yùn)動(dòng)幅度小”和“空間基本一致”是LK光流法的三個(gè)假設(shè)條件。通過“亮度恒定”假設(shè)推導(dǎo)出的圖像的約束方程,其中(,,)表示時(shí)刻(,)位置的像素:
將上述方程進(jìn)行一階“泰勒”展開,并且根據(jù)光流的定義:
將(dx/dt, dy/dt)用(u,v)替換得到光流基本方程[6]:
監(jiān)控的行人照片和百度飛槳行人開源數(shù)據(jù)集組成了實(shí)驗(yàn)所用的數(shù)據(jù)集,通過圖像標(biāo)識(shí)軟件Labelme.標(biāo)注完后,一張行人照片會(huì)生成一份對(duì)應(yīng)的JSON。將所生成的JSON分別放到了train和val文件夾,這兩個(gè)文件中同時(shí)放到IMGJSON文件里,標(biāo)注的圖片打包存放在IMG文件夾里,圖片為彩色 JPG格式。完成數(shù)據(jù)清洗后,將IMG和IMGJSON的數(shù)據(jù)集轉(zhuǎn)化為適合YOLO的coco數(shù)據(jù)集模式。
因?yàn)榇颂帣z測(cè)目標(biāo)只有行人,將YOLOv4官方訓(xùn)練案例中的YOLOv4.cfg中的classes類別數(shù)修改,下載官方“預(yù)訓(xùn)練”模型后,通過訓(xùn)練上一步處理好的數(shù)據(jù)集,即可得到魯棒性較高的行人檢測(cè)模型。
實(shí)驗(yàn)通過讀取視頻或IP監(jiān)控?cái)z像頭來進(jìn)行行人檢測(cè)。利用OPENCV中提供的視頻操作類VideoCapture,來完成視頻的獲取,VideoCapture既支持各種格式的視頻文件,也支持直接在攝像頭中實(shí)時(shí)讀取,滿足行人檢測(cè)的需要。
行人計(jì)數(shù)是在行人檢測(cè)的基礎(chǔ)上,統(tǒng)計(jì)一段時(shí)間內(nèi)的行人數(shù)量。實(shí)驗(yàn)中以一幀為單位時(shí)間,如圖4在交互界面中實(shí)時(shí)顯示。
圖4 行人檢測(cè)與計(jì)數(shù)
通過上述實(shí)驗(yàn),可以發(fā)現(xiàn)在僅使用YOLOv4進(jìn)行行人檢測(cè)和計(jì)數(shù)時(shí),會(huì)出現(xiàn)如圖5所示,把服裝店中的服裝檢測(cè)成行人的錯(cuò)誤。通過使用LK光流法對(duì)模型進(jìn)行改進(jìn):
圖5 改進(jìn)前的效果
OPENCV提供了關(guān)于LK光流法的calcOpticalFlowPyrLK方法。通過標(biāo)記標(biāo)志點(diǎn)以及L-K光流法來檢測(cè)連續(xù)兩幀運(yùn)動(dòng)情況下的跟蹤的特征點(diǎn)。
圖6 光流法效果圖
如果是一個(gè)視頻(連續(xù)的很多“幀”),那么把每?jī)蓭g的運(yùn)動(dòng)點(diǎn)連接起來,就可以發(fā)現(xiàn)運(yùn)動(dòng)的物體的整個(gè)軌跡。通過圖6,圖7對(duì)比發(fā)現(xiàn),當(dāng)背景恒定不動(dòng)時(shí),運(yùn)動(dòng)物體在光流法的特征點(diǎn)標(biāo)記下,會(huì)出現(xiàn)拖拽痕跡。反之,靜止物體不會(huì)產(chǎn)生拖拽痕跡。
圖7 光流法效果圖
通過光流法的上述實(shí)驗(yàn)案例分析,LK光流法可以有效分析出運(yùn)動(dòng)物體。所以添加LK光流法后,模型能夠判斷服裝店服裝為非運(yùn)動(dòng)物體,排除出行人計(jì)數(shù)范圍,如圖8所示,有效解決了將服裝檢測(cè)為行人的問題。
圖8 改進(jìn)后的效果
針對(duì)實(shí)現(xiàn)行人檢測(cè)和計(jì)數(shù),為這一需求,本文進(jìn)行了一系列的研究和分析。通過行人數(shù)據(jù)集進(jìn)行訓(xùn)練,提出了YOLOv4算法和LK光流法相結(jié)合的方法,取得了不錯(cuò)的檢測(cè)效果,基本實(shí)現(xiàn)了對(duì)行人的檢測(cè)和計(jì)數(shù),并且有較好的檢測(cè)精度和速度。說明該方法有一定的應(yīng)用價(jià)值。
[1]楊亦樂,高瑋瑋,馬曉峰,蔣曉.基于深度學(xué)習(xí)的行人數(shù)量統(tǒng)計(jì)方法[J].軟件,2019,40(11):119-122+151.
[2] REDMON J,DIVVALA S K,GIRSHICK R,et al.You only look once:unified,real-time object detection[C]// Computer Vision and Pattern Recognition.Las Vegas:IEEE,2016:779-788.
[3]REDMON J,F(xiàn)ARHADI A.YOLO9000:better,faster,stronger[C]// Computer Vision and Pattern Recognition.Honolulu:IEEE,2017:6517-6525.
[4]管軍霖,智鑫.基于YOLOv4卷積神經(jīng)網(wǎng)絡(luò)的口罩佩戴檢測(cè)方法[J].現(xiàn)代信息科技,2020,4(11):9-12.
[5]高屾,朱成杰.基于運(yùn)動(dòng)預(yù)測(cè)的優(yōu)化光流目標(biāo)跟蹤算法[J].新余學(xué)院學(xué)報(bào),2020,25(02):19-24.
[6]張鴻陽,韓建峰.基于改進(jìn)LK光流法的車流量檢測(cè)[J].內(nèi)蒙古工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2019,38(01):45-50.
廣東省科技創(chuàng)新戰(zhàn)略專項(xiàng)資金項(xiàng)目,項(xiàng)目編號(hào)(pdjh2020b0868);全國(guó)大學(xué)生創(chuàng)新創(chuàng)業(yè)培訓(xùn)計(jì)劃項(xiàng)目,項(xiàng)目編號(hào)(202012618003)
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年3期