孫乾宇,張振東
(上海理工大學 機械工程學院,上海 200093)
隨著消費水平的提高,人們外出旅游,商場購物已然成為常態(tài),導致區(qū)域人流量急劇增加.一方面,在人流密集的場景下容易產(chǎn)生踩踏事件以及打架,縱火等惡劣行為造成人流恐慌.在另一方面,可以幫助商場等各大商鋪有效的統(tǒng)計客流量.因此對特定場合的人流密度進行精確的估計具有重大意義.
現(xiàn)有的人流密度估計方法主要有兩種,一種是針對檢測的方法,另一種是針對回歸的方法.對于檢測的方法來說一般假設(shè)可以通過使用給定的對象檢測器[1–3]來檢測和定位人群圖像上的每個人,然后通過累積每個檢測到的人來計數(shù),然而,這些傳統(tǒng)的檢測方法[4–6]需要耗費很大的計算資源而且還會受到行人人為遮擋以及背景復(fù)雜的限制.在實際情況下,精度較低,魯棒性較差.基于回歸的方法是給定一張圖片,直接從圖片中回歸出人口的數(shù)量.Chan 等[7]使用手動制作的圖像特征來將人數(shù)統(tǒng)計任務(wù)轉(zhuǎn)變成回歸任務(wù);文獻[8,9]提出了更多檢測人數(shù)估計任務(wù)相關(guān)的特征,包括針對整體結(jié)構(gòu)的特征和局部紋理的特征;Lempitsky等人[10]提出了一種密度圖回歸的算法,該算法通過對檢測圖像的密度圖進行積分來統(tǒng)計人群個數(shù).然而這些基于回歸的方法在復(fù)雜背景下準確性相對較低.
近年來隨著YOLO[11–13]系列模型的出現(xiàn),以超高的推理速度和較高的精度在各個鄰域廣泛應(yīng)用.然而在人流密集和行人互相遮擋的情況下直接使用目標檢測模型精度相對較低.因此提出了基于YOLOv3增強模型融合的人流密度估計方法.一方面,使用YOLOv3 增強模型來提高精度.另一方面,使用人流頭部標注數(shù)據(jù)集和人流身體標注數(shù)據(jù)集分別訓練兩個模型進行融合來提高魯棒性.模型融合的方法在數(shù)據(jù)集上進行測試,結(jié)果表明具有較高的精度和魯棒性.
YOLOv3 算法的基本思想可以分成兩部分:
首先,根據(jù)一定的規(guī)則在圖片上生成一系列候選區(qū)域,然后根據(jù)這些候選區(qū)域與圖片上物體的真實區(qū)域之間的位置關(guān)系對候選區(qū)域進行標記.跟真實框之間的距離小于閾值的那部分候選區(qū)域會被標注為正樣本,同時將真實框的位置坐標作為正樣本的位置坐標目標值.距真實框的距離較大的那些候選區(qū)域則會被標注為負樣本,負樣本不需要預(yù)測位置坐標或者類別信息.
其次是使用卷積神經(jīng)網(wǎng)絡(luò)提煉出圖片的特征,并對候選區(qū)域的位置坐標和類別信息進行預(yù)測.這樣,可以將每個預(yù)測框視為一個樣本,并根據(jù)真實框相對于其的位置坐標和類別信息來獲取標簽值.使用網(wǎng)絡(luò)模型來預(yù)測其位置和類別,并比較網(wǎng)絡(luò)預(yù)測值和標簽值.這樣就可以構(gòu)建損失函數(shù)來進行訓練.YOLOv3 算法的思想如圖1所示.
YOLOv3 采用的骨干網(wǎng)絡(luò)是DarkNet-53.DarkNet-53 網(wǎng)絡(luò)結(jié)構(gòu)沒有池化層,在前向傳播過程中,通過改變卷積核的步長代替池化層,特征提取模型采用很多3×3和1×1的卷積層,再加上全連接層共有53 層.在經(jīng)過DarkNet-53 特征提取后,為了提高不同大小物體的檢測精度,YOLOv3在3個不同尺度上經(jīng)行檢測,每個尺度有3個界限值(bounding box),最后由與真實框的交并比(IOU)最大的界限值預(yù)測目標.YOLOv3 結(jié)構(gòu)如圖2所示.圖中Resn表示一個殘差塊,其中含有n個殘差單元;DBL是YOLOv3的基本組件,表示卷積(conv)+批歸一化(BN)+激活函數(shù)leaky ReLU.
圖1 YOLOv3 算法思想
為了在保持推理速度的同時最大限度的提升檢測精度,YOLOv3 增強模型在原網(wǎng)絡(luò)的基礎(chǔ)下做了如下改進:
(1)骨干網(wǎng)絡(luò)采用ResNet50-vd 替換原有的DarkNet-53.ResNet-vd是ResNet 系列的改進網(wǎng)絡(luò),ResNetvd的參數(shù)量和計算量與ResNet 幾乎一致,但是精度提升了2%.雖然DarkNet-53 也使用了殘差網(wǎng)絡(luò)如圖3,但是同ResNet50-vd 相比,ResNet50-vd在速度和精度上都有一定的優(yōu)勢,而且選用ResNet[14]系列網(wǎng)絡(luò)更加容易擴展.可以根據(jù)不同的業(yè)務(wù)需求,靈活選擇ResNet18、50、101 等不同的網(wǎng)絡(luò)作為目標檢測的骨干網(wǎng)絡(luò).
圖2 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)圖
圖3 殘差結(jié)構(gòu)
(2)引入可變形卷積(Deformable Convolution,DCN)[15],替代原始卷積操作.可變形卷積已經(jīng)在各個鄰域的視覺任務(wù)中廣泛驗證過其效果.在考慮到保持速度與提升精度平衡的前提條件下,YOLOv3 增強模型使用可變形卷積替換了主干網(wǎng)絡(luò)中第5 階段部分的3×3 卷積.
(3)由于YOLOv3 作為單階段目標檢測模型,在定位精度上相比Faster RCNN、Cascade RCNN 等兩階段目標檢測模型有著其天然的劣勢,所以YOLOv3 增強模型增加了IoU 損失[16]分支,可以一定程度上提高邊界框的定位精度,縮小單階段目標檢測網(wǎng)絡(luò)和兩階段檢測網(wǎng)絡(luò)精度的差距.
傳統(tǒng)的L2 損失將檢測目標的位置坐標信息當作互相獨立的4個變量來進行訓練.而IoU 損失直接使用預(yù)測的邊界框與基本真實值之間的最大重疊,并將所有綁定變量作為一個整體進行回歸,將位置坐標信息當作一個整體進行訓練.所以使用IoU 損失能夠獲得更加精準的訓練效果和檢測結(jié)果.L2 損失和IoU 損失說明如圖4所示.
圖4 L2 損失和IoU 損失
使用在Object365 數(shù)據(jù)集上訓練的模型作為預(yù)訓練模型,在COCO 數(shù)據(jù)集上進行訓練和驗證,用TensorRT 進行部署推理.不同改進變量的模型驗證精度和推理速度如表1.
表1 不同改進變量的模型驗證精度
實驗環(huán)境為NVIDIA Tesla V100 16 GB 顯存GPU,用Tensorflow 搭建的YOLO 目標檢測模型進行訓練.
為了驗證所提出方法的精度和魯棒性.實驗所用的訓練和測試數(shù)據(jù)集來自公開數(shù)據(jù)集ShanghaiTech.ShanghaiTech 數(shù)據(jù)集是一個大規(guī)模的人群統(tǒng)計數(shù)據(jù)集,其包含1198 幅圖像.為了提高精度,還添加了公開數(shù)據(jù)集UCF-CC-50的部分數(shù)據(jù).實驗原始數(shù)據(jù)集共包含2000 張訓練圖片數(shù)據(jù)和1000 張測試圖片數(shù)據(jù).將2000 張訓練數(shù)據(jù)用LabelImg 數(shù)據(jù)標注工具分別進行人流頭部標注和人流身體標注,從而構(gòu)建了兩個訓練數(shù)據(jù)集:頭部集和身體集.
為了防止由于訓練數(shù)據(jù)不足而導致模型訓練過程發(fā)生過擬合,在數(shù)據(jù)處理階段采用了隨機反轉(zhuǎn)、移動、改變飽和度、改變亮度、添加噪聲等圖像增強技術(shù).圖像增強效果圖如圖5所示.
圖5 圖像增強效果圖
原始的數(shù)據(jù)集分別經(jīng)過頭部標注和身體標注生成兩個訓練數(shù)據(jù)集:頭部集和身體集.使用這兩個數(shù)據(jù)集分別訓練兩個YOLOv3 增強模型:YOLO-head和YOLO-body.其中,為了提高模型的精度和提升訓練速度,YOLO-head和YOLO-body 模型都選用了在曠世公開數(shù)據(jù)集Object365 上訓練好的YOLOv3 增強模型預(yù)訓練參數(shù).模型具體訓練參數(shù)如表2.
表2 訓練參數(shù)
采用平均錯誤率(AER)來對所提出的方法的人流密度估計精度進行評估.平均錯誤率如下:
對任意一張測試圖像Ii,設(shè)總?cè)藬?shù)真值為Gi,預(yù)測值為Pi.則這張圖片的評估錯誤率為:
所有測試數(shù)據(jù)平均錯誤率為:
平均錯誤率越低,模型預(yù)測效果越好.
用頭部集和身體集分別訓練的兩個YOLOv3 增強模型YOLO-head 模型和YOLO-body 模型.在使用相同的測試數(shù)據(jù)集測試時發(fā)現(xiàn)在人流密集人體互相遮擋的情況下,YOLO-body 模型會漏選而YOLO-head 模型表現(xiàn)更好,實驗結(jié)果如圖6所示.圖6(a)為YOLOhead 模型檢測結(jié)果,圖6(b)為YOLO-body 模型檢測結(jié)果.
在背景復(fù)雜以及行人頭部為不完全裸露的情況下,YOLO-head 模型會漏選而YOLO-body 模型表現(xiàn)更好,實驗結(jié)果如圖7所示.圖7(a)為YOLO-head 模型檢測結(jié)果,圖7(b)為YOLO-body 模型檢測結(jié)果.
對于以上問題,采用YOLO-head與YOLO-body檢測結(jié)果進行極大值融合的方法如圖8所示,即將兩個模型對人流密度的估計結(jié)果取最大值輸出,從而能夠改善由于背景復(fù)雜以及行人相互遮擋等場景下單模型漏測的情況.因此,能夠有效地提高模型對人流密度估計的精度和魯棒性.
圖6 人流密集人體互相遮擋的情況下檢測結(jié)果
圖7 背景復(fù)雜以及行人頭部為不完全裸露的情況下檢測結(jié)果
在實驗時,將模型融合的方法與原始的單模型檢測方法和高斯密度圖回歸方法進行了比較,結(jié)果如表3,表明所提出的模型融合的方法具有較高的精度和魯棒性.
圖8 極大值融合
表3 不同算法的錯誤率
提出了一種YOLOv3 增強模型融合的方法用于人流密度估計,通過使用YOLOv3 增強模型來提高檢測精度同時保證檢測速度.通過使用不同標注的數(shù)據(jù)集訓練YOLO-head和YOLO-body 模型進行融合的方法來提高精度和魯棒性.實驗表明所提出的方法有較高的精度和較好的魯棒性.