張勁松,鄧元實(shí),常政威,吳 杰,陳明舉
(1.四川輕化工大學(xué)人工智能四川省重點(diǎn)實(shí)驗(yàn)室,四川 宜賓 644000;2.國網(wǎng)四川省電力公司電力科學(xué)研究院,四川 成都 610041)
近些年在變電站中進(jìn)行電力作業(yè)時,常有安全事故發(fā)生,經(jīng)過研究分析[1],發(fā)現(xiàn)管理責(zé)任缺失、檢修監(jiān)管不嚴(yán)和安全意識薄弱為事故發(fā)生的主要原因。目前,大多數(shù)電力作業(yè)的安全監(jiān)測研究都是針對電力施工人員開發(fā)的監(jiān)測系統(tǒng)。文獻(xiàn)[2]提出使用方向梯度直方圖技術(shù)(histogram of oriented gradient,HOG)提取電力現(xiàn)場作業(yè)人員的特征,對現(xiàn)場人員的危險(xiǎn)行為進(jìn)行警告。隨著人工智能的飛速發(fā)展,深度學(xué)習(xí)算法在目標(biāo)檢測領(lǐng)域已成為目前的主流算法。文獻(xiàn)[3]使用OpenPose算法檢測人體關(guān)鍵點(diǎn),并提出基于人體關(guān)鍵點(diǎn)坐標(biāo)的人員行為分類方法,對存在危險(xiǎn)行為的人員進(jìn)行警告。這些方法在很大程度上解決了電力施工人員穿戴不規(guī)范和操作違規(guī)的問題。但是在變電站的作業(yè)環(huán)境中,不僅有電力工作人員,還有常用的電力作業(yè)車,在不同的電力施工現(xiàn)場和執(zhí)行不同施工任務(wù)時,為保障作業(yè)的安全性,對電力作業(yè)車的作業(yè)姿態(tài)[4]都有著不同的要求,然而目前卻缺乏監(jiān)測電力作業(yè)車安全作業(yè)的相關(guān)研究。
目前,大多數(shù)關(guān)于旋轉(zhuǎn)目標(biāo)的檢測方法[5]都來源于遙感領(lǐng)域,主要檢測衛(wèi)星圖片中的目標(biāo)。文獻(xiàn)[6]提出了旋轉(zhuǎn)區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(rotatable region convolutional neoral network,RRCNN)旋轉(zhuǎn)目標(biāo)檢測算法,添加了旋轉(zhuǎn)感興趣區(qū)域(rotation region of interest,RROI)加強(qiáng)對目標(biāo)的特征提取,提高了檢測精度。文獻(xiàn)[7]提出旋轉(zhuǎn)目標(biāo)檢測網(wǎng)絡(luò)(rotatable object detection network,R3-Net)算法,設(shè)計(jì)了一種邊界感知旋轉(zhuǎn)錨框(boundary-aware rotatable anchor,BAR),引入旋轉(zhuǎn)區(qū)域敏感(rotatable position sensitive,RPS)池化,保留了目標(biāo)位置信息和方向信息。文獻(xiàn)[8-9]提出了一種針對小、雜亂和旋轉(zhuǎn)物體檢測算法(detection for small,cluttered and rotated objects,SCRDet)和精練單階段檢測算法(refined single stage detector,R3Det),SCRDet算法改進(jìn)Soomth L1損失函數(shù)應(yīng)用于邊界框的回歸問題,但是仍然未能解決目標(biāo)旋轉(zhuǎn)角度的邊界問題;R3Det算法以RetinaNet為基礎(chǔ),增加了一個特征精煉模塊(feature refinement module,F(xiàn)RM),提高了對目標(biāo)的檢測性能。文獻(xiàn)[10]提出了新的精練單階段檢測算法(refined single stage detector,R4Det),設(shè)計(jì)了一個遞歸特征金字塔模塊 (recursive feature pyramid,RFP) ,增加了遞歸連接塊(recursive connection block,RCB),在一定程度上提高了檢測性能。
以上提到的算法都存在著檢測精度不高和檢測速度慢的問題。近年來,YOLO系列算法不斷更新迭代,已經(jīng)從YOLOv1發(fā)展到了YOLOv5,在檢測速度和精度上都有更好的表現(xiàn)。不少學(xué)者也開始將YOLO算法應(yīng)用到旋轉(zhuǎn)目標(biāo)檢測中。文獻(xiàn)[11]在YOLOv5的基礎(chǔ)上采用八參數(shù)標(biāo)記方法標(biāo)記數(shù)據(jù),引入了Pixels-IoU(PIoU)函數(shù),提高了網(wǎng)絡(luò)的檢測精度。文獻(xiàn)[12]提出了一種基于R-YOLO的檢測方法,采用五參數(shù)標(biāo)記方法標(biāo)記數(shù)據(jù),重新設(shè)計(jì)了邊框的回歸方式、角度損失函數(shù),并將主干網(wǎng)絡(luò)更換為MobileNet,提升了網(wǎng)絡(luò)的檢測速度。
下面以電力作業(yè)車的機(jī)械臂作為研究對象,采用長邊定義法與環(huán)形平滑標(biāo)簽結(jié)合的數(shù)據(jù)標(biāo)注方法,使用改進(jìn)的YOLOv5算法對電力作業(yè)車的機(jī)械臂進(jìn)行作業(yè)角度檢測,實(shí)現(xiàn)對電力作業(yè)車的危險(xiǎn)操作預(yù)警。
YOLOv5結(jié)合了先前4個版本的優(yōu)點(diǎn),在檢測速度和精度上都有更好的表現(xiàn)。YOLOv5網(wǎng)絡(luò)可以分為Input、Backbone、Neck、Prediction 4個部分,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5 V6.0網(wǎng)絡(luò)結(jié)構(gòu)
Input即輸入端,其作用是對輸入網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行增強(qiáng)以及自適應(yīng)錨框計(jì)算。數(shù)據(jù)增強(qiáng)的操作主要有HSV(調(diào)節(jié)圖像的色調(diào)、飽和度和亮度)、degrees(對圖像進(jìn)行旋轉(zhuǎn))、translate(對圖像進(jìn)行平移)、scale(縮放圖像)、shear(剪切圖像)、flipud和fliplr(對圖像上下翻轉(zhuǎn)和水平翻轉(zhuǎn))、moscaic(將4張圖像拼接在一起)。在YOLO算法中,針對不同的數(shù)據(jù)集都有初始設(shè)定的錨框anchor,在進(jìn)行網(wǎng)絡(luò)訓(xùn)練的時候,YOLO算法會在初始錨框的基礎(chǔ)上輸出預(yù)測框,然后和目標(biāo)的真實(shí)框進(jìn)行對比,通過計(jì)算差距,更新錨框參數(shù)。
BackBone主要結(jié)構(gòu)為CSP-DarkNet結(jié)構(gòu),YOLOv5 V6.0網(wǎng)絡(luò)設(shè)計(jì)了兩種CSP結(jié)構(gòu)以及SPPF結(jié)構(gòu)。CSP1_X結(jié)構(gòu)用于Backbone中,以加強(qiáng)網(wǎng)絡(luò)的特征提取能力,CSP2_X用于Neck中。SPPF結(jié)構(gòu)在SPP結(jié)構(gòu)的首尾各增加了1個CBS模塊,雖然兩種結(jié)構(gòu)的作用一樣,但是SPPF結(jié)構(gòu)的運(yùn)行效率更高,消耗的時間更少。
Neck的主要結(jié)構(gòu)為特征金字塔網(wǎng)絡(luò)+判別器結(jié)構(gòu),其中的CSP2_X結(jié)構(gòu)加強(qiáng)了網(wǎng)絡(luò)的特征融合能力。
Prediction部分完成對大、中、小3種不同尺度的目標(biāo)預(yù)測。
一般來說,基于深度學(xué)習(xí)的一階段和二階段目標(biāo)檢測算法采取的都是水平anchor。但是在檢測一些帶有角度的大橫縱比目標(biāo)時,水平anchor對檢測目標(biāo)的框選不夠準(zhǔn)確,在anchor中會出現(xiàn)多余的語義信息,導(dǎo)致主干網(wǎng)絡(luò)不能精確地提取目標(biāo)特征或者提取出多余的目標(biāo)特征,最后使檢測的精度下降。針對電力作業(yè)車機(jī)械臂這種橫縱比較大的檢測對象,采用旋轉(zhuǎn)anchor對進(jìn)行框選,可以有效地提高網(wǎng)絡(luò)的檢測精度。水平檢測框與旋轉(zhuǎn)檢測框框選效果對比,如圖2所示。
圖2 水平檢測框與旋轉(zhuǎn)檢測框檢測效果
對原網(wǎng)絡(luò)中的anchor進(jìn)行重新設(shè)置,將其改用五參數(shù)方法[13]表示。五參數(shù)分別為x、y、w、h、θ,其中(x,y)為旋轉(zhuǎn)矩形框的中心坐標(biāo),w和h分別為矩形框的短邊和長邊,采用長邊定義法表示θ,即長邊h與x軸的夾角為θ,如圖3所示,θ的范圍為[-90°,90°)。
圖3 長邊定義法
通常情況下要想降低檢測模型的擬合難度,需要使用設(shè)定好的anchor對目標(biāo)的真實(shí)框進(jìn)行擬合,該操作會使大量增加anchor的數(shù)量,增加整個網(wǎng)絡(luò)的訓(xùn)練時間。為了讓anchor與真實(shí)框的擬合更快速,對自制的電力檢修車數(shù)據(jù)集中標(biāo)注的真實(shí)框采用K-means聚類[14]的方法重新生成anchor大小。查閱官方的YOLOv5源代碼得到Y(jié)OLOv5算法的初始anchor設(shè)置為[10,13,16,30,33,23]、[30,61,62,45,59,119]、[116,90,156,198,373,326],通過K-means聚類方法重新生成的anchor大小為[315,45,381,53,315,75]、[488,49,499,81,732,76]、[620,118,772,191,923,163],將重新生成的anchor大小寫入到y(tǒng)aml文件中。
損失函數(shù)部分主要為class分類損失、θ角度損失、bbox邊框回歸損失、置信度損失。其中θ角度損失中角度θ的邊界問題是關(guān)鍵。由于用于訓(xùn)練的數(shù)據(jù)目標(biāo)參數(shù)具有周期性,在周期改變的邊界處會使損失值突然變大,導(dǎo)致整個網(wǎng)絡(luò)的訓(xùn)練難度加大。例如,在常規(guī)情況下,預(yù)測得到的θ為78°,目標(biāo)旋轉(zhuǎn)角度θ的真實(shí)值為79°,那么網(wǎng)絡(luò)得到的角度距離為1°;在邊界情況下,預(yù)測得到的θ為79°,目標(biāo)旋轉(zhuǎn)角度θ的真實(shí)值為-80°,那么網(wǎng)絡(luò)得到的角度距離為179°,然而在真實(shí)情況下預(yù)測值與真實(shí)值的角度距離僅相差1°。
參考了文獻(xiàn)[15]提出的環(huán)形平滑標(biāo)簽(circular smooth label,CSL)方法,CSL的示意圖見圖4,將角度θ的邊界回歸問題轉(zhuǎn)化為分類問題,在定義的角度范圍內(nèi)劃分類別,把連續(xù)的問題進(jìn)行離散化處理,回避了邊界問題。
圖4 CSL結(jié)構(gòu)
CSL的表達(dá)式如式(1)所示。
(1)
式中,g(x)為窗口函數(shù),窗口的大小由半徑r來決定。窗口函數(shù)g(x)需要滿足周期性、對稱性、單調(diào)性、有最大值的必要條件。窗口函數(shù)能夠估計(jì)預(yù)測標(biāo)簽與真實(shí)標(biāo)簽之間的角度距離信息,在一定的角度范圍內(nèi),網(wǎng)絡(luò)得出的預(yù)測值越接近真實(shí)值,角度信息的損失值就越小。這里選用高斯函數(shù)作為窗口函數(shù),半徑r設(shè)置為6。
總體的損失函數(shù)設(shè)計(jì)如下:class分類損失不需要改變;θ角度損失設(shè)置為角度分類損失,采用和分類損失相同的二元交叉熵?fù)p失函數(shù)BCEWithLogitsLoss;由于將角度θ當(dāng)做分類來處理,旋轉(zhuǎn)框的角度信息與邊框參數(shù)信息不再關(guān)聯(lián),旋轉(zhuǎn)框的損失可以分為角度損失和水平框損失,邊框的損失函數(shù)仍然采用IOU/GIOU/CIOU/DIOU損失函數(shù)。置信度分支的權(quán)重系數(shù)可以選擇水平框IOU/GIOU/CIOU/DIOU,也可以選擇旋轉(zhuǎn)框IOU。通過實(shí)驗(yàn)對比,選擇水平框的IOU進(jìn)行網(wǎng)絡(luò)訓(xùn)練時速度較快,并且預(yù)測框的置信度較高,所以采用水平框IOU/GIOU/CIOU/DIOU作為置信度分支的權(quán)重系數(shù),如式(2)所示。
Ltotal=Lcls+Langle+Lbox+Lobj
(2)
式中:Ltotal為網(wǎng)絡(luò)訓(xùn)練總損失;Lcls為分類損失;Langle為角度損失;Lbox為旋轉(zhuǎn)框位置損失;Lobj為置信度損失。
所使用的服務(wù)器參數(shù)為:CPU為Intel(R) Xeon(R)CPU E5-2695 v4 @ 2.10 GHz;RAM大小為256 GB;操作系統(tǒng)為Windows 10專業(yè)版;GPU為Nvidia TITAN Xp 12 GB。軟件配置為CUDA 10.2、Anaconda 3、PyCharm Community、Python 3.8、Microsoft Visual Studio 2017等,深度學(xué)習(xí)框架為Pytorch。
由于未能查找到電力作業(yè)車相關(guān)的數(shù)據(jù)集,采用自制的電力作業(yè)車數(shù)據(jù)集,數(shù)據(jù)集的格式參考遙感目標(biāo)檢測數(shù)據(jù)集DOTA。首先,采用RoLableImg軟件對電力作業(yè)車機(jī)械臂進(jìn)行標(biāo)注;然后,將標(biāo)注好的xml文件轉(zhuǎn)化為DOTA數(shù)據(jù)集的txt格式,轉(zhuǎn)化公式如式(3)—式(9)所示;最后,轉(zhuǎn)化為YOLO網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)的格式。
(x,y,w,h,-θ)→(xi,yi)
(3)
(x0,y0)=
(4)
(x1,y1)=
(5)
(x2,y2)=
(6)
(x3,y3)=
(7)
式中,(xi,yi)為轉(zhuǎn)化后的坐標(biāo),最終得到的標(biāo)簽文件格式為
(class_idxywhθ)θ∈[0,180)
所自制的數(shù)據(jù)集共包含1200張折臂式電力作業(yè)車圖片,共有兩個分類類別:arma和armb,其中arma為電力作業(yè)車的上機(jī)械臂;armb為電力作業(yè)車的下機(jī)械臂,具體標(biāo)識如圖5所示。
圖5 機(jī)械臂標(biāo)識
將數(shù)據(jù)集按照4∶1∶1劃分為訓(xùn)練集、驗(yàn)證集、測試集。為了使訓(xùn)練集和驗(yàn)證集中arma和armb的類別數(shù)量處于相對平衡的水平,避免數(shù)據(jù)過少產(chǎn)生的過擬合問題,使用YOLOv5算法中的數(shù)據(jù)增強(qiáng)方法,對數(shù)據(jù)集中的訓(xùn)練集合驗(yàn)證集進(jìn)行擴(kuò)充。擴(kuò)充前的訓(xùn)練集數(shù)量為800張圖片,驗(yàn)證集的數(shù)量為200張圖片;擴(kuò)充后的訓(xùn)練集數(shù)量為2979張圖片,驗(yàn)證集的數(shù)量為762張圖片。
為了檢驗(yàn)所提YOLOv5旋轉(zhuǎn)目標(biāo)檢測算法的檢測效果,設(shè)置了3組對比實(shí)驗(yàn),將主干網(wǎng)絡(luò)分別更換為GhostNet、MobileNetV3、ShuffleNetV2。設(shè)置訓(xùn)練次數(shù)為300次,優(yōu)化器選擇adam,angle loss gain設(shè)置為0.8,angle BCELoss positive_weight設(shè)置為1.0,初始學(xué)習(xí)率設(shè)置為0.001,momentum設(shè)置為0.937。
實(shí)驗(yàn)得到的損失函數(shù)圖像和評價(jià)指標(biāo)得分見圖6和表1。
圖6 損失函數(shù)
通過損失函數(shù)的曲線圖可以得出,以CSP-DarkNet作為特征提取的主干網(wǎng)絡(luò),網(wǎng)絡(luò)的收斂速度更快,在訓(xùn)練后20次左右開始趨于平緩;訓(xùn)練的損失值下降也更快,并且損失值始終低于GhostNet、MobieleNetV3、ShuffleNetV2作為主干網(wǎng)絡(luò)時的損失值。表1是各個網(wǎng)絡(luò)在測試集上單個目標(biāo)平均精度(average precision,AP)和總目標(biāo)平均精度(mean average precision,mAP)的值。
表1 各網(wǎng)絡(luò)測試結(jié)果
由表1可知,CSP-DarkNet-YOLOv51模型在電力作業(yè)車測試集上對機(jī)械臂arma和armb的平均檢測精度分別達(dá)到了80.55%和79.47%,相較于檢測精度較差的MobieleNetV3-YOLOv51,檢測的總體平均精度提高了9.15%。各網(wǎng)絡(luò)的檢測效果如圖7所示。
由圖7可知,CSP-DarkNet-YOLOv51模型的檢測效果最好,能夠準(zhǔn)確地完成對機(jī)械臂arma和armb的檢測,而其余的模型對機(jī)械臂arma和armb均存在漏檢情況。以圖8為例,各網(wǎng)絡(luò)對機(jī)械臂arma和armb的角度預(yù)測結(jié)果見表2。
圖7 YOLOv5在各網(wǎng)絡(luò)的檢測效果
圖8中的電力作業(yè)車進(jìn)行標(biāo)注后的機(jī)械臂arma和armb真實(shí)旋轉(zhuǎn)角度分別為19°和76°。由表2可知CSP-DarkNet-YOLOv51模型對電力作業(yè)車機(jī)械臂的角度預(yù)測更符合真實(shí)角度。
圖8 角度檢測樣本
表2 各網(wǎng)絡(luò)角度預(yù)測結(jié)果
上面設(shè)計(jì)了一種基于YOLOv5的電力作業(yè)車機(jī)械臂旋轉(zhuǎn)檢測算法。在YOLOv5網(wǎng)絡(luò)的基礎(chǔ)上,修改了樣本數(shù)據(jù)的標(biāo)注方法,采用環(huán)形平滑標(biāo)簽+長邊定義的方式對樣本進(jìn)行標(biāo)注,將角度θ的邊界回歸問題轉(zhuǎn)化為分類問題,解決了網(wǎng)絡(luò)在訓(xùn)練時角度θ周期性變化產(chǎn)生的較大損失值問題。通過實(shí)驗(yàn)證明,修改后的CSP-DarkNet-YOLOv5模型在自制的電力作業(yè)車數(shù)據(jù)上有著較高的檢測精度,并且能夠準(zhǔn)確地完成對電力作業(yè)車機(jī)械臂arma和armb的檢測任務(wù),以及機(jī)械臂arma和armb的角度預(yù)測任務(wù)。該算法可以為電力施工現(xiàn)場中電力作業(yè)車的預(yù)警工作提供參考,避免安全事故的發(fā)生。