趙 軒,周 凡,余漢成
(南京航空航天大學(xué) 電子信息工程學(xué)院,江蘇 南京 211106)
近年來深度學(xué)習(xí)方法在許多人工智能子領(lǐng)域取得了突破性進(jìn)展,例如計(jì)算機(jī)視覺任務(wù)圖像識(shí)別、目標(biāo)跟蹤、語義分割及傳統(tǒng)的圖像處理任務(wù)等。相比較傳統(tǒng)的神經(jīng)元模型單層/多層感知機(jī),卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等新型結(jié)構(gòu)擁有更好的特征提取能力,神經(jīng)網(wǎng)絡(luò)的深度、寬度和分辨率有了顯著的改變?;贏lexNet[1]在大規(guī)模圖像分類任務(wù)上的表現(xiàn),研究人員提出了許多新型網(wǎng)絡(luò)架構(gòu),例如平坦的網(wǎng)絡(luò)VGG[2]、殘差網(wǎng)絡(luò)ResNet[3]、密集連接的網(wǎng)絡(luò)DenseNet[4]、感受野網(wǎng)絡(luò)InceptioNet[5]及其相關(guān)的結(jié)合和變形。通過對網(wǎng)絡(luò)尾部的模塊和損失函數(shù)進(jìn)行調(diào)整,上述各種模型可用于不同的計(jì)算機(jī)視覺的任務(wù)處理中。
目前,基于基本模型[1-5]研究且適用于特定任務(wù)的高效架構(gòu)成為神經(jīng)網(wǎng)絡(luò)領(lǐng)域主要的研究方向。為了在特定任務(wù)上獲取更好的效果,目標(biāo)檢測架構(gòu)YOLO(You Only Look Once)[6-8]系列、SDD(Single Shot MultiBox Detector)[9]等采用基本通用模型的變形來提升模型的精度:(1)引入矩形錨框的先驗(yàn)信息來規(guī)避直接的參數(shù)回歸;(2)引入網(wǎng)格化的密集檢測,通過非極大值抑制進(jìn)行后處理;(3)采用多尺度檢測。
多尺度特征融合、多尺度檢測在神經(jīng)網(wǎng)絡(luò)中被廣泛使用[8-12]。YOLOv3[8]采用多尺度上采樣融合增加了小目標(biāo)的檢測精度。SSD[9]采用多個(gè)尺度同時(shí)檢測目標(biāo)。圖像金子塔池化[11]和圖像金字塔檢測[12]顯著提升了目標(biāo)檢測的精度。然而YOLOv3[8]模型有進(jìn)一步提升的空間:(1)3個(gè)尺度(13×13,26×26,52×52)之間采用不同長寬的先驗(yàn)錨框,同時(shí)其3個(gè)尺度的標(biāo)注框相同,檢測層不同尺度之間的特征有待進(jìn)一步融合;(2)引入可變形卷積模塊可進(jìn)一步增強(qiáng)YOLOv3殘差模塊的特征提取能力。基于上述兩點(diǎn),本文提出一種改進(jìn)的YOLOv3模型,并在工業(yè)檢測數(shù)據(jù)集上對該模型的性能進(jìn)行測試。
在深度學(xué)習(xí)領(lǐng)域已有多個(gè)目標(biāo)檢測數(shù)據(jù)集,例如大規(guī)模目標(biāo)檢測數(shù)據(jù)集VOC2007(Visual Object Classes Challenge)、VOC2012、COCO2015(Common Objects in Context)、COCO2017。然而,對于工業(yè)領(lǐng)域的工業(yè)目標(biāo)檢測仍然缺乏相應(yīng)的標(biāo)準(zhǔn)檢測數(shù)據(jù)集。文獻(xiàn)[12]通過標(biāo)注構(gòu)建了工業(yè)工具檢測數(shù)據(jù)集,其包含了大量的工業(yè)工具手工標(biāo)注檢測框,有助于進(jìn)一步研究目標(biāo)檢測框架在工業(yè)領(lǐng)域的應(yīng)用。
獲取良好的數(shù)據(jù)集對深度學(xué)習(xí)模型的訓(xùn)練有重要作用。采集圖像的方法對工業(yè)目標(biāo)檢測模型的泛化能力有一定影響。不同的獲取條件(光照、視角)將采集到不同的訓(xùn)練數(shù)據(jù)。采用與作業(yè)時(shí)相似的環(huán)境有利于模型的穩(wěn)定性。
在工業(yè)環(huán)境中,當(dāng)機(jī)器人開始操作工業(yè)場景中可用的標(biāo)準(zhǔn)工具和設(shè)備時(shí),它們需要識(shí)別工具并知曉它們的用途。本文研究的工業(yè)工具數(shù)據(jù)集[12]是作者在2017年9月至2018年5月期間通過計(jì)算機(jī)視覺和人工智能研究,在典型工廠收集的常用工具的圖像(共有11 765張圖像)。該數(shù)據(jù)集包含8個(gè)對象類型的照片,且這些對象類型可以由合格的工作人員識(shí)別。數(shù)據(jù)集在工廠、車間、裝配線和施工現(xiàn)場場景等5個(gè)不同場景中收集,拍攝背景如圖1所示。
圖1 工具庫的拍攝背景圖
文獻(xiàn)[13]采用Kinect 2.0圖像傳感器,以30幀的幀率、1 024 ×575的RGB(Red Green Blue)圖像分辨率和512 ×424的深度圖分辨率來收集數(shù)據(jù)。由于工業(yè)的檢測下標(biāo)注數(shù)目較少,本文通過改變采集數(shù)據(jù)時(shí)的直線距離來增加數(shù)據(jù)量(物體到相機(jī)的距離在1~5 m內(nèi)變化)。在采集數(shù)據(jù)的同時(shí),周圍的環(huán)境設(shè)定與工人工作的環(huán)境一致(例如光照);工具的擺放姿勢也設(shè)定為工人視角下常見的姿勢。采集工作員在采集數(shù)據(jù)的同時(shí)盡量平穩(wěn)行走且保持拍攝目標(biāo)的一致性。為了計(jì)算攝像機(jī)的固有參數(shù),本文使用了一個(gè)已知尺寸的校準(zhǔn)板。校準(zhǔn)板的大小、校準(zhǔn)參數(shù)和 OpenCV(Open Source Computer Vision Library)校準(zhǔn)工具的信息都包含在數(shù)據(jù)集內(nèi)。
近年來,特征金字塔(尺度信息融合)在多種計(jì)算機(jī)視覺任務(wù)中被廣泛使用。例如,在目標(biāo)檢測中,不同尺度行人圖像區(qū)域的幾何信息較為相似,但離相機(jī)鏡頭較近的行人擁有更多像素區(qū)域,而離相機(jī)較遠(yuǎn)的行人則與之相反。在圖像處理中,不同尺度的圖像塊相結(jié)合可為模型帶來更多的優(yōu)勢。YOLOv3[8]通過多尺度檢測顯著提升了小目標(biāo)的檢測精度,說明高效利用特征金字塔有利于增加深度網(wǎng)絡(luò)模型的魯棒性。
文獻(xiàn)[14]提出了尺度間自適應(yīng)融合的目標(biāo)檢測網(wǎng)絡(luò),加強(qiáng)了不同尺度之間的特征融合?;谠撗芯?,本文進(jìn)一步改進(jìn)YOLOv3的特征融合方式。典型的多尺度融合方式如下:
(1)平坦方式,多尺度的特征檢測輸出。從原始的輸入圖像中提取高層特征并不斷降低特征分辨率,最終網(wǎng)絡(luò)將得到不同分辨率的輸出特征。將每一尺度的分辨率特征輸入到最終的回歸提取層,隨后網(wǎng)絡(luò)將不同尺度的檢測框輸出并進(jìn)行后處理;
(2)采樣方式,從上到下的特征檢測輸出。低分辨率的特征上采樣與高層的特征做殘差來進(jìn)行特征融合;
(3)密集方式,從上到下再到上的連接結(jié)構(gòu),相同分辨率的特征之間存在跳躍連接。在YOLOv3結(jié)構(gòu)中,低分辨率的特征通過上采樣的方式轉(zhuǎn)化為高分辨率特征,而后與高分辨率特征進(jìn)行堆疊。YOLOv3的特征提取網(wǎng)絡(luò)采用多尺度的信息,然而3個(gè)尺度的檢測層存在以下問題:(1)3個(gè)尺度的目標(biāo)檢測分支采用不同長寬的錨框。對于低分辨率尺度,特征融合程度較高,適合檢測比較大型的物體,因此低分辨率尺度分配的錨框長寬較大;高分辨率尺度的特征更加細(xì)節(jié),適合檢測比較小型的物體,因此低分辨率尺度分配的錨框長寬較大;(2)對于檢測任務(wù),3個(gè)尺度的檢測輸出雖然相同,但其特征有一定的差異;(3)提取層需要回歸目標(biāo)的中心點(diǎn)和偏移量。對于目標(biāo)的3個(gè)尺度,中心點(diǎn)的特征依然有差異。根據(jù)上述發(fā)現(xiàn),3個(gè)尺度的檢測層特征之間需要進(jìn)一步融合,此方式可能有助于不同尺度之間的特征融合,彌補(bǔ)單一尺度上的檢測損失。
本文采用密集方式來改進(jìn)YOLOv3框架,以促進(jìn)不同尺度之間的特征融合方式,改進(jìn)結(jié)構(gòu)如圖2所示。如圖2所示,特征提取網(wǎng)絡(luò)YOLO層不做改動(dòng),只對網(wǎng)絡(luò)3個(gè)尺度的檢測輸出分支做相應(yīng)的改動(dòng)。通過插值的上采樣方式,低分辨率的檢測層特征被采樣到中分辨率層,中分辨率的檢測層被采樣到高分辨率層來促進(jìn)不同分辨率之間特征的融合。由于YOLOv3網(wǎng)絡(luò)框架一般采用文本文件定義,工程上可通過Route+upsample+route形式來實(shí)現(xiàn)Up+route模塊。
圖2 YOLOv3多尺度上采樣融合改進(jìn)示意圖
本文實(shí)驗(yàn)采用Darknet-53網(wǎng)絡(luò),模型訓(xùn)練及測試采用Pytorch深度學(xué)習(xí)框架,并采用RTX 2080ti單GPU(Graphics Processing Unit)進(jìn)行訓(xùn)練,CPU(Central Processing Unit)為AMD 3900x。
針對不同的數(shù)據(jù)集,需要采用K-means聚類算法調(diào)整先驗(yàn)錨框的大小。針對本文的工具庫,YOLOv3的先驗(yàn)錨框大小需要提前做預(yù)處理,來達(dá)到更高的IOU值。錨框的訓(xùn)練采用 “維度訓(xùn)練”的方法為:對于不同長寬的錨框,與當(dāng)前標(biāo)注框的IOU值最大的錨框用于訓(xùn)練,訓(xùn)練時(shí)其相應(yīng)的維度設(shè)定為真(True);其余的維度設(shè)定為假(False)。IOU的定義如下
(1)
式中,IN表示兩區(qū)域的交集;OUT表示兩區(qū)域的并集。本文沿用K-means算法對原始的二維長寬數(shù)據(jù)進(jìn)行聚類。當(dāng)聚類的初始化節(jié)點(diǎn)個(gè)數(shù)增加時(shí),聚類中心的個(gè)數(shù)增加(錨框的數(shù)量增加),相應(yīng)的錨框組和真實(shí)標(biāo)注框的平均覆蓋率也會(huì)增加。
對于YOLOv3的多尺度檢測模型,本文沿用9種不同類型的錨框(即9個(gè)聚類中心點(diǎn)),并將大型的錨框分配給低分辨率特征,將小型的錨框分配給高分辨率特征。
神經(jīng)網(wǎng)絡(luò)的輸入圖像分辨率在一定程度上影響網(wǎng)絡(luò)的性能,本文實(shí)驗(yàn)沿用原始YOLOv3的輸入分辨率,將所有的輸入圖像填充為長寬相等的圖像,并將其縮放到416×416分辨率,在一定的范圍內(nèi)采用多尺度訓(xùn)練。工具庫數(shù)據(jù)集包含11 765張圖像,本實(shí)驗(yàn)以0.9/0.1的劃分進(jìn)行訓(xùn)練和測試。基本的訓(xùn)練模型使用檢測框幾何分量的均方誤差(Mean Square Error,MSE)損失
(2)
式中,x、y、w、h依次為中心點(diǎn)的寬度、高度坐標(biāo)和檢測框的寬度、高度。當(dāng)檢測框的幾何分量與標(biāo)注框有差異時(shí),LMSE的值相應(yīng)的變大,網(wǎng)絡(luò)通過梯度的反向傳播對模型的參數(shù)進(jìn)行優(yōu)化。類別損失采用二元交叉熵(Binary Cross Entropy,BCE)損失函數(shù)。
(3)
對于目標(biāo)區(qū)域和非目標(biāo)區(qū)域,本文采用加權(quán)損失來平衡訓(xùn)練過程
LALL=λ1LO+λ2LNO
(4)
式中,LO為目標(biāo)網(wǎng)格的交叉熵?fù)p失;LNO為非目標(biāo)網(wǎng)格的交叉熵?fù)p失;λ表示相應(yīng)的加權(quán)參數(shù)。目標(biāo)檢測框架采用統(tǒng)一的指標(biāo),即模型對所有類別的平均決策(Mean Average Precision,MAP)來衡量模型的性能
(5)
式中,APc表示某一類別的準(zhǔn)確率。具體訓(xùn)練設(shè)定如表1所示。
表1 基本模型的超參數(shù)表
由于工具庫數(shù)據(jù)集并未開源代碼的具體訓(xùn)練參數(shù),因此本文實(shí)驗(yàn)均和YOLOv3本身比較。YOLOv3在數(shù)據(jù)集上的訓(xùn)練大約花費(fèi)16個(gè)小時(shí),共150次(Epoch)。
表2 改進(jìn)模型與原始模型MAP比較表
其中MAP1表示基本模型,MAP2表示改進(jìn)模型。最終,相較于原始的模型,多尺度的融合模型提升了3.2點(diǎn)MAP,提升了框架在工具庫測試集上的精度。
本文研究的工業(yè)抓取數(shù)據(jù)集依然存在以下特點(diǎn):(1)由于機(jī)器人在檢測工具的過程中會(huì)面臨不同的檢測視角,因此數(shù)據(jù)集包含大量物體視角變換;(2)工具的不同放置角度增加了任務(wù)的難度。由于卷積層在圖像空域共享視野,其無法良好地適應(yīng)局部特征的幾何變換。若能增強(qiáng)網(wǎng)絡(luò)在空域的特征提取方式,則有可能提升網(wǎng)絡(luò)模型在工具庫上的檢測精度。
除了大量卷積架構(gòu),卷積核本身也有較多變化/推廣形式被研究,例如帶洞卷積[15]、活動(dòng)卷積單元[16]、可變形卷積[17]、移動(dòng)端快速網(wǎng)絡(luò)[18]??勺冃尉矸e單元(Deformable Convolutional Networks,DCN)通過引入局部偏移量參數(shù)來改變卷積和空域的采樣形狀。在原始柵格數(shù)據(jù)的基礎(chǔ)上,DCN給每一個(gè)空域位置加上相應(yīng)的偏置參數(shù)(即水平和垂直方向的偏移量)。此時(shí),卷積層仍然共享視野空域,但局部的偏移量特征改變了卷積模塊的采樣位置,增加了對不同空域特征的自適應(yīng)能力。原始2D卷積層包含以下步驟:
步驟1對局部特征采樣規(guī)則的特征點(diǎn)R;
步驟2根據(jù)卷積核的權(quán)值計(jì)算特征點(diǎn)的加權(quán)和。其中,R的定義為
R={(x,y)},x/y∈{-1,0,1}
(6)
式(6)表示以局部圖像特征點(diǎn)為中心的周圍9個(gè)網(wǎng)格。對于特征點(diǎn)位置p0,其輸出為
(7)
式中,W為濾波器權(quán)值;b為偏置分量;pn為p0的鄰域位置??勺冃尉矸e對式(7)的每個(gè)鄰域位置為pn+p0,增加了相應(yīng)的偏移量Δpn。
(8)
DCN的偏移量計(jì)算如圖3所示。
圖3 可變形卷積模塊的偏移量計(jì)算示意圖
基于可變形卷積單元,本文對YOLOv3網(wǎng)絡(luò)進(jìn)行改進(jìn):采用可變形卷積層替換原始的卷積層來提升殘差模塊的特征提取能力。對于卷積層提取出的特征信息,網(wǎng)絡(luò)前端提取的特征多為邊緣、顏色等底層信息,網(wǎng)絡(luò)的中層和后層往往包含高層的語義信息?;谝陨戏治?,本文在章節(jié)2.1多尺度融合模型的基礎(chǔ)上進(jìn)一步改進(jìn)卷積層的特征提取模塊。
本文在特征語義信息較高的層改動(dòng)兩個(gè)卷積層。表3為加入改進(jìn)可變形卷積層的實(shí)驗(yàn)結(jié)果表。
表3 YOLOv3基礎(chǔ)模型與改進(jìn)模型的MAP精度比較表
從表3可以看出,加入可變形卷積層可以更進(jìn)一步地提升網(wǎng)絡(luò)在工具庫的檢測精度。
其中,模型1為Base-YOLOv3,模型2為Up-route,模型3為Up-route+DCN。由表4可以看出,除“Clamp Tools”和“Marker”以外改進(jìn)模型提升了各類的準(zhǔn)確率,其中“Polish Tools”提升高達(dá)13.15。相比于基本模型,比較改進(jìn)模型提升較為明顯;相對于YOLOv3基本框架,本文的平均檢測精度更高。
表4 單個(gè)類別的MAP比較表
圖4為可變形卷積改進(jìn)結(jié)構(gòu)示意圖,本文用可變形卷積層替換了殘差模塊的第二個(gè)卷積單元。圖5為檢測結(jié)果的可視化舉例,本文模型精準(zhǔn)地檢測出了各類型工具的區(qū)域。從圖5的實(shí)例圖像中來看,檢測框的邊界與物體的實(shí)際邊界極其接近,說明本模型能夠精確定位工具在圖像中的位置。
圖4 基于可變形卷積層的YOLOv3改進(jìn)模型圖
圖5 YOLOv3框架的目標(biāo)檢測結(jié)果圖
盡管DCN和多尺度融合能增強(qiáng)YOLOv3網(wǎng)絡(luò)的識(shí)別精度,但額外的卷積層和堆疊的特征加大了原始網(wǎng)絡(luò)的計(jì)算量。表5中,相比原始YOLOv3,改進(jìn)模型的計(jì)算速度與原始模型相似,不影響實(shí)時(shí)性能。所有數(shù)據(jù)均在以下硬件環(huán)境中進(jìn)行測試:CPU Intel Core i7-8750H;NVIDIA 1060顯卡(notebook)。實(shí)驗(yàn)中,從工業(yè)抓取數(shù)據(jù)集中提取出50張測試圖像用于計(jì)算平均運(yùn)行時(shí)間,結(jié)果如表5所示。
表5 改進(jìn)模型與原始YOLOv3運(yùn)算速度比較表
由表4可知,除“Marker”及“Clamp Tools”以外,本文提出的模型顯著提升了各類別的檢測精度。通過對不同模型的測試,實(shí)驗(yàn)的某些訓(xùn)練模型在“Marker”及“Clamp Tools”上超過了原始YOLOv3模型,但并未達(dá)到最高的平均MAP(例如另一模型A “Clamp Tools”準(zhǔn)確率為87.10,MAP為85.90)。在優(yōu)化過程中,由于深度學(xué)習(xí)模型的非凸性質(zhì)及類別間的差異模型,對其中某幾類的優(yōu)化有可能會(huì)導(dǎo)致其他類別的精確度下降。當(dāng)大部分類別的準(zhǔn)確率都顯著提升時(shí),可以認(rèn)為模型的整體準(zhǔn)確率有了提升。
類似于文獻(xiàn)[8],本文羅列出一些改進(jìn)來嘗試提升對改進(jìn)模型的理解:(1)在改進(jìn)方法1中,將表1的優(yōu)化算法替換為SGD(Stochastic Gradient Descent);(2)在改進(jìn)方法2中,將35層和60層的卷積核用可變形卷積替換,如圖4所示;(3)在改進(jìn)方法3中,嘗試加入如式(9)所示的IOU(Intersection-over-Union)損失LIOU;(4)在改進(jìn)方法4中,采用IOU和MSE線性疊加的損失。實(shí)驗(yàn)的結(jié)果如表6所示。
表6 失敗的改進(jìn)嘗試
LIOU=1-IOU
(9)
由改進(jìn)方法1的實(shí)驗(yàn)結(jié)果可知,Adam算法穩(wěn)定性優(yōu)于SGD。改進(jìn)方法2的實(shí)驗(yàn)結(jié)果說明在殘差模塊中,改動(dòng)較少的卷積核穩(wěn)定性更高。對于改進(jìn)方法3和改進(jìn)方法4,由于IOU本身為尺度無關(guān)的統(tǒng)計(jì)量,單純引入IOU損失函數(shù)無法有效地優(yōu)化網(wǎng)絡(luò),需要在本文提出的改進(jìn)模型中進(jìn)一步探索IOU損失函數(shù)的應(yīng)用。
本文通過兩種改進(jìn)方式提升了YOLOv3目標(biāo)檢測框架在工業(yè)目標(biāo)檢測數(shù)據(jù)集上的檢測精度。第1種方式分析了不同尺度之間錨框檢測層的特點(diǎn),采用不同檢測尺度之間的特征融合來改善目標(biāo)檢測網(wǎng)絡(luò)的檢測精度。第2種方式通過分析工業(yè)數(shù)據(jù)集的特點(diǎn),帶入相應(yīng)的可變形卷積層來擬合視角、幾何變換。實(shí)驗(yàn)結(jié)果表明,以上兩種技巧能對原始的YOLOv3目標(biāo)檢測模型實(shí)現(xiàn)穩(wěn)定的提升。通過對比實(shí)驗(yàn)和失敗案例,本文證明了改進(jìn)模型的正確性和高效性。本文提出的改進(jìn)模型仍存在進(jìn)一步提升的空間。YOLOv3模型采用聚類的方法得出先驗(yàn)錨框,然而對于特定的類別錨框的長寬比有一定的特點(diǎn)(例如行人標(biāo)注框的寬高比一般比較小)。而從特征學(xué)習(xí)的角度自適應(yīng)地學(xué)習(xí)錨框長寬,可改善本文模型的精度。后續(xù)也將基于該策略來進(jìn)一步提升模型的表現(xiàn)。