肖立華,徐 暢,商浩亮,羅仲達(dá),吳小忠,馬小豐,江志文,陳俊杰
(1.國網(wǎng)湖南省電力有限公司,湖南 長沙 410007;2.北京洛斯達(dá)科技發(fā)展有限公司,北京 100088;3.湖南省智能信息感知及處理技術(shù)重點(diǎn)實(shí)驗(yàn)室,湖南 株洲 412008)
隨著信息化和數(shù)字化技術(shù)的發(fā)展及應(yīng)用,智慧工地被提上日程。智慧工地是指利用互聯(lián)網(wǎng)和信息化技術(shù),使用信息技術(shù)和數(shù)字技術(shù)為手段提升工地的管理和決策水平。其中,采用計算機(jī)視覺技術(shù)的智能視頻監(jiān)控系統(tǒng)是應(yīng)用最廣泛的。各地也發(fā)布文件要求各新開工項(xiàng)目要安裝在線監(jiān)控系統(tǒng),完善安全生產(chǎn)動態(tài)監(jiān)控及預(yù)警體系。安全帽是施工人員的關(guān)鍵防護(hù)用具,在突發(fā)情況下能有效保護(hù)施工人的頭部,減少傷害。實(shí)時檢測在施工現(xiàn)場的人員是否正確佩戴安全帽是智慧工地的基本要求。計算機(jī)視覺技術(shù)具有使用方便、能適應(yīng)多種復(fù)雜場景的優(yōu)點(diǎn)。因此,采用計算機(jī)視覺技術(shù)自動化的安全帽識別對智慧工地的建設(shè)、減少事故具有重要意義[1]。
施工場所一般處于室外,這類場景具有光照不穩(wěn)定、環(huán)境復(fù)雜、人員流動性高的特點(diǎn),對安全帽佩戴檢測算法的實(shí)時性和準(zhǔn)確性提出了更高的要求。目前,對安全帽的檢測都是采用基于深度學(xué)習(xí)的目標(biāo)檢測方法[2-9]。根據(jù)使用的檢測方法的原理,可以將這些方法分為2 類:一階段的方法(one-stage)和兩階段的方法(two-stage)。一階段的方法采用的是直接回歸的方法,只提取一次圖像特征,同時預(yù)測物體的類別并回歸物體在圖像中的坐標(biāo)位置。這類方法的優(yōu)點(diǎn)是速度快,適合應(yīng)對實(shí)時性要求高的場景或者移動端設(shè)備,但這類方法的檢測精度比兩階段的方法低。代表性的一階段目標(biāo)檢測方法有YOLO[10]、SSD[11]、UnitBox[12],在這些方法的基礎(chǔ)上改進(jìn)得到了諸多安全帽檢測方法[2-6]。兩階段的目標(biāo)檢測方法使用兩階段級聯(lián)的方式檢測目標(biāo),先進(jìn)行粗定位,再進(jìn)行分類和精細(xì)定位。兩階段的方法精度高,但速度慢、訓(xùn)練復(fù)雜。代表性的兩階段目標(biāo)檢測方法有RCNN[13]、Fast R-CNN[14]、Faster R-CNN[15]、Mask R-CNN[16]。在兩階段目標(biāo)檢測方法的基礎(chǔ)上發(fā)展出了基于兩階段的安全帽檢測方法[7-9]。
為了滿足施工場景下安全帽檢測的實(shí)時性需求,本文改進(jìn)UnitBox 目標(biāo)檢測算法[12]并將其應(yīng)用于安全帽檢測問題中。本文有針對性地解決了如下2 個問題:1)特征鑒別力不足問題,安全帽紋理單一,導(dǎo)致提取的特征鑒別力不足;2)小目標(biāo)識別問題,施工場景范圍廣,圖像中大部分待檢測的安全帽都小于45個像素。
首先,為了解決特征鑒別力不足的問題,本文提出局部上下文感知模塊(Local Context Perception Module,LCPM)。如圖1 所示,通過對局部圖像區(qū)域的上下文信息建模,同時提取多尺度的人體頭部特征和安全帽的特征,提升特征的識別能力。同時引入了全局上下文信息融合模塊(Global Context Fusion Module,GCFM),融合不同層的特征,增強(qiáng)特征的抽象能力。其次,為了應(yīng)對小目標(biāo)識別問題,本文設(shè)計的多尺度目標(biāo)檢測模塊使用了多個目標(biāo)檢測器分別處理不同大小的目標(biāo)。此外,為了提高檢測速度,本文使用速度更快的MobileNet[17]替換UnitBox 算法[12]中原有的主干網(wǎng)絡(luò)VGG-16[18]。在安全帽檢測數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文提出的方法在沒有降低檢測速度的前提下,大幅提高了檢測精度。實(shí)地測試表明,可滿足安全帽檢測任務(wù)高精度和實(shí)時的要求。
圖1 多尺度的上下文建模
UnitBox[12]是一種基于圖像分割的一階段人臉檢測算法,采用全卷積神經(jīng)網(wǎng)絡(luò),將人臉檢測問題轉(zhuǎn)化為圖像分割問題和邊界框回歸問題。對于圖像分割問題,UnitBox將圖像中的像素點(diǎn)分為人臉和非人臉2個類別,直接預(yù)測每一個像素點(diǎn)的類別,使用交叉熵?fù)p失。為了得到人臉的坐標(biāo),UnitBox 預(yù)測人臉區(qū)域內(nèi)每一個像素點(diǎn)相對人臉上下左右4 個邊界的偏移量,根據(jù)像素點(diǎn)的坐標(biāo)和偏移量得到預(yù)測人臉矩形框的坐標(biāo)位置,優(yōu)化預(yù)測矩形框與真實(shí)矩形框的交并比。UnitBox 同時優(yōu)化交叉熵?fù)p失和交并比來訓(xùn)練模型。UnitBox 具有速度快的優(yōu)點(diǎn),但UnitBox 沒有融合上下文信息,提取的特征的識別能力有限,精度較低。本文在UnitBox算法的基礎(chǔ)上加入了局部多尺度特征提取模塊和金字塔特征融合模塊,提升特征的鑒別能力。此外,本文還將UnitBox從單類別目標(biāo)檢測(人臉檢測)推廣到了多類別目標(biāo)檢測任務(wù)(佩戴安全帽的人員、未佩戴安全帽的人員)。
在目標(biāo)檢測中有諸多工作通過融合不同尺度的特征來提升特征的鑒別能力[19-22],這些方法提出融合神經(jīng)網(wǎng)絡(luò)不同層的特征來達(dá)到融合不同尺度的上下文信息的目的,從而提升特征的鑒別能力。王成濟(jì)等[19]提出使用雙線性插值將不同層的特征圖調(diào)整為相同的大小再進(jìn)行融合。文獻(xiàn)[20-22]則提出將高層特征經(jīng)過雙向性插值放大后與淺層特征融合改善特征的抽象能力。從本質(zhì)上來說,這些方法都是從不同的特征層感知不同尺度的信息。與這些方法不同的是,本文在同一個特征層提取多尺度的特征,受到圖像分割工作[23-24]的啟發(fā),提出了局部上下文感知模塊,充分建模局部上下文信息,提高特征的識別能力。
本章將詳細(xì)介紹所提出的安全帽識別的訓(xùn)練和測試流程,整體流程如圖2所示。在訓(xùn)練階段,有3個輸入:監(jiān)控相機(jī)采集到的圖像、像素點(diǎn)得分標(biāo)簽、坐標(biāo)遷移標(biāo)簽。從監(jiān)控相機(jī)采集到的圖像經(jīng)過預(yù)處理,輸入基于全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Neural Network,F(xiàn)CN)的目標(biāo)檢測模型(FCN 模型)中得到三通道的像素點(diǎn)類別得分圖和四通道的坐標(biāo)偏移圖。使用梯度下降法更新模型的參數(shù)。在測試階段,從攝像機(jī)采集圖像,經(jīng)過預(yù)處理輸入FCN 模型中,分別得到像素點(diǎn)類別得分和坐標(biāo)偏移預(yù)測,經(jīng)過非極大值抑制得到最終的識別結(jié)果。
圖2 安全帽識別訓(xùn)練和測試流程
本文提出模型的整體網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,使用MobileNetv1[17]作為主干網(wǎng)絡(luò),分別從第6 個卷積層、第12 個卷積層和第14 個卷積層提取特征,提取的特征表示為x1、x2和x3。首先,將3個特征分別輸入局部上下文感知模塊中,獲得編碼了局部上下文信息的特征表示;其次,將特征輸入全局上下文融合模塊中,將高層的語義信息融合進(jìn)淺層特征中,提升特征的識別能力;最后,使用3 個目標(biāo)檢測器分別識別不同大小的目標(biāo)。
圖3 提出模型的結(jié)構(gòu)
2.1.1 局部上下文感知
人類視覺感知系統(tǒng)是由多個具有不同大小的感受野的子系統(tǒng)組成的,能在不同的尺度上感知物體。人在觀察一個物體時,不僅會提取物體本身的信息,也會提取物體周邊的背景信息。卷積神經(jīng)網(wǎng)絡(luò)每層特征的感受野是固定的,無法在同一層捕獲不同尺度的信息,同時,安全帽本身的紋理信息不足,只提取顏色特征和形狀特征還不足以應(yīng)對多樣的安全帽識別問題,因此不僅需要安全帽本身的信息,還需要利用人體頭部的信息來識別安全帽。受人類視覺系統(tǒng)的啟發(fā),如圖4所示,本文提出使用不同大小的卷積核來感知多尺度的上下文信息,以增強(qiáng)特征的鑒別能力。
圖4 多尺度的上下文信息
如圖5 所示,本文提出的局部上下文感知模塊包含4 個卷積操作,分別感知不同尺度的上下文信息:一個1×1卷積,3個空洞卷積[25](空洞數(shù)量r分別為0、1、2)。本文將得到的多尺度上下文特征按照通道拼接在一起,使用一個1×1卷積層融合上下文特征。假定輸入特征為x,上述計算過程可以表示如下:
圖5 局部上下文感知模塊(LCPM)
其中,Conv1()表示1×1 卷積層,DConvr()表示空洞數(shù)量為r的空洞卷積,ReLU()為激活函數(shù),[…]表示按通道拼接特征。給定多尺度的特征x1、x2和x3,得到的融合了局部上下文信息的特征可以表示為:l(x1)、l(x2)和l(x3)。此處,不同特征層的局部上下文感知模塊的參數(shù)不共享,不同卷積層參數(shù)不共享。
2.1.2 全局上下文融合
高層特征編碼了豐富的語義信息,淺層特征缺乏抽象的語義信息。將高層特征與淺層特征融合,能夠讓深層特征的語義信息融合到淺層特征中,提升淺層特征的語義識別能力。此外,高層特征具有更大的感受野,將高層特征與淺層特征融合能夠有效地建模全局上下文信息。本文引入特征金字塔將高層特征與淺層特征融合,改善特征的識別能力。如圖3 所示,使用上采樣層將高層特征的分辨率放大后與淺層特征相加得到語義增強(qiáng)的特征表示。對于最高層的特征直接應(yīng)用一個1×1卷積層得到最終的特征表示,全局上下文融合模塊的計算過程表示如下:
其中,U()表示上采樣層。
2.1.3 多尺度安全帽識別
由于施工人員離攝像機(jī)的遠(yuǎn)近不同,圖像中的安全帽的尺度變化大。受到特征感受野的限制,單一特征層無法應(yīng)對多尺度的目標(biāo)檢測問題。因此,本文使用3 個參數(shù)共享的目標(biāo)檢測模塊(Detection Module,DM)在不同的特征層檢測不同大小的目標(biāo)。給定特征f(x1)、f(x2)和f(x3),目標(biāo)檢測模塊由2 個獨(dú)立的子網(wǎng)絡(luò)組成,分別預(yù)測類別得分和坐標(biāo)偏移,如圖6 所示,第一個卷積層有256 個卷積核,第二個卷積層得到預(yù)測結(jié)果,這4個卷積層不改變特征圖的大小。
圖6 目標(biāo)檢測模塊(DM)
分別將特征f(x1)、f(x2)和f(x3)輸入到目標(biāo)檢測模塊中。特征f(xi)的第k個類別的得分表示為pki。相應(yīng)的坐標(biāo)偏移表示為(t,b,li,ri),分別表示像素點(diǎn)坐標(biāo)相對目標(biāo)上下左右4 個邊界的坐標(biāo)偏移量,根據(jù)像素點(diǎn)的坐標(biāo)和預(yù)測的坐標(biāo)偏移量,可以得到預(yù)測矩形框qi。
本文使用3 個目標(biāo)檢測模塊(DM1,DM2,DM3)來檢測不同大小的目標(biāo),不同目標(biāo)檢測模塊與待檢測目標(biāo)的關(guān)系見表1。
表1 檢測模塊與目標(biāo)大小的關(guān)系
2.1.4 損失函數(shù)
給定一張圖像,在制作類別標(biāo)簽時,本文將標(biāo)注的目標(biāo)中心的10×10區(qū)域(以像素為單位)視為前景,設(shè)為1;標(biāo)注區(qū)域外視為背景,設(shè)為0;使用交叉熵?fù)p失訓(xùn)練模型。同樣地,計算對應(yīng)的10×10區(qū)域的交并比損失。
使用交叉熵函數(shù)計算分類損失,設(shè)置類別0 表示背景,類別1表示佩戴安全帽的人員,類別2表示未佩戴安全帽的人員。分類損失計算如下:
本文增加預(yù)測矩形框與真實(shí)矩形框的交并比,交并比損失計算如下:
其中,gi和qi分別表示標(biāo)注的矩形框和預(yù)測的矩形框。
采用多任務(wù)學(xué)習(xí)同時優(yōu)化分類損失和交并比損失來訓(xùn)練模型。最終的損失函數(shù)表示如下:
其中,λ1和λ2是損失函數(shù)的權(quán)重。
本文使用平均精度值(Average Precision,AP)和平均精度均值(mean AP,mAP)來評價模型的結(jié)果。AP 是Precision-Recall 曲線下的面積,AP 可以用于評價單個類別精度。mAP 是所有類別的平均精度值的平均,可以評價所有類別的檢測結(jié)果的好壞。
本文使用的數(shù)據(jù)集包括10000張圖片,分別來自于歷年施工場所的監(jiān)控照片和以“施工”“工地”“施工人員”等作為關(guān)鍵字從圖片網(wǎng)站(https://image.baidu.com/和https://cn.bing.com/images/trending?form=HDRSC2)爬取的施工場景下的人員圖片,如圖7 所示。經(jīng)過人工篩選后手工標(biāo)注了佩戴安全帽的人員和未佩戴安全帽的人員。使用開源標(biāo)注軟件labelImg(https://github.com/tzutalin/labelImg)進(jìn)行標(biāo)注。標(biāo)注了2 類物體:佩戴安全帽的人員(Helmet,紫色框標(biāo)注)、未佩戴安全帽的人員(Person,綠色框標(biāo)注)。數(shù)據(jù)集中標(biāo)注的目標(biāo)最小為16×16??偣矘?biāo)注了48762個Helmet目標(biāo),13954 個Person 目標(biāo)。所有的圖片通過裁剪、拼接等手段調(diào)整為640×640,按照8:2 的比例隨機(jī)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,詳細(xì)的數(shù)據(jù)集劃分見表2。其中8000張圖片作為訓(xùn)練集,2000張圖片作為測試集,并按照VOC 數(shù)據(jù)集格式進(jìn)行存儲。經(jīng)過粗略統(tǒng)計,本數(shù)據(jù)集中標(biāo)注的小目標(biāo)(長和寬均小于45個像素點(diǎn))占比超過83.4%,80%的照片是戶外場景。本數(shù)據(jù)集更符合實(shí)際施工場景,但給安全帽識別問題提出了較大的挑戰(zhàn)。
圖7 數(shù)據(jù)集標(biāo)注樣例(紫色矩形框表示佩戴安全帽,綠色矩形框表示未佩戴安全帽)
表2 安全帽識別數(shù)據(jù)集劃分
本文對訓(xùn)練集中的圖片做了數(shù)據(jù)增強(qiáng),對圖片進(jìn)行隨機(jī)翻轉(zhuǎn)、旋轉(zhuǎn),改變對比度、飽和度和亮度,以擴(kuò)充數(shù)據(jù)集,提高模型的訓(xùn)練精度和性能。此外,模型對圖片做了歸一化處理。在后處理階段,使用非極大值抑制算法去除重復(fù)矩形框。余下的檢測框與真實(shí)標(biāo)注的矩形框的交并比大于0.5 則為正確的檢測結(jié)果。本文使用平均精度值評價模型。
本文所有實(shí)驗(yàn)都是在深度學(xué)習(xí)服務(wù)器上進(jìn)行。硬件配置為NVIDIA GeForce GTX 1080 Ti 顯卡,Inter Core i7-8750H6 處理器,32 GB 內(nèi)存,1 TB 機(jī)械硬盤。使用Ubuntu18.04 操作系統(tǒng),所有代碼都是使用Python 語言和PyTorch 深度學(xué)習(xí)庫實(shí)現(xiàn)。使用Adam 優(yōu)化器訓(xùn)練模型[26],模型的關(guān)鍵實(shí)驗(yàn)參數(shù)如表3 所示。所有的模型都是使用MobileNetv1 作為主干網(wǎng)絡(luò),對比算法使用MobileNetv1 和PyTorch 深度學(xué)習(xí)庫復(fù)現(xiàn)后在相同的實(shí)驗(yàn)環(huán)境下進(jìn)行實(shí)驗(yàn)。模型完成訓(xùn)練需要4 h 20 min。
表3 部分實(shí)驗(yàn)參數(shù)
本文的基線模型為復(fù)現(xiàn)后的UnitBox 模型,使用MobileNetv1作為主干網(wǎng)絡(luò),分別從Conv14層、Conv12層和Conv6層提取特征,使用3個目標(biāo)檢測模塊進(jìn)行目標(biāo)檢測?;€模型在Helmet 和Person 這2 個類上的AP分別為82.12%和76.45%,平均精度均值為79.28%。
表4 是本文方法與其他先進(jìn)方法的對比,對比方法 有UnitBox[12]、YOLO-V3[10]、SSD[11]、Faster RCNN[7]。表4 中模型的訓(xùn)練配置所使用的硬件和軟件設(shè)置都相同。本文的方法在平均檢測精度(AP)和檢測幀速度(fps)上都是最優(yōu)的,本文提出的改進(jìn)方案將mAP 提升了11.46 個百分點(diǎn),安全帽識別的平均精度提高了10.55 個百分點(diǎn),足以說明本文方法的優(yōu)越性。UnitBox[12]、YOLO-V3[10]、SSD[11]檢測速度快,但是檢測精度低,不能滿足復(fù)雜施工場景下的高精度要求;雖然Faster R-CNN[7]檢測精度較高,但速度慢。本文的方法在沒有犧牲檢測速度的前提下,顯著提高了模型的檢測精度?;谏鲜鰧?shí)驗(yàn)結(jié)果,可以發(fā)現(xiàn)本文改進(jìn)的模型在真實(shí)場景下有更好的性能,且能滿足實(shí)時性的應(yīng)用要求,具有速度和精度的雙重優(yōu)勢。
表4 本文方法與其他方法對比
為了驗(yàn)證本文提出的模塊的有效性,進(jìn)行了消融實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果見表5,分別對局部上下文感知模塊(LCPM)、全局上下文融合模塊(GCFM)進(jìn)行實(shí)驗(yàn)分析。有如下觀察:1)當(dāng)增加了局部上下文感知模塊后,2 個類別的AP 分別提高了5.22 個百分點(diǎn)和7.33個百分點(diǎn),這說明該模塊能有效地感知到多尺度的局部上下文信息;2)當(dāng)使用了全局上下文融合模塊后,AP 分別提高了7.47 個百分點(diǎn)和8.94 個百分點(diǎn),這說明全局上下文融合模塊能夠?qū)⑸顚拥恼Z義特征融合到淺層特征中,解決淺層特征語義不足的問題。在圖8 中,對比了本文方法與基線模型的檢測結(jié)果,可以看出最終模型的檢測效果顯著好于基線模型。
表5 消融實(shí)驗(yàn)結(jié)果
圖8 本文方法與基線模型的檢測結(jié)果對比(紫色矩形框表示佩戴安全帽,綠色矩形框表示未佩戴安全帽)
在這個實(shí)驗(yàn)中,通過改變λ1和λ2的值進(jìn)行了參數(shù)分析。為了識別出安全帽,分類損失和交并比損失是缺一不可的。因此,本文將λ1和λ2的范圍設(shè)定為[0,1,2],固定其中一個參數(shù)的值為1,變化另一個參數(shù)的值,從而分析分類損失和交并比損失對實(shí)驗(yàn)結(jié)果的影響,對應(yīng)的實(shí)驗(yàn)結(jié)果見圖9??梢杂^察到:1)隨著參數(shù)λ1和λ2值的增加,模型的準(zhǔn)確率先穩(wěn)步上升后開始下降;2)當(dāng)參數(shù)λ1和λ2的值在1 附近時,模型取得最好的結(jié)果。3)圖9(a)和圖9(b)中3 條曲線的變化規(guī)律基本一致;4)隨著參數(shù)λ1和λ2值的差距的增加,模型準(zhǔn)確率隨之下降。以上觀察結(jié)果說明2個損失是同等重要的?;谝陨嫌^察,本文設(shè)置λ1=1和λ2=1。
圖9 參數(shù)λ1和λ2變化實(shí)驗(yàn)結(jié)果
針對安全帽識別實(shí)際應(yīng)用中小目標(biāo)識別困難問題,對一階段的目標(biāo)檢測方法進(jìn)行改進(jìn),提出了局部上下文感知模塊和全局上下文融合模塊,增強(qiáng)網(wǎng)絡(luò)的表征學(xué)習(xí)能力。通過采集10000 張施工場景下的圖像,構(gòu)建了面向施工場景下的安全帽識別數(shù)據(jù)集,進(jìn)行訓(xùn)練和測試。在該數(shù)據(jù)上的實(shí)驗(yàn)結(jié)果表明,本文提出的改進(jìn)方案將mAP 提升了11.46 個百分點(diǎn),安全帽識別的平均精度提高了10.55個百分點(diǎn)。本文提出的安全帽識別方法能有效解決復(fù)雜開放場景下的安全帽識別問題,顯著提升了智慧工地的建設(shè)水平。在下一步研究中,將開展危險環(huán)境和施工人員不安全動作的實(shí)時識別,從更多角度為智慧工地建設(shè)提供技術(shù)解決方案。