張耿城,梁爾祝,魏少華,閆大洋,耿圖禺
(1.鞍鋼礦業(yè)爆破有限公司,遼寧 鞍山 114046;2.北京科技大學(xué) 自動(dòng)化學(xué)院,北京 100083)
佩戴安全帽是爆破作業(yè)施工人員為有效保護(hù)自身安全,減少事故發(fā)生的有效防護(hù)措施之一。但目前對爆破工人是否佩戴安全帽的檢測方式耗時(shí)耗力,多是通過管理人員巡檢,或者人為觀察監(jiān)控視頻,存在監(jiān)督性弱和監(jiān)督效率較低等問題。同時(shí),硅膠單點(diǎn)傳感器和壓力傳感器結(jié)合ZigBee定位技術(shù)的傳感器識別方法存在可行性和適用性差等缺點(diǎn),因此文中不予考慮。
近年來,隨著圖像處理技術(shù)的飛速發(fā)展,國內(nèi)外研究學(xué)者在安全帽自動(dòng)化識別上做了諸多創(chuàng)新性研究?;趫D像處理算法,現(xiàn)有的安全帽檢測方法主要分為兩大類:一類是基于傳統(tǒng)圖像處理算法,如劉曉慧等通過人臉膚色定位,之后利用SVM檢測安全帽;何慧敏等使用卷積神經(jīng)網(wǎng)絡(luò)檢測行人,對行人部分做HSV空間變換,得到安全顏色的區(qū)域,再對圖像做圓Hough變換,檢測到的圓形物體即為安全帽;賈峻蘇等將方向梯度直方圖、顏色特征和基于塊的局部二值模式直方圖結(jié)合成特征向量,再使用SVM檢測安全帽。另一類則是基于深度學(xué)習(xí)算法,此類算法又分為兩種,一種是“two-stage”算法,稱為兩階段檢測模型,其先生成候選框,再對候選框做進(jìn)一步的邊框回歸和分類預(yù)測,如R-CNN系列、R-FCN等;第二種是“one-stage”算法,這是一種端對端的深度學(xué)習(xí)算法,直接進(jìn)行回歸并分類生成檢測結(jié)果,如YOLO、SSD等算法。總體而言,一階段的算法速度較快,但精度相比兩階段的算法低。
針對工程爆破現(xiàn)場的特殊環(huán)境和使用要求,本文設(shè)計(jì)了基于YOLOv3的爆破現(xiàn)場安全帽佩戴檢測算法并應(yīng)用到爆破現(xiàn)場實(shí)時(shí)監(jiān)控中。首先,利用礦山開采爆破現(xiàn)場的視頻數(shù)據(jù)和若干張爆破現(xiàn)場拍攝的圖片,對其進(jìn)行進(jìn)一步處理,再通過圖片爬蟲獲得部分圖片,將兩部分結(jié)合,制作安全帽佩戴檢測數(shù)據(jù)集;其次,綜合one-stage和two-stage方法的特點(diǎn)及性能,選擇YOLOv3為算法主體,將YOLOv3模型應(yīng)用到爆破現(xiàn)場安全帽檢測數(shù)據(jù)集,訓(xùn)練和調(diào)參后應(yīng)用到爆破現(xiàn)場視頻流安全帽檢測中。實(shí)驗(yàn)結(jié)果表明,所提算法在保持較高精度的基礎(chǔ)上提高了檢測速率,能實(shí)時(shí)有效的進(jìn)行安全帽佩戴檢測。
利用爆破現(xiàn)場視頻數(shù)據(jù)和拍攝的圖片,對礦山開采中的爆破場景進(jìn)行分析,該場景下安全帽識別的特性可以簡單概括如下:
(1)安全帽在整體畫面中是一個(gè)很小的目標(biāo),當(dāng)目標(biāo)對象所屬的檢測框距離拍攝點(diǎn)很遠(yuǎn)時(shí),其對象框的寬高只在其中占極少像素;
(2)礦山開采過程中爆破場景的檢測背景非常復(fù)雜,目標(biāo)對象特征和采礦相關(guān)的物品、建筑機(jī)械部件等存在相似性,導(dǎo)致經(jīng)常出現(xiàn)誤檢。
通過對爆破場景進(jìn)行分析,在設(shè)計(jì)爆破場景下安全帽的檢測系統(tǒng)時(shí),采用目標(biāo)檢測中常用的一步檢測方法,即無需生成候選框,直接采用端到端的學(xué)習(xí)算法進(jìn)行分類和回歸,直接檢測出是否佩戴安全帽?;诖耍疚囊员片F(xiàn)場人員的頭部和佩戴的安全帽作為目標(biāo)對象框,從兩點(diǎn)進(jìn)行考慮:將頭部信息和人體信息進(jìn)行替換;由于爆破現(xiàn)場檢測的復(fù)雜性,相比頭部,人體更容易出現(xiàn)遮擋,且人體因活動(dòng)可能出現(xiàn)各種各樣的姿態(tài)變換,增加了檢測模型對人體的識別難度,使得模型對人體的檢測精度降低,而頭部區(qū)域包含的背景噪音較少,受人體柔性影響較少。因此,本文目標(biāo)對象框含有兩個(gè)類別,分別是爆破場景下未佩戴安全帽人員頭部和已佩戴安全帽的爆破工人頭部,對這兩類目標(biāo)建立數(shù)據(jù)集,將其作為卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練集,得到用于對爆破現(xiàn)場人員進(jìn)行安全帽佩戴識別的模型,以同時(shí)檢測佩戴安全帽的爆破工人和未佩戴安全帽的工人。
選擇檢測模型時(shí),需要考慮性能和檢測效率,而YOLOv3模型同時(shí)滿足這兩個(gè)條件,其檢測性能和檢測效率都相對較高,因此本文選擇的檢測模型為YOLOv3。
YOLO的核心思想就是把目標(biāo)檢測轉(zhuǎn)換為一個(gè)回歸問題,利用整張圖作為網(wǎng)絡(luò)的輸入,通過神經(jīng)網(wǎng)絡(luò)得到邊界框(bounding box)的位置及所屬類別。隨著深度學(xué)習(xí)目標(biāo)識別算法在各領(lǐng)域的不斷發(fā)展,其均具有良好的應(yīng)用價(jià)值和效果。在一系列深度學(xué)習(xí)算法中,F(xiàn)aster-RCNN算法、YOLO算法、SSD算法應(yīng)用最為廣泛。對于識別算法而言,其準(zhǔn)確率、識別速度、召回率往往難以兼顧,在提高準(zhǔn)確率的同時(shí),算法的識別時(shí)間相對較長。本文基于以上三種算法,通過三種評價(jià)指標(biāo)對其進(jìn)行比較和總結(jié),見表1所列。
表1 Faster-RCNN、YOLO、SSD算法對比
從表1可以看出,YOLOv3的識別速度最快,主要原因是將目標(biāo)區(qū)域預(yù)測和類別預(yù)測整合于一個(gè)神經(jīng)網(wǎng)絡(luò)中,在確保較高準(zhǔn)確率的情況下,識別速度更快。
從YOLOv1到Y(jié)OLOv3,每一代算法性能的提升都與骨干網(wǎng)絡(luò)的改進(jìn)密切相關(guān),從YOLOv1的GoogleLeNet到Y(jié)OLOv2的DarkNet-19,再到Y(jié)OLOv3的DarkNet-53,backbone的改進(jìn)都使得算法性能得到進(jìn)一步提升。
設(shè)計(jì)的DarkNet-53網(wǎng)絡(luò)由53個(gè)DBL卷積單元構(gòu)成,每個(gè)卷積單元由1×1和3×3的卷積層構(gòu)成,為防止過擬合,又在卷積層后加入了一個(gè)批量歸一化層和一個(gè)Leaky ReLU。與YOLOv2中的DarkNet-19對比,發(fā)現(xiàn)DarkNet-53主要做了如下改進(jìn):
(1)未采用最大池化層,用stride=2的卷積層進(jìn)行下采樣;
(2)為防止過擬合,在每個(gè)卷積層后加入BN層和1個(gè)Leaky ReLU;
(3)引入殘差網(wǎng)絡(luò),提取更深層的特征,避免梯度爆炸或消失;
(4)將網(wǎng)絡(luò)的中間層和后面某一層的上采樣進(jìn)行張量拼接,達(dá)到多尺度特征融合的目的。
YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)模型如圖1所示。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
為了進(jìn)行多尺度對象檢測,YOLOv3基于金字塔特征圖與FPN中特征融合的思想,利用小特征圖識別尺寸相對較大的物體,利用大特征圖識別尺寸相對較小的物體,從而達(dá)到多個(gè)尺度信息位置坐標(biāo)的分類和預(yù)測。
輸出尺度特征圖的數(shù)量和尺度的變化(先驗(yàn)框的尺寸需要相應(yīng)調(diào)整)。YOLOv2采用維度聚類的思想,通過k-means聚類得到先驗(yàn)框的尺寸。YOLOv3同樣采用了這種方法,對數(shù)據(jù)集中每種下采樣尺度預(yù)定了3種不同的先驗(yàn)框,共得到9個(gè)不同大小的先驗(yàn)框。其最終獲得的先驗(yàn)框數(shù)量比YOLOv2多,特征提取效果更好。
在YOLOv3中,基于COCO數(shù)據(jù)集得到的先驗(yàn)框分別是:(10,13),(16,30),(33,23),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326)。但在本文場景下,其先驗(yàn)框并不適用于礦山開采過程中爆破場景下建立的安全帽檢測數(shù)據(jù)集。在此場景下,使用k-means聚類分析算法對自制的爆破作業(yè)安全帽檢測數(shù)據(jù)集重新進(jìn)行聚類分析,得到 9 組先驗(yàn)框,分別為:(5,5),(6,7),(7,9),(10,11),(13,15),(19,21),(27,31),(43,50),(79,93)。
在分類預(yù)測過程中,對每個(gè)標(biāo)簽使用BCE Loss進(jìn)行類別預(yù)測;在邊界框預(yù)測過程中,無需使用softmax對每個(gè)目標(biāo)框進(jìn)行分類;使用邏輯回歸預(yù)測每個(gè)邊界框的物體置信度。
深度學(xué)習(xí)是典型的數(shù)據(jù)驅(qū)動(dòng)方法,模型最終的檢測性能極大程度依賴于訓(xùn)練集的質(zhì)量和數(shù)量。本文針對爆破作業(yè)中工人安全帽檢測這一問題,制作了本項(xiàng)目的數(shù)據(jù)集。
3.1.1 數(shù)據(jù)獲取
數(shù)據(jù)來源主要有兩部分:網(wǎng)絡(luò)數(shù)據(jù),通過百度、Google圖片爬蟲得到;爆破現(xiàn)場拍攝的照片或者視頻錄像。本文首先通過爬蟲方法獲取部分圖片,對其進(jìn)行數(shù)據(jù)清洗后,去掉非ROI和相似圖片,將其作為輔助數(shù)據(jù);然后把從現(xiàn)場獲取的視頻錄像按照一定的幀率將視頻分幀,保存為原始的爆破工人安全帽檢測圖像(主要來源)。兩部分樣本數(shù)據(jù)的選擇主要從以下幾方面進(jìn)行:
(1)獲取多種尺度的目標(biāo)對象,增加小樣本對象的比重;
(2)視頻角度多樣,采取不同視角,包括俯視、側(cè)視、仰視等;
(3)目標(biāo)對象的多樣性,多姿態(tài)的目標(biāo)對象,比如屈姿、蹲姿等;
(4)加入不同天氣情況下的目標(biāo)樣本,如雨天、晴天,以及不同光照環(huán)境下的目標(biāo)對象樣本。
圖2所示為本文在礦山開采過程中建立的爆破作業(yè)場景下的現(xiàn)場人員安全帽檢測數(shù)據(jù)集。
圖2 安全帽檢測樣本圖樣示例
3.1.2 數(shù)據(jù)預(yù)處理
對爆破作業(yè)場景下的現(xiàn)場人員安全帽檢測數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理,包括數(shù)據(jù)的歸一化處理、數(shù)據(jù)格式轉(zhuǎn)換及數(shù)據(jù)增強(qiáng)。
由于數(shù)據(jù)集的主要來源是從視頻中截取,所以需要借助OpenCV開發(fā)庫將視頻格式文件轉(zhuǎn)化為圖片PNG格式。又因?yàn)閿?shù)據(jù)的來源不同,網(wǎng)上爬取得到的數(shù)據(jù)和從視頻中得到的圖片分辨率不相同,因此首先需要對上述兩種數(shù)據(jù)進(jìn)行轉(zhuǎn)化,得到分辨率一致的數(shù)據(jù)。
針對檢測對象多尺度問題,在訓(xùn)練過程中應(yīng)該加入多種尺度的目標(biāo)對象樣本以提高YOLOv3模型對多尺度對象檢測的魯棒性;針對視頻拍攝的角度問題、環(huán)境影響等因素對數(shù)據(jù)進(jìn)行增強(qiáng)處理,如隨機(jī)的色彩抖動(dòng)數(shù)據(jù)增強(qiáng)策略,或者對訓(xùn)練樣本加入噪聲擾動(dòng),來提高訓(xùn)練的魯棒性。圖3所示為加入椒鹽噪聲的預(yù)處理圖像。
圖3 加入椒鹽噪聲的預(yù)處理圖像
3.1.3 數(shù)據(jù)篩選
由于爬取得到的數(shù)據(jù)和從視頻中截取的圖片存在大量重復(fù),且不包含感興趣區(qū)域的圖片(ROI),即存在不包含爆破現(xiàn)場工人(或者行人)以及安全帽等主要部分,再或者背景區(qū)域極大,目標(biāo)主體基本消失,為避免增加訓(xùn)練量,需要過濾這部分?jǐn)?shù)據(jù)。本文主要應(yīng)用以下3種方法進(jìn)行數(shù)據(jù)清洗:
(1)用已經(jīng)成熟的檢測算法,如Faster R-CNN算法進(jìn)行初步篩選,過濾大部分非感興趣區(qū)域圖片;
(2)采用深度學(xué)習(xí)模型,如ImageNet預(yù)訓(xùn)練模型進(jìn)行特征提取,去掉重復(fù)率極高的圖片;
(3)手動(dòng)篩選,對于剩下的部分圖片進(jìn)行手動(dòng)剔除。
3.1.4 數(shù)據(jù)標(biāo)注
本文數(shù)據(jù)集標(biāo)注工具采用開源工具LabelImg,使用該工具對爆破作業(yè)場景下的數(shù)據(jù)集進(jìn)行標(biāo)注和分類,將標(biāo)注數(shù)據(jù)中的目標(biāo)對象分為兩個(gè)類別:佩戴安全帽的目標(biāo)樣本標(biāo)注為safety-hat類別;未佩戴安全帽的目標(biāo)對象標(biāo)注為person類別。標(biāo)注界面如圖4所示。標(biāo)注完成后,生成XML文件,用以保存每個(gè)目標(biāo)對象GT框標(biāo)注信息,包括圖片尺寸、目標(biāo)位置和類別信息等。
圖4 LabelImg標(biāo)注界面
因?yàn)閿?shù)據(jù)量過大,手動(dòng)標(biāo)注費(fèi)時(shí)費(fèi)力,因此采用數(shù)據(jù)回灌的方法。利用標(biāo)注好的一部分?jǐn)?shù)據(jù)訓(xùn)練一個(gè)比較粗糙的檢測模型,精度雖然不高,但可以定位目標(biāo)的大致區(qū)域,然后手動(dòng)調(diào)整bounding box位置,可大大提高標(biāo)注效率,同時(shí)還能減少在標(biāo)注過程中出現(xiàn)手抖造成的小圈問題。
本文使用服務(wù)器作為實(shí)驗(yàn)設(shè)備,服務(wù)器搭載2塊NVIDIA GeForce RTX 2080Ti顯卡,每塊的顯存容量為11 GB;服務(wù)器運(yùn)行Ubuntu 18.04.2 LTS操作系統(tǒng);主要編程語言為Python;深度學(xué)習(xí)框架采用tensorflow1.6.0;相關(guān)輔助工具包為numpy、OpenCV等。
本文選用YOLOv3算法官網(wǎng)提供的DarkNet預(yù)訓(xùn)練權(quán)重為初始化參數(shù),然后使用本文制作的爆破工人安全帽數(shù)據(jù)集進(jìn)行參數(shù)微調(diào),得到模型訓(xùn)練準(zhǔn)確率最高的參數(shù)模型,用其對圖片進(jìn)行檢測。本文部分實(shí)驗(yàn)參數(shù)設(shè)置見表2所列。
表2 實(shí)驗(yàn)部分參數(shù)設(shè)定
經(jīng)過500輪的迭代訓(xùn)練,模型達(dá)到收斂,此時(shí)得到最佳訓(xùn)練效果,其mAP達(dá)到90.2%。利用得到的模型對未經(jīng)過訓(xùn)練的圖像進(jìn)行預(yù)測。預(yù)測分為兩部分:一是隨機(jī)選取測試數(shù)據(jù)集中的圖片對爆破作業(yè)人員和安全帽在不同背景環(huán)境下進(jìn)行檢測結(jié)果分析,檢測結(jié)果如圖5所示;二是對爆破現(xiàn)場拍攝的視頻進(jìn)行檢測,檢測結(jié)果如圖6所示。
圖5 預(yù)測結(jié)果示例
圖6 視頻流檢測結(jié)果
出于對爆破行業(yè)中礦山開采工作人員安全性的考慮,同時(shí)提升安全監(jiān)督效率,本文基于YOLOv3深度學(xué)習(xí)算法對其進(jìn)行安全帽佩戴檢測。根據(jù)現(xiàn)場的實(shí)際情況,使用爆破現(xiàn)場錄制的視頻或者圖片作為主要數(shù)據(jù)集,利用YOLOv3模型,采用k-means算法得到適應(yīng)的先驗(yàn)框?qū)ζ溥M(jìn)行檢測。實(shí)驗(yàn)結(jié)果表明,基于YOLOv3模型的mAP達(dá)到了90.2%,在隨機(jī)選取的現(xiàn)場圖像或者錄制視頻進(jìn)行測試都得到了較好的檢測效果,表明了模型訓(xùn)練的有效性。該方法能為礦山開采過程中檢測工作人員是否佩戴安全帽提供可靠的監(jiān)督信息,既可有效避免事故,又可提高安全管理的時(shí)效性。