孫乾宇,張振東
(上海理工大學 機械工程學院,上海 200093)
隨著消費水平的提高,人們外出旅游,商場購物已然成為常態,導致區域人流量急劇增加.一方面,在人流密集的場景下容易產生踩踏事件以及打架,縱火等惡劣行為造成人流恐慌.在另一方面,可以幫助商場等各大商鋪有效的統計客流量.因此對特定場合的人流密度進行精確的估計具有重大意義.
現有的人流密度估計方法主要有兩種,一種是針對檢測的方法,另一種是針對回歸的方法.對于檢測的方法來說一般假設可以通過使用給定的對象檢測器[1–3]來檢測和定位人群圖像上的每個人,然后通過累積每個檢測到的人來計數,然而,這些傳統的檢測方法[4–6]需要耗費很大的計算資源而且還會受到行人人為遮擋以及背景復雜的限制.在實際情況下,精度較低,魯棒性較差.基于回歸的方法是給定一張圖片,直接從圖片中回歸出人口的數量.Chan 等[7]使用手動制作的圖像特征來將人數統計任務轉變成回歸任務;文獻[8,9]提出了更多檢測人數估計任務相關的特征,包括針對整體結構的特征和局部紋理的特征;Lempitsky等人[10]提出了一種密度圖回歸的算法,該算法通過對檢測圖像的密度圖進行積分來統計人群個數.然而這些基于回歸的方法在復雜背景下準確性相對較低.
近年來隨著YOLO[11–13]系列模型的出現,以超高的推理速度和較高的精度在各個鄰域廣泛應用.然而在人流密集和行人互相遮擋的情況下直接使用目標檢測模型精度相對較低.因此提出了基于YOLOv3增強模型融合的人流密度估計方法.一方面,使用YOLOv3 增強模型來提高精度.另一方面,使用人流頭部標注數據集和人流身體標注數據集分別訓練兩個模型進行融合來提高魯棒性.模型融合的方法在數據集上進行測試,結果表明具有較高的精度和魯棒性.
YOLOv3 算法的基本思想可以分成兩部分:
首先,根據一定的規則在圖片上生成一系列候選區域,然后根據這些候選區域與圖片上物體的真實區域之間的位置關系對候選區域進行標記.跟真實框之間的距離小于閾值的那部分候選區域會被標注為正樣本,同時將真實框的位置坐標作為正樣本的位置坐標目標值.距真實框的距離較大的那些候選區域則會被標注為負樣本,負樣本不需要預測位置坐標或者類別信息.
其次是使用卷積神經網絡提煉出圖片的特征,并對候選區域的位置坐標和類別信息進行預測.這樣,可以將每個預測框視為一個樣本,并根據真實框相對于其的位置坐標和類別信息來獲取標簽值.使用網絡模型來預測其位置和類別,并比較網絡預測值和標簽值.這樣就可以構建損失函數來進行訓練.YOLOv3 算法的思想如圖1所示.
YOLOv3 采用的骨干網絡是DarkNet-53.DarkNet-53 網絡結構沒有池化層,在前向傳播過程中,通過改變卷積核的步長代替池化層,特征提取模型采用很多3×3和1×1的卷積層,再加上全連接層共有53 層.在經過DarkNet-53 特征提取后,為了提高不同大小物體的檢測精度,YOLOv3在3個不同尺度上經行檢測,每個尺度有3個界限值(bounding box),最后由與真實框的交并比(IOU)最大的界限值預測目標.YOLOv3 結構如圖2所示.圖中Resn表示一個殘差塊,其中含有n個殘差單元;DBL是YOLOv3的基本組件,表示卷積(conv)+批歸一化(BN)+激活函數leaky ReLU.

圖1 YOLOv3 算法思想
為了在保持推理速度的同時最大限度的提升檢測精度,YOLOv3 增強模型在原網絡的基礎下做了如下改進:
(1)骨干網絡采用ResNet50-vd 替換原有的DarkNet-53.ResNet-vd是ResNet 系列的改進網絡,ResNetvd的參數量和計算量與ResNet 幾乎一致,但是精度提升了2%.雖然DarkNet-53 也使用了殘差網絡如圖3,但是同ResNet50-vd 相比,ResNet50-vd在速度和精度上都有一定的優勢,而且選用ResNet[14]系列網絡更加容易擴展.可以根據不同的業務需求,靈活選擇ResNet18、50、101 等不同的網絡作為目標檢測的骨干網絡.

圖2 YOLOv3 網絡結構圖

