王 兵,李文璟,唐 歡
西南石油大學(xué) 計算機科學(xué)學(xué)院,成都610500
施工現(xiàn)場的安全帽佩戴檢測主要包括查看監(jiān)控圖像、人工巡檢等方式。人工巡檢費時費力,實時監(jiān)控圖像需要監(jiān)督人員長時間緊盯屏幕,都會出現(xiàn)漏判情況。如果在施工現(xiàn)場沒有佩戴安全帽,將會造成嚴(yán)重的后果。使用深度學(xué)習(xí)方法實時檢測現(xiàn)場工人安全帽佩戴情況,具有重要的工程實用價值。
傳統(tǒng)的目標(biāo)檢測需要通過手工設(shè)計特征,該種方法在實際檢測中存在準(zhǔn)確率低、模型泛化性差等問題。深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)(CNN),在提取圖像特征時具有無需手工設(shè)計特征的優(yōu)勢。國外學(xué)者提出了一系列基于深度學(xué)習(xí)的目標(biāo)檢測算法。2015 年Girshick 等分別提出R-CNN[1]、Fast R-CNN[2]和Faster R-CNN[3],在VOC2007數(shù)據(jù)集[4]上,從R-CNN 暴力檢測到RPN 網(wǎng)絡(luò),不僅提高了準(zhǔn)確率,幀速率也達到5 f/s,檢測效果遠遠優(yōu)于手工設(shè)計特征。2015 年Redmon 等提出YOLO v1[5],進一步提高檢測速率。2015年Liu等[6]提出SSD 多尺度方法,提高了準(zhǔn)確率。2018 年Redmon 等提出YOLO v3[7]檢測算法,該算法為YOLO 系列最新檢測算法,在視頻檢測上達到了45 f/s。2017年國外學(xué)者提出在建筑安全應(yīng)用中的自動安全帽檢測[8]。
在國內(nèi)使用目標(biāo)檢測算法對安全帽佩戴進行檢測已成未來研究趨勢。2014 年劉曉慧等[9]使用Hu 矩和膚色檢測來識別安全帽。2015 年周艷青等[10]提出將頭部區(qū)域相關(guān)特征輸入到人工神經(jīng)網(wǎng)絡(luò)進行分類預(yù)測。2015 年姚群力等[11]分析R-CNN 系列和YOLO v1 算法。2019 年施輝等[12]采用圖像金字塔結(jié)構(gòu)提取多種尺度的特征圖和YOLO v3相結(jié)合。
然而,YOLO v1 到v3 僅使用誤差平方和建立目標(biāo)函數(shù),導(dǎo)致了目標(biāo)函數(shù)和評價函數(shù)不統(tǒng)一,出現(xiàn)目標(biāo)局部最優(yōu)不一定是IoU 局部最優(yōu)的問題。如圖1 所示,使用誤差平方和計算,預(yù)測框1 與真實框的誤差和預(yù)測框2與真實框的誤差相同,但IoU值卻存在差異。
在圖1中出現(xiàn)平方誤差相同,但IoU不同,并且預(yù)測框2 對于真實框出現(xiàn)截取不完整現(xiàn)象,這個現(xiàn)象會影響安全帽佩戴檢測的證據(jù)可靠性或引起其他問題。2019年Rezatofighi 等[13]提出GIoU 指標(biāo),對解決該問題指出新的方案。如圖2 所示,在IoU 值為0.500 7 和0.502 8時,GIoU 值低的預(yù)測框就出現(xiàn)截取不完整現(xiàn)象,GIoU值高的才是目標(biāo)檢測最優(yōu)的預(yù)測框??梢钥闯?,GIoU比IoU更能反應(yīng)預(yù)測框的優(yōu)劣。
GIoU-YOLO v3 為GIoU 算法在YOLO v3 中的實現(xiàn)。GIoU-YOLO v3還存在一定的缺陷。雖然GIoU 總體上比IoU 更優(yōu),但是兩框不相交的極端情況只是在模型訓(xùn)練開始時會出現(xiàn),并且YOLO v3 早已針對此情況作處理,隨著不斷訓(xùn)練,極端情況會不斷地減少,GIoUYOLO v3未考慮此情況,直接替換目標(biāo)函數(shù),這樣會對模型有一定的影響。
本文提出了改進的YOLO v3 算法。首先,將兩框的相交面積除以包含兩框的最小框面積。然后,根據(jù)新的評價方案和YOLO v3的目標(biāo)函數(shù)建立了新的目標(biāo)函數(shù),以獲得目標(biāo)函數(shù)和評價函數(shù)統(tǒng)一。新目標(biāo)函數(shù)是將包含兩框的最小框減去兩框的相交,最后除以包含兩框的最小框的計算方法添加到Y(jié)OLO v3 原目標(biāo)函數(shù)中。最后在訓(xùn)練模型時將生成ignore_mask 的IoU 計算替換為兩框的相交面積除以包含兩框的最小框面積,進一步減少預(yù)測框中負樣本對模型訓(xùn)練的影響。
圖1 誤差平方和相同時比較
圖2 GIoU與IoU值的結(jié)果比較
分別使用VOC2007 數(shù)據(jù)集和施工現(xiàn)場安全帽佩戴數(shù)據(jù)集對改進YOLO v3 算法訓(xùn)練與評估。VOC2007數(shù)據(jù)集是目標(biāo)檢測常用公共數(shù)據(jù)集,該數(shù)據(jù)集有20 類。施工現(xiàn)場監(jiān)控安全帽佩戴數(shù)據(jù)集為自制數(shù)據(jù)集,從施工現(xiàn)場監(jiān)控攝像頭獲取視頻數(shù)據(jù),或從已保存的視頻數(shù)據(jù)中抽取視頻數(shù)據(jù)中的幀保存為圖片,抽取的圖像中有佩戴安全帽類和未佩戴安全帽類,并對安全帽佩戴情況打上標(biāo)簽,最后形成安全帽佩戴檢測數(shù)據(jù)集。
訓(xùn)練集輸入改進YOLO v3、GIoU-YOLO v3 和YOLO v3 算法中,并在統(tǒng)一實驗環(huán)境下訓(xùn)練模型。輸入測試數(shù)據(jù)集到訓(xùn)練完成的模型中,得到預(yù)測框和對應(yīng)的類別,并對結(jié)果計算mAP-50。每個算法的模型保留4個較優(yōu)模型,并在取其中最優(yōu)模型作為評估模型。
實驗表明,改進YOLO v3 相比于YOLO v3 算法,在公共數(shù)據(jù)集VOC2007 中mAP-50 提高2.07%。改進YOLO v3 相比于YOLO v3 算法,在安全帽佩戴數(shù)據(jù)集中mAP-50提高2.05%。
本章首先描述IoU 與GIoU 的計算方式,然后介紹YOLO v3網(wǎng)絡(luò)和目標(biāo)函數(shù),最后介紹GIoU-YOLO v3。
圖3中有兩個矩形A、B,以及包含它們的最小框C。
交并比IoU 又被稱為Jaccard 系數(shù)(Jaccard index),用來衡量兩個集合的相似度。圖3 中A和B 為兩個矩形,也可以看作兩個集合。其Jaccard系數(shù)公式如下:
在2D、3D 目標(biāo)檢測評價函數(shù)中IoU 被廣泛使用,IoU 可表示一個距離,并且具有尺度不變性,因此IoU 常用于評估[14]。這就意味著,在S空間中,A與B的關(guān)系在不同尺度具有不變的特性。但是IoU 也存在問題:當(dāng)A與B相交為0或者A與B相距甚遠時,IoU(A,B)始終為0,IoU無法反應(yīng)兩者之間的關(guān)系。
圖3 中,令包含A和B 的最小的封閉框為C。聯(lián)合廣義相交公式如下:
聯(lián)合廣義相交GIoU 同樣具有尺度不變性,在A與B相交的情況和目標(biāo)函數(shù)有很強的相關(guān)性,在A與B不相交時,A與B的距離也能度量。
GIoU 計算是先計算兩框最小閉包區(qū)域面積C,再計算IoU,計算閉包區(qū)域中不屬于兩框的區(qū)域占閉包區(qū)域C 的比重,最后用IoU 減去這個比重得到GIoU。IoU為GIoU 的下界,當(dāng)預(yù)測框與真實框重合時,GIoU 將等于IoU。GIoU 的值域為[-1,1],而IoU 的值域為[0,1]。
此最小框包含兩框的交集、并集、d1和d2區(qū)域。當(dāng)此d1和d2區(qū)域為零時,最小框與兩框并集相等。
IoU 只關(guān)注重疊區(qū)域:A、B和AB。GIoU 不僅關(guān)注重疊區(qū)域,還關(guān)注其他的非重疊區(qū)域:d1和d2,更好地反應(yīng)出預(yù)測框與真實框之間的重合度。
當(dāng)d1和d2區(qū)域越大時,目標(biāo)截取越不完整。d1與d2區(qū)域是非重疊區(qū)域重要影響因素。不僅僅只有GIoU同時注重重疊區(qū)域與非重疊區(qū)域,也存在其他簡單計算方法同樣注重這兩個區(qū)域。
YOLO v3是YOLO系列的最新檢測網(wǎng)絡(luò),在YOLO v2[15]基礎(chǔ)上使用DarkNet-53 網(wǎng)絡(luò),輸出借鑒Faster RCNN中FPN網(wǎng)絡(luò),采用多尺度輸出feature map,YOLO v3的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
YOLO v3 修改b-box 的預(yù)測方法,在對b-box 進行預(yù)測的時候采用邏輯回歸,使用邏輯回歸對anchor包圍的部分計算目標(biāo)置信度,使得在對預(yù)測結(jié)果處理時,可以去除不必要的框。既減少了預(yù)測時的計算量,又提高了訓(xùn)練效率,在性能上完全滿足實時檢測的要求。
YOLO v3 的目標(biāo)函數(shù)在之前本版上進行修改,除框w 和h 的誤差計算依然使用平方誤差外,框的中心點誤差計算、框的置信度誤差計算和類別誤差計算都使用了二元交叉熵。YOLO v3 的LossYOLOv3目標(biāo)函數(shù)公式如下:
GIoU-YOLO v3 算法為GIoU 在YOLO v3 中的實現(xiàn)。分別以IoU 和GIoU 提出兩種目標(biāo)函數(shù):LIoU=1-IoU、LGIoU=1-GIoU,Hamid等[13]證明LGIoU目標(biāo)函數(shù)訓(xùn)練的結(jié)果優(yōu)于LIoU目標(biāo)函數(shù)訓(xùn)練的結(jié)果。
GIoU-YOLO v3卻未考慮YOLO v3在設(shè)計時模型結(jié)構(gòu)與目標(biāo)函數(shù)的關(guān)系。Rezatofighi 等[13]是直接把YOLO v3 中計算框的目標(biāo)函數(shù)替換為LGIoU,mAP 確有提升,但未考慮YOLO v3 原有目標(biāo)函數(shù)設(shè)計。LGIoU應(yīng)為YOLO v3 原有目標(biāo)函數(shù)的約束。
圖4 YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)圖
IoU只注重重疊區(qū)域,GIoU同時注重重疊區(qū)域與非重疊區(qū)域。IoU 值相同,GIoU 值不相同,主要是非重疊區(qū)域的影響。如圖5所示。
圖5 IoU、GIoU和IoU_GIoU對比
左側(cè)預(yù)測框與真實框IoU 值大于右側(cè)預(yù)測框與真實框的IoU 值,但左側(cè)預(yù)測框與真實框GIoU 值卻小于右側(cè)預(yù)測框與真實框的GIoU 值。若按照左側(cè)預(yù)測框截取,將會出現(xiàn)目標(biāo)截取不完整,IoU 值越小,這種現(xiàn)象越明顯。因為重疊區(qū)域越小,非重疊區(qū)域的影響越大。
GIoU 優(yōu)于IoU 在于同時關(guān)注重疊區(qū)域面積與非重疊區(qū)域面積,如圖3 所示,d1與d2區(qū)域也影響兩框的并集,若不對其約束,將會影響預(yù)測框與真實框的重合度。為得到“優(yōu)質(zhì)”的預(yù)測框,應(yīng)同時關(guān)注重疊區(qū)域與非重疊區(qū)域。
本文提出一種簡單計算方法,同時注重重疊區(qū)域與非重疊區(qū)域,公式如下:
IoU_GIoU 的分子關(guān)注重疊區(qū)域的面積,分母C 的面積為A與B 并集的面積加d1與d2區(qū)域的面積,這樣也關(guān)注非重疊區(qū)域的面積。
GIoU 的思想是重疊區(qū)域面積與非重疊區(qū)域面積共同反應(yīng)預(yù)測框和真實框的重合度。IoU_GIoU 的值會隨著重疊區(qū)域減小而減小,增大而增大。隨著非重疊區(qū)域減小而增大,增大而減小。IoU_GIoU 同時也關(guān)注這個兩個區(qū)域,并且比GIoU 計算簡單。
當(dāng)d1和d2區(qū)域面積為0 時,IoU_GIoU 值與IoU 值相等。當(dāng)d1和d2 區(qū)域面積不為0 時,IoU_GIoU 值與GIoU 值都能反應(yīng)重疊區(qū)域與非重疊區(qū)域的情況。
IoU_GIoU 與GIoU 一樣可以評估出預(yù)測框的優(yōu)劣,并且IoU_GIoU計算比GIoU 計算更簡潔。在改進YOLO v3 算法模型訓(xùn)練時使用IoU_GIoU 替換IoU解決了相同IoU 值中的“優(yōu)質(zhì)框”問題。雖然IoU_GIoU缺少對兩框不相交時的度量,但是在YOLO v3 中存在錨框等方法,因此目標(biāo)檢測更注重是兩框相交的這種情況。
YOLO v3 算法中對w、h 計算誤差時,僅僅使用誤差平方和,在誤差平方和相等情況下IoU卻有高有低。
為解決評價指標(biāo)與目標(biāo)函數(shù)不統(tǒng)一對模型的影響。Rezatofighi 等[13]提出GIoU 算法,并使用LGIoU作為目標(biāo)函數(shù),實現(xiàn)了GIoU-YOLO v3,mAP 得到了提高。但GIoU-YOLO v3未考慮YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)與目標(biāo)函數(shù)的關(guān)系。YOLO v3使用錨框、網(wǎng)格等方法,并設(shè)計對應(yīng)的目標(biāo)函數(shù)。因此本文提出:將GIoU 等思想應(yīng)加入YOLO v3目標(biāo)函數(shù),成為原目標(biāo)函數(shù)的約束。
本文目標(biāo)函數(shù)借鑒YOLO v3 算法和IoU_GIoU。提出新目標(biāo)函數(shù)Lossnew。Lossnew公式如下:
LossYOLOv3為YOLO v3 原目標(biāo)函數(shù)。LossG考慮了IoU_GIoU 計算方法,并且設(shè)計了面積計算方法,LossG公式如下:
設(shè)計的計算方法保障了面積計算不會存在異常情況,避免兩負數(shù)相乘為正的錯誤計算。CArea為C 的面積。ABArea為A與B交集的面積。計算公式如下:
本文目標(biāo)函數(shù)根據(jù)IoU_GIoU 設(shè)計。當(dāng)d1和d2區(qū)域為0 時,LossG和LGIoU將退化為LIoU=1-IoU。當(dāng)d1和d2 區(qū)域不為0,并且A 與B 交集的面積不為0 時,LossG比LGIoU更重視d1和d2區(qū)域與AB 區(qū)域?qū)δ繕?biāo)函數(shù)的影響,公式如下:
重疊區(qū)域最重要的是AB區(qū)域,非重疊區(qū)域最重要的是d1和d2區(qū)域,對于A與B 并集的面積則是次要影響非重疊區(qū)域。通過比較上述公式可以發(fā)現(xiàn)LossG更重視重疊區(qū)域與非重疊區(qū)域?qū)δ繕?biāo)函數(shù)的影響,很適合對原目標(biāo)函數(shù)中誤差平方和計算修正。LossG也會隨著IoU_GIoU 值的增大而減小,從而使Lossnew達到真正的最優(yōu)。
YOLO v3 計算框置信度的損失值時使用二元交叉熵,并計算負樣本框的損失值。由于YOLO v3 使用多尺度預(yù)測框,預(yù)測框中的負樣本數(shù)遠大于正樣本數(shù)。因此Redmon 等使用ignore_mask[7],對于不滿足忽略閾值的負樣本直接忽略,從而減少正負樣本比例的嚴(yán)重傾斜。
YOLO v3生成ignore_mask是使用IoU計算預(yù)測框與真實框的值與忽略閾值比較。若大量的負樣本與真實框的IoU 值滿足忽略閾值,還是會導(dǎo)致模型難以訓(xùn)練。因此ignore_mask與忽略閾值對模型訓(xùn)練尤為重要。
將模型訓(xùn)練生成ignore_mask 使用的IoU 計算替換為IoU_GIoU 計算。IoU_GIoU 值小于等于IoU 值,當(dāng)d1和d2區(qū)域為0 時,IoU_GIoU 值與IoU 值相等。在相同忽略閾值下,IoU_GIoU生成的ignore_mask 將進一步減少負樣本對模型訓(xùn)練的影響。
忽略閾值越大,忽略的框就可能越多,對模型訓(xùn)練有很大影響。但IoU_GIoU 與GIoU 是區(qū)分同IoU 值下,預(yù)測框的質(zhì)量,并非使忽略閾值增大。在訓(xùn)練改進YOLO v3 算法模型時,忽略閾值設(shè)為0.5,mAP-50 將得到提升。
在訓(xùn)練時更改忽略閾值得到的改進YOLO v3調(diào)整參數(shù)模型,在檢測時需設(shè)置IoU 值為0.5以上,score值為0.3。對于未調(diào)整參數(shù)的模型IoU 值一般設(shè)置為0.5,score 值0.3。在此設(shè)置的IoU 值與score 值都會與實際情況相結(jié)合。
根據(jù)實際情況設(shè)置IoU 值與score值均不需要再訓(xùn)練模型,減少了訓(xùn)練模型的時間成本,在實用性上也得到提升。
改進YOLO v3 算法將使用新目標(biāo)函數(shù)Lossnew和IoU_GIoU 計算方法訓(xùn)練模型。模型初始權(quán)重使用YOLO v3 中的Darknet YOLO 預(yù)訓(xùn)練模型權(quán)重。為了對比改進YOLO v3的優(yōu)勢,分別使用GIoU-YOLO v3、YOLO v3和SSD 在統(tǒng)一實驗環(huán)境下訓(xùn)練模型。
為了進一步說明改進YOLO v3 優(yōu)勢不是特例情況。每個算法的模型訓(xùn)練時保存較優(yōu)的4 個模型,最后在4 個較優(yōu)模型中使用mAP-50 進行模型評估,選出最優(yōu)模型作為對比模型。
此次實驗設(shè)備信息為:CPU 4770K,顯卡1080ti,內(nèi)存32 GB,操作系統(tǒng)為Windows 10,深度學(xué)習(xí)框架為Keras。為了進一步證明改進YOLO v3 效果。本文采用兩套數(shù)據(jù)集,分別為VOC2007 數(shù)據(jù)集和施工現(xiàn)場安全帽佩戴數(shù)據(jù)集。施工現(xiàn)場安全帽佩戴數(shù)據(jù)集為實驗1,VOC2007數(shù)據(jù)集為實驗2。
4.1.1 實驗1數(shù)據(jù)預(yù)處理
建立施工現(xiàn)場安全帽佩戴數(shù)據(jù)集,首先使用OpenCV 開發(fā)庫從錄像視頻文件或者實時攝像頭中按時間段截取幀,獲取分辨率為1 280×720 以上的圖像數(shù)據(jù),保存為圖像格式文件。再采用labelImg 工具對圖像格式文件進行標(biāo)記,標(biāo)記操作需要人工執(zhí)行,將圖像中的未帶安全帽的人和正確佩戴安全帽的人標(biāo)注出,如圖6所示,并形成相對應(yīng)的xml配置文件。
4.1.2 實驗1網(wǎng)絡(luò)訓(xùn)練
圖6 安全帽佩戴情況標(biāo)注
在實驗過程中,將施工現(xiàn)場安全帽佩戴數(shù)據(jù)集,按7∶3 分為訓(xùn)練集與測試集,從自制數(shù)據(jù)集中訓(xùn)練集隨機抽出20%的圖片為驗證集,抽出的驗證集依舊屬于訓(xùn)練集,并且將數(shù)據(jù)集xml中的框和類別信息讀取出來。
在整個自制數(shù)據(jù)集中,佩戴安全帽與不佩戴安全帽具體信息如表1 所示。訓(xùn)練集數(shù)據(jù)輸入YOLO v3 模型并使用Lossnew訓(xùn)練前,使用圖像增強技術(shù)不斷的將圖像數(shù)據(jù)的色調(diào)(H)、飽和度(S)、明度(V)等其他參數(shù)進行微調(diào)。訓(xùn)練出的模型泛化性更高。
模型訓(xùn)練分為兩次,第一次訓(xùn)練學(xué)習(xí)率(learningrate)為0.000 1,輪次(epoch)為50次,每一輪次迭代次數(shù)為70次,一共迭代次數(shù)為3 500,每一次迭代訓(xùn)練的樣本數(shù)為32。第二次訓(xùn)練使用減少學(xué)習(xí)率和提前終止(early stopping),初始學(xué)習(xí)率(learning rate)為0.000 01,最大輪次(epoch)為50 次,每一輪次迭代次數(shù)為280 次,最大迭代次數(shù)為28 000次,每一次迭代訓(xùn)練的樣本數(shù)為8,若連續(xù)3 輪次(epoch)驗證集的損失值未改善,學(xué)習(xí)率(learning rate)將乘以0.1,若連續(xù)10 輪次(epoch)驗證損失值未改善,則訓(xùn)練終止。改進YOLO v3 算法使用安全帽佩戴數(shù)據(jù)集的訓(xùn)練損失值如圖7 和圖8 所示。由于增加LossG,模型首個輪次(epoch)訓(xùn)練時,改進YOLO v3 算法損失值較高。但經(jīng)過第一次訓(xùn)練和第二次訓(xùn)練后,改進YOLO v3算法損失值都趨于穩(wěn)定。
表1 數(shù)據(jù)集類別分配
圖7 本文算法在安全帽佩戴數(shù)據(jù)集中第一次訓(xùn)練
圖8 本文算法在安全帽佩戴數(shù)據(jù)集中第二次訓(xùn)練
在同樣的實驗環(huán)境和訓(xùn)練方式下重新訓(xùn)練了GIoUYOLO v3、YOLO v3、SSD,并得到相應(yīng)的4組損失值較優(yōu)模型。
4.1.3 實驗1結(jié)果
為保證預(yù)測框的精確性。安全帽佩戴數(shù)據(jù)集使用AP50 以及對應(yīng)的mAP-50 作為評價指標(biāo)。將較優(yōu)模型進行評估,得到相應(yīng)的最優(yōu)模型,最后將各個模型的最優(yōu)模型進行對比。
安全帽佩戴數(shù)據(jù)集中佩戴安全帽和未佩戴安全帽的AP50、mAP-50如表2所示。
在安全帽佩戴數(shù)據(jù)集的測試集中隨機抽取兩張圖片,并將圖片輸入已建立好的模型中,得到對應(yīng)的框坐標(biāo)和類別,此次結(jié)果IoU 值設(shè)置為0.75、score 值設(shè)置為0.3。檢測圖結(jié)果如圖9所示。
表2 安全帽佩戴數(shù)據(jù)集各類別AP50及mAP-50
圖9 安全帽佩戴數(shù)據(jù)集隨機選取兩張圖片檢測圖
使用VOC2007 數(shù)據(jù)集在同一實驗環(huán)境下進行實驗。重新訓(xùn)練改進YOLO v3算法和YOLO v3算法,得到相應(yīng)的模型。使用VOC2007 數(shù)據(jù)集中測試集對模型進行評估。
改進YOLO v3算法和YOLO v3算法使用VOC2007數(shù)據(jù)的訓(xùn)練損失值,如圖10 和圖11 所示。由于增加LossG,模型首個輪次(epoch)訓(xùn)練時,改進YOLO v3 算法損失值較高。但經(jīng)過第一次訓(xùn)練和第二次訓(xùn)練后,改進YOLO v3算法損失值都趨于穩(wěn)定。
在同樣的實驗環(huán)境和訓(xùn)練方式下重新訓(xùn)練了GIoUYOLO v3 和YOLO v3,并得到相應(yīng)的4 組損失值較優(yōu)模型。
VOC2007 數(shù)據(jù)集使用AP50 以及對應(yīng)的mAP-50 作為評價指標(biāo)。對較優(yōu)模型進行評估,得到相應(yīng)的最優(yōu)模型,最后將各個模型的最優(yōu)模型進行對比。
在此展示VOC2007數(shù)據(jù)集中20類的AP50、mAP-50,如表3 和表4 所示。改進YOLO v3 算法在VOC2007 數(shù)據(jù)集中的mAP-50為82.29%。
由表2 可見,改進YOLO v3 算法在安全帽佩戴數(shù)據(jù)集上mAP-50提高2.05%。如圖9所示,在保證高精度同時,能檢測出佩戴安全帽的人和未佩戴安全帽的人,并且在檢測出的目標(biāo)中未出現(xiàn)檢測出的目標(biāo)不完整現(xiàn)象,能較好地完成安全帽佩戴檢測任務(wù)。根據(jù)表3 和表4實驗結(jié)果,改進YOLO v3算法在公共數(shù)據(jù)集VOC2007上,mAP-50提高2.07%。
圖12中為改進YOLO v3、GIoU-YOLO v3和YOLO v3在VOC2007數(shù)據(jù)集訓(xùn)練中損失值較優(yōu)的4組模型。
改進YOLO v3的mAP-50值趨于穩(wěn)定且精度高,最優(yōu)mAP-50 為82.29%。雖然GIoU-YOLO v3 的mAP-50值穩(wěn)定,相對于YOLO v3 有0.93%的提升,但提升弱于改進YOLO v3,且GIoU-YOLO v3 的mAP-50 小于改進YOLO v3的mAP-50。
對于YOLO v3 的mAP-50 值,則呈現(xiàn)出不穩(wěn)定且精度低的現(xiàn)象,在此也反應(yīng)出目標(biāo)函數(shù)與評價指標(biāo)不統(tǒng)一會導(dǎo)致模型精度降低。無論公共數(shù)據(jù)集VOC2007,還是自制的安全帽佩戴數(shù)據(jù)集,改進YOLO v3 算法都提高了mAP-50。
圖10 本文算法在VOC2007數(shù)據(jù)集中第一次訓(xùn)練
圖11 本文算法在VOC2007數(shù)據(jù)集中第二次訓(xùn)練
表3 VOC2007數(shù)據(jù)集各類別AP50
表4 VOC2007數(shù)據(jù)集各類別AP50及mAP-50
圖12 VOC2007數(shù)據(jù)集mAP-50
表5 為在VOC2007 數(shù)據(jù)集中不同目標(biāo)函數(shù)與指標(biāo)結(jié)果對比。目標(biāo)函數(shù)分別為:Lossnew、LossYOLOv3。在ig‐nore_mask 中使用的指標(biāo)分別為:IoU、IoU_GIoU。相比于YOLO v3,IoU_GIoU應(yīng)用在目標(biāo)函數(shù)中mAP-50提高了1.24%,IoU_GIoU應(yīng)用在ignore_mask中mAP-50提高了1.03%,同時應(yīng)用在目標(biāo)函數(shù)和ignore_mask中mAP-50提高了2.07%。實驗結(jié)果均表明IoU_GIoU優(yōu)于IoU。
由表6 可知,改進YOLO v3、GIoU-YOLO v3 和YOLO v3的幀速率相差無幾。雖然YOLO v3等模型的模型參數(shù)大于SSD,但在檢測速率上優(yōu)于SSD[7]。改進YOLO v3 算法既保證了檢測速率,還提高了mAP-50,并且在安全帽佩戴檢測中mAP-50提升了2.05%。
表5 在VOC2007數(shù)據(jù)集中不同目標(biāo)函數(shù)與指標(biāo)結(jié)果對比
表6 模型參數(shù)和性能
本文根據(jù)YOLO v3和GIoU提出新目標(biāo)函數(shù),解決評價指標(biāo)與目標(biāo)函數(shù)不統(tǒng)一,會出現(xiàn)目標(biāo)局部最優(yōu)不一定是IoU 局部最優(yōu)的問題。首先使用包含兩框的最小框減去兩框的相交,除以包含兩框的最小框添加到目標(biāo)函數(shù)中,保證了新目標(biāo)函數(shù)與評價指標(biāo)相關(guān)。最后在訓(xùn)練模型時將生成ignore_mask 的IoU 計算替換為IoUGIoU,進一步減少預(yù)測框中負樣本對模型訓(xùn)練的影響。實驗結(jié)果表明,改進YOLO v3 算法相比GIoU-YOLO v3和YOLO v3算法獲得的模型,在VOC2007數(shù)據(jù)集和安全帽佩戴數(shù)據(jù)集中mAP-50 值都得到提升且較為穩(wěn)定。該算法訓(xùn)練出的模型在安全帽佩戴檢測上更具有使用價值。未來將繼續(xù)研究網(wǎng)絡(luò)結(jié)構(gòu)的調(diào)整,使模型的精度進一步提高。