張 勇,吳孔平,高 凱,楊 旭
(安徽理工大學(xué)電氣與信息工程學(xué)院,安徽 淮南232000)
在日常特殊工作環(huán)境中,安全帽是工作人員生命的保障,能夠有效地減少或防止外來危險(xiǎn)對工作人員頭部的傷害。安全帽的佩戴,可降低人員工作時(shí)的作業(yè)風(fēng)險(xiǎn)。然而,長期以來,作業(yè)人員在施工區(qū)域普遍存在安全意識(shí)薄弱的問題,尤其缺乏基礎(chǔ)防護(hù)設(shè)施如安全帽等的使用意識(shí),無疑大大增加了作業(yè)風(fēng)險(xiǎn)[1]。近年來,國內(nèi)外有不少專家對安全帽的識(shí)別技術(shù)進(jìn)行了深入而廣泛的研究:馮國臣等人使用機(jī)器視覺方法進(jìn)行安全自動(dòng)識(shí)別研究,主要選取 SIFT 角點(diǎn)特征[2]和顏色統(tǒng)計(jì)特征的方法進(jìn)行安全帽檢測;胡恬等人提出的利用小波變換和神經(jīng)網(wǎng)絡(luò)安全帽識(shí)別方法,通過膚色定位人臉的辦法,根據(jù)頭部顏色判斷安全帽的存在;Park等人通過 HOG 特征提取來檢測人體[3],接著采用顏色直方圖識(shí)別安全帽。但是現(xiàn)有的安全帽檢測方法容易受到復(fù)雜多變的環(huán)境影響,同時(shí)檢測準(zhǔn)確率低,速度慢,不能滿足生產(chǎn)環(huán)境中的實(shí)時(shí)檢測要求。由此,本文基于YOLOV3模型,并加以改進(jìn),使得最終的模型具有環(huán)境適應(yīng)性好、檢測準(zhǔn)確率高、速度快等特點(diǎn),滿足實(shí)際應(yīng)用場景。
基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的深度學(xué)習(xí),在提取圖像特征時(shí),相比于傳統(tǒng)方法,具有很大的優(yōu)勢[4]。因此,很多研究人員提出了一系列目標(biāo)檢測算法[5]。2014年,Girshick提出了基于候選區(qū)域和卷積神經(jīng)網(wǎng)絡(luò)的R-CNN算法,該算法在VOC 2012數(shù)據(jù)集上獲得了53.3%的平均準(zhǔn)確率。隨后,Girshick Ren等分別提出了FastR-CNN和FasterR-CNN,F(xiàn)asterR-CNN采用區(qū)域推薦網(wǎng)絡(luò)生成候選框, 再對這些候選框進(jìn)行分類和坐標(biāo)回歸, 檢測精度大幅提升的同時(shí), 檢測速度約為5 fps[6], 由于生成候選框和進(jìn)行預(yù)測分成兩個(gè)步驟進(jìn)行, 所以這些方法稱為Two-Stage方法。但是仍然滿足不了實(shí)時(shí)性要求。直至2015 年,Redmon提出了 YOLO 檢測算法[7],它是把生成候選框和預(yù)測過程同時(shí)進(jìn)行,因而被稱作One-Stage方法。因此YOLO的識(shí)別速度達(dá)到了45fps。在此基礎(chǔ)之上,又衍生出了精度更高的YOLOV2算法,在VOC 2007數(shù)據(jù)集上測試,它的mAP達(dá)到了76.8%[8]。2018年4月,YOLOV3[9]正式提出,相比于YOLOV2,YOLOV3性能提升很大,在保證準(zhǔn)確率的同時(shí),它的速度卻沒有降低。
YOLOV3是 Redmon基于 YOLOV2改進(jìn)的目標(biāo)檢測算法。不同于YOLOV2所使用的網(wǎng)絡(luò)結(jié)構(gòu)Darknet-19[10],YOLOV3采用了全新的特征提取網(wǎng)絡(luò):Darknet-53。同時(shí)YOLOV3和YOLOV2的Loss不同,YOLOV3用logistic loss替換了YOLOV2中的softmax loss。此外,YOLOV2用了5個(gè)anchor,而YOLOV3用了9個(gè)anchor,提高了IOU。這些改進(jìn)方法都為YOLOV3后來良好的表現(xiàn)奠定了基礎(chǔ)。YOLOV3與其它算法[12]的對比,見表1。
表1 YOLOV3與其它算法的對比
在深度學(xué)習(xí)中,數(shù)據(jù)集質(zhì)量的高低直接影響了最終檢測效果的好壞。本次實(shí)驗(yàn)從網(wǎng)上下載了各種情況下800張工作人員佩戴安全帽的圖片,作為訓(xùn)練集,另外選擇200張作為測試集。兩種數(shù)據(jù)集如圖1、圖2所示。
圖1 安全帽訓(xùn)練集
圖2 安全帽測試集
為了盡量克服由于數(shù)據(jù)集樣本少而產(chǎn)生的過擬合問題,本實(shí)驗(yàn)采用了旋轉(zhuǎn)、對比度變化的方法對自制數(shù)據(jù)集進(jìn)行了數(shù)據(jù)增強(qiáng)。同時(shí),由于相機(jī)的視距較遠(yuǎn)、焦距不正確或相機(jī)移動(dòng),所獲得的圖像可能不清晰。模糊圖像也會(huì)影響神經(jīng)網(wǎng)絡(luò)的檢測結(jié)果。因此,本文將旋轉(zhuǎn)、對比度增強(qiáng)后的圖像隨機(jī)模糊,模擬模糊圖像。將模糊圖像作為樣本,進(jìn)一步提高檢測模型的魯棒性。
在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,由于卷積和下采樣,使得特征圖減少,在傳輸過程中丟失了特征信息,從而容易產(chǎn)生梯度消失。DenseNet體系結(jié)構(gòu)是為了更有效地利用神經(jīng)網(wǎng)絡(luò)的輸入特性而提出的[13]。在DenseNet體系結(jié)構(gòu)中,DenseNet的基本結(jié)構(gòu)主要由致密塊和過渡層兩部分組成。密集塊是一組密集連接的特征圖。相鄰兩個(gè)密集塊之間的層稱為過渡層,通過卷積和池化改變feature map的大小。DenseNet在神經(jīng)網(wǎng)絡(luò)中的應(yīng)用增強(qiáng)了特征的傳播,有效地解決了消失梯度問題,提高了神經(jīng)網(wǎng)絡(luò)的分類精度。圖3展示了如何以YOLOV3的Darknet-53架構(gòu)作為基本的網(wǎng)絡(luò)架構(gòu),使用DenseNet代替分辨率較低的原始傳輸層,從而達(dá)到增強(qiáng)特征傳播,促進(jìn)特征重用和融合的目的。
圖3 YOLOV3-DenseNet 網(wǎng)絡(luò)示意圖
其中,X0, X1,X2,X3,X4作為輸入,每一層都使用來自前面所有層的特征映射作為輸入,而它自己的特征映射用作后面所有層的輸入,這些特征圖通過深度連接來連接。H1,H2,H3,H4…Hi 是一個(gè)函數(shù),它結(jié)合了批處理規(guī)范化(BN),糾正線性單元(ReLU)和卷積(Conv),用于處理拼接后的特征映射。首先,H1利用BN-ReLU-Conv (1*1)對輸入X0進(jìn)行非線性操作,然后對操作的結(jié)果再進(jìn)行BN-ReLU-Conv (3*3)變換。X1的結(jié)果和[X0]的特征被拼接成[X0, X1]作為輸入送入到H2中。X2的結(jié)果和[X0, X1]的特征被拼接成[X0, X1,X2]作為輸入送入到H3中。同理,X3的結(jié)果和[X0, X1,X2]的特征被拼接成[X0, X1,X2,X3]作為輸入送入到H4中。最終拼接的特征圖[X0, X1,X2,X3,X4]繼續(xù)向前傳播,遇到16*16的卷積層時(shí),特征的前向傳播以及特征層的拼接和上述方法相同,最后特征層被拼接成16*16*1024,繼續(xù)向前傳播。這樣的一種結(jié)構(gòu)使得DenseNet能夠減少梯度消失,增強(qiáng)特性傳播,促進(jìn)特性重用,并大大減少參數(shù)的數(shù)量。因此,在訓(xùn)練過程中,當(dāng)圖像的特征被傳輸?shù)降头直媛蕦訒r(shí),后一層特征層將接收到DenseNet中它前面所有特征層的特征,從而減少了特征的丟失。這樣,低分辨率的卷積層之間可以重用特征,提高了使用率。圖4是YOLOV3-Dense詳細(xì)結(jié)構(gòu)圖。
圖4 YOLOV3和YOLOV3-Dense網(wǎng)絡(luò)結(jié)構(gòu)圖
為了使網(wǎng)絡(luò)結(jié)構(gòu)適應(yīng)高分辨率圖片,輸入圖片的尺寸由256*256 pixels調(diào)整為 512*512 pixels。同時(shí),32*32和16*16下采樣層在改進(jìn)結(jié)構(gòu)中,被替換成DenseNet結(jié)構(gòu)。
由于借鑒了Faster-RCNN的錨點(diǎn)框思想,YOLOV3先設(shè)置一組人工選取的初始候選邊框,讓網(wǎng)絡(luò)的不斷的學(xué)習(xí),根據(jù)真實(shí)邊框?qū)Τ跏己蜻x邊框進(jìn)行不斷地修正,使其最終接近真實(shí)邊框的參數(shù)??梢钥闯觯跏己蜻x邊框參數(shù)選取的好壞直接影響其后面網(wǎng)絡(luò)地學(xué)習(xí)速度。不一樣的目標(biāo),目標(biāo)真實(shí)邊框的位置以及大小的參數(shù)都有一定的差異。比如公開數(shù)據(jù)集VOC中,標(biāo)注汽車的邊框一般比較大,也比較長;標(biāo)注行人的邊框一般比較高,寬度較小等。而安全帽的特點(diǎn)與它們有著很大的不同,因此在實(shí)際安全帽檢測任務(wù)中,YOLOV3 算法中早前計(jì)算得到的先驗(yàn)框維度并不適用于安全帽檢測應(yīng)用場景。需要重新進(jìn)行聚類分析。為了能夠讓網(wǎng)絡(luò)更好地學(xué)習(xí)安全帽的位置和大小的特點(diǎn),論文使用K-means算法對實(shí)際應(yīng)用場景下的安全帽數(shù)據(jù)集中的真實(shí)邊框進(jìn)行重新聚類分析,從而得到相對應(yīng)的初始候選邊框的參數(shù)。不同于K-means算法常用的歐氏距離、曼哈頓距離等距離量度,為了防止大框會(huì)比小框產(chǎn)生更多的誤差,使用預(yù)測目標(biāo) 框與真實(shí)目標(biāo)框的面積交并比即IOU來計(jì)算距離,公式如下
D(box,centroid)=1-IOU(box,centroid)
其中box表示樣本,centroid 表示簇的中心。
通過對安全帽樣本的聚類分析,得到了候選邊框數(shù)量與K值的關(guān)系圖,如圖5所示。
圖5 K-means聚類結(jié)果
由上圖可以看出,隨著K值的增加,IOU逐漸變大,從而檢測精度越高。與此同時(shí),由于邊框數(shù)量越多,會(huì)一定程度上影響到檢測的速度。因此權(quán)衡準(zhǔn)確率與速度,本次實(shí)驗(yàn)選擇邊框數(shù)量為K=9,即在保證準(zhǔn)確率的前提下,不至于讓速度下降太多,更好的適應(yīng)實(shí)時(shí)目標(biāo)檢測。
根據(jù)安全帽數(shù)據(jù)集事先標(biāo)注好的參數(shù),選定K=9,使用K-means算法,在ubuntu上得到9組適合安全帽檢測的邊框具體的參數(shù),并按照面積從小到大的順序排列成為:(23,24), (34,49), (64,42), (59,83), (101,56), (87,78), (120,87), (151,128), (152,188)。用這9組數(shù)據(jù)替換原YOLOV3中的邊框參數(shù),即可進(jìn)行下一步訓(xùn)練過程。
實(shí)驗(yàn)硬件環(huán)境:
CPU :因特爾I7-8200
顯卡 :英偉達(dá)(NVIDIA)TITAN
實(shí)驗(yàn)軟件環(huán)境:
操作系統(tǒng):Ubuntu16.4
C U D A :CUDA-8.0
Opencv :CV3.1
訓(xùn)練參數(shù)如下:批處理大小設(shè)為16;動(dòng)量設(shè)為0.9 ;權(quán)重衰減設(shè)為0.0005;最大迭代次數(shù)設(shè)為3000次。學(xué)習(xí)率初始值設(shè)為0.0001。為了更好得比較改進(jìn)YOLOV3模型與原YOLOV3模型檢測效果。本實(shí)驗(yàn)對兩種模型分別進(jìn)行了訓(xùn)練。兩種訓(xùn)練過程得到平均損失和平均IOU(交并比)情況如圖6、圖7、8所示。
圖6 兩種模型平均損失結(jié)果對比圖
圖7 原YOLOV3模型IOU圖
從上圖可以看出,在對YOLOV3改進(jìn)之后,隨著迭代次數(shù)batches的不斷增加,新的YOLOV3模型比原YOLOV3的學(xué)習(xí)能力更強(qiáng),收斂更快。
圖8 改進(jìn)YOLOV3模型IOU圖
IOU越高,說明檢測準(zhǔn)確率越好,通過對兩種模型IOU情況的分析,可以看出,一開始兩種模型的IOU都比較低,隨著訓(xùn)練的進(jìn)行,學(xué)習(xí)到的特征越來越多,兩種模型的IOU逐漸提升,在batches=40000次的時(shí)候,改進(jìn)型YOLOV3比原YOLOV3獲得了更高更穩(wěn)定的IOU。隨后便保持IOU在一個(gè)相對穩(wěn)定的狀態(tài)。兩種模型IOU的差異也為后面的測試比較過程奠定了基礎(chǔ)。
下面通過從200張測試集隨機(jī)抽取一張圖片進(jìn)行測試,兩種模型測試得到的圖片結(jié)果如圖9、圖10所示。
圖9 原模型檢測結(jié)果圖
圖10 改進(jìn)模型檢測結(jié)果
通過對圖9、圖10的分析,可以看出,雖然安全帽都能被兩種模型檢測出來,但是進(jìn)一步分析,可以看出,原YOLOV3模型對于每個(gè)帽子的檢測的準(zhǔn)確率為98%,93%,85%,50%,而改進(jìn)型YOLOV3對于每個(gè)帽子的檢測準(zhǔn)確率為:100%,98%,96%,81%。都要比原YOLOV3有所提升。同時(shí),從實(shí)驗(yàn)檢測的速度上來看,實(shí)驗(yàn)中,原YOLOV3檢測1幀用時(shí):0.034119秒,而改進(jìn)型YOLOV3檢測1幀用時(shí):0.021383秒。改進(jìn)型YOLOV3比原YOLOV3快了0.012秒。從處理實(shí)時(shí)視頻的角度來看,由于視頻是由很多圖片幀構(gòu)成的,如果每張圖片檢測的時(shí)間都能縮短一點(diǎn),那么對檢測視頻的整體效果也是很有益的。為了防止上述圖片的選擇具有偶然性,從而對兩種模型的比較產(chǎn)生問題,本實(shí)驗(yàn)對測試數(shù)據(jù)集進(jìn)行了大量檢測,選擇精確率均值 mAP,以及每秒檢測幀數(shù)FPS(速度)作為檢測模型的評價(jià)指標(biāo),用文獻(xiàn)[15]中的SSD、文獻(xiàn)[16]中的Faster R-CNN以及文獻(xiàn)[17]中的YOLO V3等算法進(jìn)行對比。四種模型在準(zhǔn)確率和速度上綜合比較,見表2。
表2 實(shí)驗(yàn)結(jié)果對比
因此從評價(jià)指標(biāo)上來看,實(shí)驗(yàn)得出改進(jìn)型的YOLOV3在保證準(zhǔn)確率的情況下,它能獲得更好的實(shí)時(shí)檢測效果。
本文通過改進(jìn)YOLOV3模型的結(jié)構(gòu),增加DenseNet結(jié)構(gòu),讓每一層學(xué)到的feature map都能被之后所有層直接使用,這使得特征可以在整個(gè)網(wǎng)絡(luò)中重用,也使得模型更加簡潔。同時(shí)利用K-means算法對候選框重新進(jìn)行聚類分析,得到了改進(jìn)型的YOLOV3,并在自制的增強(qiáng)型安全帽數(shù)據(jù)集上進(jìn)行訓(xùn)練、測試。實(shí)驗(yàn)結(jié)果表明,改進(jìn)型YOLOV3無論是從速度還是準(zhǔn)確率上都要優(yōu)于原YOLOV3模型,滿足了日常環(huán)境下對安全帽檢測的實(shí)時(shí)性和準(zhǔn)確性的要求。
然而,日常環(huán)境復(fù)雜多變,如何在保證準(zhǔn)確率和速度的前提下,進(jìn)一步優(yōu)化算法,提高模型的不間斷跟蹤的能力,這將是下一步研究的重點(diǎn)。