圖3 殘差結構
(2)引入可變形卷積(Deformable Convolution,DCN)[15],替代原始卷積操作.可變形卷積已經在各個鄰域的視覺任務中廣泛驗證過其效果.在考慮到保持速度與提升精度平衡的前提條件下,YOLOv3 增強模型使用可變形卷積替換了主干網絡中第5 階段部分的3×3 卷積.
(3)由于YOLOv3 作為單階段目標檢測模型,在定位精度上相比Faster RCNN、Cascade RCNN 等兩階段目標檢測模型有著其天然的劣勢,所以YOLOv3 增強模型增加了IoU 損失[16]分支,可以一定程度上提高邊界框的定位精度,縮小單階段目標檢測網絡和兩階段檢測網絡精度的差距.
傳統的L2 損失將檢測目標的位置坐標信息當作互相獨立的4個變量來進行訓練.而IoU 損失直接使用預測的邊界框與基本真實值之間的最大重疊,并將所有綁定變量作為一個整體進行回歸,將位置坐標信息當作一個整體進行訓練.所以使用IoU 損失能夠獲得更加精準的訓練效果和檢測結果.L2 損失和IoU 損失說明如圖4所示.

圖4 L2 損失和IoU 損失
使用在Object365 數據集上訓練的模型作為預訓練模型,在COCO 數據集上進行訓練和驗證,用TensorRT 進行部署推理.不同改進變量的模型驗證精度和推理速度如表1.

表1 不同改進變量的模型驗證精度
實驗環境為NVIDIA Tesla V100 16 GB 顯存GPU,用Tensorflow 搭建的YOLO 目標檢測模型進行訓練.
為了驗證所提出方法的精度和魯棒性.實驗所用的訓練和測試數據集來自公開數據集ShanghaiTech.ShanghaiTech 數據集是一個大規模的人群統計數據集,其包含1198 幅圖像.為了提高精度,還添加了公開數據集UCF-CC-50的部分數據.實驗原始數據集共包含2000 張訓練圖片數據和1000 張測試圖片數據.將2000 張訓練數據用LabelImg 數據標注工具分別進行人流頭部標注和人流身體標注,從而構建了兩個訓練數據集:頭部集和身體集.
為了防止由于訓練數據不足而導致模型訓練過程發生過擬合,在數據處理階段采用了隨機反轉、移動、改變飽和度、改變亮度、添加噪聲等圖像增強技術.圖像增強效果圖如圖5所示.

圖5 圖像增強效果圖
原始的數據集分別經過頭部標注和身體標注生成兩個訓練數據集:頭部集和身體集.使用這兩個數據集分別訓練兩個YOLOv3 增強模型:YOLO-head和YOLO-body.其中,為了提高模型的精度和提升訓練速度,YOLO-head和YOLO-body 模型都選用了在曠世公開數據集Object365 上訓練好的YOLOv3 增強模型預訓練參數.模型具體訓練參數如表2.

表2 訓練參數
采用平均錯誤率(AER)來對所提出的方法的人流密度估計精度進行評估.平均錯誤率如下:
對任意一張測試圖像Ii,設總人數真值為Gi,預測值為Pi.則這張圖片的評估錯誤率為:

所有測試數據平均錯誤率為:

平均錯誤率越低,模型預測效果越好.
用頭部集和身體集分別訓練的兩個YOLOv3 增強模型YOLO-head 模型和YOLO-body 模型.在使用相同的測試數據集測試時發現在人流密集人體互相遮擋的情況下,YOLO-body 模型會漏選而YOLO-head 模型表現更好,實驗結果如圖6所示.圖6(a)為YOLOhead 模型檢測結果,圖6(b)為YOLO-body 模型檢測結果.
在背景復雜以及行人頭部為不完全裸露的情況下,YOLO-head 模型會漏選而YOLO-body 模型表現更好,實驗結果如圖7所示.圖7(a)為YOLO-head 模型檢測結果,圖7(b)為YOLO-body 模型檢測結果.
對于以上問題,采用YOLO-head與YOLO-body檢測結果進行極大值融合的方法如圖8所示,即將兩個模型對人流密度的估計結果取最大值輸出,從而能夠改善由于背景復雜以及行人相互遮擋等場景下單模型漏測的情況.因此,能夠有效地提高模型對人流密度估計的精度和魯棒性.

圖6 人流密集人體互相遮擋的情況下檢測結果

圖7 背景復雜以及行人頭部為不完全裸露的情況下檢測結果
在實驗時,將模型融合的方法與原始的單模型檢測方法和高斯密度圖回歸方法進行了比較,結果如表3,表明所提出的模型融合的方法具有較高的精度和魯棒性.

圖8 極大值融合

表3 不同算法的錯誤率
提出了一種YOLOv3 增強模型融合的方法用于人流密度估計,通過使用YOLOv3 增強模型來提高檢測精度同時保證檢測速度.通過使用不同標注的數據集訓練YOLO-head和YOLO-body 模型進行融合的方法來提高精度和魯棒性.實驗表明所提出的方法有較高的精度和較好的魯棒性.