李曉娜
(廣東工業(yè)大學(xué),廣東 廣州 510006)
近年來(lái),大多數(shù)企業(yè)在工業(yè)現(xiàn)場(chǎng)安裝了生產(chǎn)監(jiān)控系統(tǒng),用于實(shí)時(shí)監(jiān)測(cè)現(xiàn)場(chǎng)人員的位置、動(dòng)作和防護(hù)裝備的穿戴情況[1]。其中通過(guò)實(shí)時(shí)監(jiān)控并檢測(cè)現(xiàn)場(chǎng)人員是否佩戴安全帽[2],對(duì)于實(shí)現(xiàn)安全生產(chǎn)事故的預(yù)測(cè)預(yù)判具有著重要的現(xiàn)實(shí)意義。
此前,本人對(duì)于工業(yè)現(xiàn)場(chǎng)安全帽佩戴檢測(cè)提出了2 個(gè)方案,這2 個(gè)方案都主要分為三個(gè)模塊:人體檢測(cè),人員目標(biāo)跟蹤,安全帽檢測(cè)。首先使用HOG(Histogram of Orientedd Gradient)特征以及支持向量機(jī)(Support Vector Machine,SVM)訓(xùn)練了行人目標(biāo)分類器[3],對(duì)工業(yè)現(xiàn)場(chǎng)的視頻圖像幀行人目標(biāo)進(jìn)行檢測(cè)和定位。接著使用跟蹤算法進(jìn)行目標(biāo)關(guān)聯(lián),執(zhí)行目標(biāo)追蹤任務(wù),避免發(fā)生重復(fù)報(bào)警[4]。最后對(duì)頭部圖像區(qū)域進(jìn)行安全帽的目標(biāo)檢測(cè)。
這2 個(gè)方案的區(qū)別在于使用的跟蹤算法不同:方案一使用sort(Simple Online and Realtime Tracking)物體跟蹤算法[5]進(jìn)行行人目標(biāo)跟蹤。sort 算法通過(guò)匈牙利算法建立損失矩陣進(jìn)行目標(biāo)關(guān)聯(lián)。方案二使用deep-sort(Simple Online and Realtime Tracking with a Deep Association Metric)物體跟蹤算法[6]進(jìn)行人體目標(biāo)跟蹤。由于sort 算法僅利用了物體的運(yùn)動(dòng)信息進(jìn)行關(guān)聯(lián)匹配,而沒(méi)有利用物體的外觀信息,當(dāng)視頻圖像幀中兩人重疊時(shí),位置會(huì)發(fā)生交換,即出現(xiàn)了ID-Switch 現(xiàn)象。deep-sort 利用預(yù)先設(shè)計(jì)的CNN 網(wǎng)絡(luò),提取出一個(gè)描述目標(biāo)框內(nèi)物體外觀的向量,并將這一向量融入損失矩陣,從而使得匈牙利算法的匹配結(jié)果更可靠,大大較低了ID-Switch 發(fā)生的頻率。
以上2 個(gè)方案中的跟蹤算法都使用目標(biāo)檢測(cè)和目標(biāo)關(guān)聯(lián)兩個(gè)獨(dú)立的模型完成,因?yàn)橛玫搅藘蓚€(gè)模型,所以往往跟蹤的執(zhí)行效率不太理想。因此本文提出了使用單個(gè)共享模型同時(shí)完成目標(biāo)檢測(cè)和目標(biāo)關(guān)聯(lián)的方法,并結(jié)合安全帽檢測(cè)模塊,實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)安全帽佩戴高效率的檢測(cè)方案。
利用Harr 對(duì)安全帽進(jìn)行特征提取。Harr-like 是一種非常經(jīng)典的特征提取算法。Harr-like 特征提取過(guò)程就是利用滑動(dòng)窗口在圖像中滑動(dòng)和放大,當(dāng)滑動(dòng)到一個(gè)位置的時(shí)候,可通過(guò)公式(1)計(jì)算Harr 特征值,weight 為權(quán)重,為整個(gè)Harr 區(qū)域內(nèi)像素和,為Harr黑色區(qū)域像素。
得到安全帽計(jì)算的特征后,利用Adaboost 進(jìn)行識(shí)別。Adaboost 級(jí)聯(lián)分類是樹狀結(jié)構(gòu),其中每一個(gè)stage 都代表一級(jí)強(qiáng)分類器。檢測(cè)窗口在通過(guò)所有強(qiáng)分類器時(shí)被視為目標(biāo),否則將被拒絕。
當(dāng)前多目標(biāo)跟蹤系統(tǒng)通常結(jié)合了用于目標(biāo)定位的檢測(cè)模型和用于數(shù)據(jù)關(guān)聯(lián)的外觀嵌入模型,導(dǎo)致集成兩個(gè)模型的目標(biāo)跟蹤任務(wù)的執(zhí)行效率低。本文系統(tǒng)使用的是一種基于目標(biāo)檢測(cè)和外觀嵌入共享結(jié)構(gòu)的多目標(biāo)跟蹤模型,該模型的骨干結(jié)構(gòu)是FPN(Feature Pyramid Networks for Object Detection)[7],使用 anchorbox 進(jìn)行檢測(cè)學(xué)習(xí),使用交叉熵?fù)p失函數(shù)進(jìn)行表觀特征學(xué)習(xí),以便該模型可以同時(shí)輸出檢測(cè)結(jié)果和相應(yīng)的嵌入。
FPN 是一種結(jié)合了低層和高層語(yǔ)義,同時(shí)兼顧大、小尺度對(duì)象的多尺度對(duì)象檢測(cè)和提取方法。該網(wǎng)絡(luò)結(jié)構(gòu)可分為三部分:自底向上采樣、自頂向下采樣和大尺度特征圖合成。FPN 網(wǎng)絡(luò)結(jié)構(gòu)具體如圖1 所示,上采樣將空間尺寸最小的特征圖,和尺寸第二小的特征圖橫向連接融合,對(duì)其他的尺度也進(jìn)行相同操作。最后將基于三個(gè)尺寸融合的特征圖的預(yù)測(cè)頭進(jìn)行相加。
圖1 FPN 網(wǎng)絡(luò)骨架
首先,針對(duì)行人目標(biāo)設(shè)計(jì)了anchor。根據(jù)先驗(yàn)知識(shí),所有的anchor 的寬高比設(shè)置為1:3,各尺度包含4 個(gè)anchor,3 個(gè)尺度的anchor 數(shù)量為12。其次,使用雙重閾值進(jìn)行前景與背景的匹配。若某anchor 和ground truth 的IOU 大于0.5 則視為前景;如果某anchor 和任意ground truth 的IOU 都小于0.4,則認(rèn)為該anchor 為背景。通過(guò)這樣設(shè)置閾值,可以有效抑制虛假警報(bào)。
檢測(cè)的目標(biāo)函數(shù)是由分類損失和定位損失組成,分類損失使用交叉熵?fù)p失,定位損失使用smooth-L1 損失,這與Faster R-CNN[8]是一致。
學(xué)習(xí)表觀特征的目的是使得同一目標(biāo)表觀特征的差異小于不同目標(biāo)的表觀特征的差異,交叉熵?fù)p失函數(shù)可以作為特征學(xué)習(xí)的損失訓(xùn)練外觀特征,以達(dá)到這一目的。通過(guò)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的參數(shù),得到高質(zhì)量的目標(biāo)圖片編碼,使得同一目標(biāo)的編碼相似,而不同目標(biāo)的編碼差異較大。交叉熵?fù)p失函數(shù)定義如公式(2)所示。
這里,A 是mini-batch 被選為anchor 的一個(gè)實(shí)例,anchor 屬于正類的概率表示為g+,屬于負(fù)類的概率表示為g-,即交叉熵?fù)p失使用的是樣本屬于某類別的概率,而不是直接使用樣本的特征向量。
對(duì)于輸入的圖像視頻,本文的模型輸出每一幀目標(biāo)的目標(biāo)框和表觀特征,以便計(jì)算出當(dāng)前幀的表觀特征和歷史追蹤軌跡中的表觀特征之間的關(guān)聯(lián)矩陣。與deepsort 的物體跟蹤算法相似,該系統(tǒng)使用卡爾曼濾波器進(jìn)行軌跡平滑和目標(biāo)位置預(yù)測(cè),并使用匈牙利算法檢測(cè)目標(biāo)和歷史追蹤軌跡的關(guān)聯(lián)。如果某個(gè)被關(guān)聯(lián)的檢測(cè)框和預(yù)測(cè)框空間位置相距很遠(yuǎn),則刪除該關(guān)聯(lián)。
基于目標(biāo)檢測(cè)和外觀嵌入共享結(jié)構(gòu)的MOT(Multi-Object Tracking)模型的檢測(cè)系統(tǒng)方案主要分為三個(gè)模塊,樣本采集與訓(xùn)練,人體檢測(cè)與跟蹤,安全帽檢測(cè)。對(duì)于安全帽的樣本,采集了1500 張正樣本和1000 張負(fù)樣本,逆行規(guī)格統(tǒng)一化處理樣本后,采用Harr 級(jí)聯(lián)訓(xùn)練。人體檢測(cè)與跟蹤模塊以FPN 為骨干結(jié)構(gòu),使用anchor 進(jìn)行檢測(cè)學(xué)習(xí),使用交叉熵?fù)p失函數(shù)進(jìn)行表觀特征學(xué)習(xí),訓(xùn)練得到的模型可以同時(shí)輸出檢測(cè)結(jié)果和相應(yīng)的嵌入結(jié)果。
3.2.1 安全帽檢測(cè)的訓(xùn)練
收集 1500 張正樣本和 1000 張負(fù)樣本,使用OpenCV4.3.0 自帶的opencv_traincascade.exe 進(jìn)行級(jí)聯(lián)分類器訓(xùn)練,訓(xùn)練后在指定目錄下生成cascade.xml 文件,即為包含當(dāng)前檢測(cè)目標(biāo)Harr 特征值的文件。在系統(tǒng)中只需引入cascade.xml 文件即可進(jìn)行安全帽的目標(biāo)檢測(cè)。
3.2.2 行人檢測(cè)與目標(biāo)跟蹤的實(shí)現(xiàn)
首先對(duì)視頻的圖像幀作為輸入進(jìn)行跟蹤器的初始化。由跟蹤器對(duì)圖片中的行人進(jìn)行檢測(cè)和跟蹤,使用行人檢測(cè)與跟蹤模塊得到的行人目標(biāo)信息、跟蹤標(biāo)識(shí)信息與安全帽檢測(cè)信息來(lái)初始化系統(tǒng)檢測(cè)結(jié)果序列集合trackers。
接著,對(duì)于后續(xù)的每一幀,調(diào)用跟蹤器的更新方法。利用檢測(cè)與跟蹤算法估算并更新行人目標(biāo)的位置,對(duì)新的一幀中行人目標(biāo)框區(qū)域的頂部三分之一區(qū)域進(jìn)行安全帽檢測(cè),并更新系統(tǒng)檢測(cè)結(jié)果序列集合trackers。
安全帽檢測(cè)系統(tǒng)檢測(cè)結(jié)果如圖2 所示。
圖2 安全帽檢測(cè)系統(tǒng)結(jié)果展示
安全帽檢測(cè)系統(tǒng)通過(guò)檢測(cè)結(jié)果序列集合trackers 進(jìn)行記錄,若系統(tǒng)檢測(cè)到目標(biāo)行人連續(xù)五次及以上未佩戴安全帽,且結(jié)果序列集合顯示未報(bào)警過(guò),則進(jìn)行報(bào)警警告,從而避免發(fā)生誤報(bào)和重復(fù)報(bào)警。
表1 安全帽檢測(cè)結(jié)果分析
由表1 分析可得,基于目標(biāo)檢測(cè)和外觀嵌入共享結(jié)構(gòu)的MOT 模型的安全帽檢測(cè)系統(tǒng),即方案三的優(yōu)勢(shì)在于:
(1)與基于sort 跟蹤算法+HOG 行人檢測(cè)的安全帽檢測(cè)系統(tǒng)方案,即方案一比較,當(dāng)視頻圖像幀中兩行人目標(biāo)重疊時(shí),不會(huì)發(fā)生位置交換,即ID-Switch 現(xiàn)象,同時(shí)檢測(cè)的成功率有一定的提高,系統(tǒng)的檢測(cè)幀率也有著大幅度的提高。
(2)與基于deep-sort 跟蹤算法+HOG 行人檢測(cè)的安全帽檢測(cè)系統(tǒng)方案,即方案二比較,成功率有一定的提高,系統(tǒng)檢測(cè)幀也得到了提升。
通過(guò)樣本采集與訓(xùn)練,人體檢測(cè)與跟蹤,安全帽檢測(cè)等模塊的組合,我們能夠在一定誤差的基礎(chǔ)上對(duì)于視頻監(jiān)控的輸入圖像幀進(jìn)行一定速度上的人體安全帽佩戴實(shí)時(shí)檢測(cè)。
基于目標(biāo)檢測(cè)和外觀嵌入共享結(jié)構(gòu)的MOT 模型的安全帽檢測(cè)系統(tǒng)在檢測(cè)成功率、幀率上都有著明顯的提高,且能夠避免ID-Switch 現(xiàn)象的出現(xiàn)。然而,該系統(tǒng)的設(shè)計(jì)還存在著不足之處,對(duì)于較復(fù)雜的環(huán)境,該系統(tǒng)的誤差率會(huì)有大幅度的提升;此外,系統(tǒng)的實(shí)時(shí)性還需要進(jìn)一步的提升。因此下一步將圍繞著算法的穩(wěn)定性和實(shí)時(shí)性開展深入的研究。