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