呂開旺,王明睿,田 禛,曹 翀,蘇 贊
(1.北京機(jī)械工業(yè)自動(dòng)化研究所,北京 100120;2.北京機(jī)械工業(yè)自動(dòng)化研究所有限公司,北京 100120)
隨著計(jì)算機(jī)視覺和工業(yè)智能的不斷發(fā)展,產(chǎn)品成像已成為收集生產(chǎn)信息、質(zhì)量監(jiān)測,產(chǎn)品回溯的重要方法。計(jì)算機(jī)視覺技術(shù)越來越受到工業(yè)專家的關(guān)注,高精度、實(shí)時(shí)的視覺檢測系統(tǒng)得到了廣泛的研究。在工業(yè)檢測領(lǐng)域,多采用研究人員手工設(shè)計(jì)的特征提取器來提取輪廓特征。然后,根據(jù)提取的特征,使用支持向量機(jī)等分類器對目標(biāo)進(jìn)行檢測[1]。但由于手工設(shè)計(jì)的特征提取器特性不完善,泛化能力較差,難以適應(yīng)工藝技術(shù)的復(fù)雜變化,不利于其在實(shí)際工業(yè)場景中的應(yīng)用。
目標(biāo)檢測是計(jì)算機(jī)視覺的一個(gè)子領(lǐng)域,在目標(biāo)檢測領(lǐng)域,基于深度學(xué)習(xí)的方法正逐漸顯露出它的優(yōu)勢,開始徹底改變計(jì)算機(jī)視覺識別事物的方式。自引入神經(jīng)網(wǎng)絡(luò)以來,目標(biāo)檢測的速度和精度均有了顯著的提升,已經(jīng)成為從圖像中提取特征的有效方法[2]。當(dāng)前,目標(biāo)檢測算法主要可分為兩類:基于區(qū)域建議的算法識別精度較高,如R-CNN,F(xiàn)ast R-CNN和Faster R-CNN等,而基于回歸網(wǎng)絡(luò)的算法在識別速度上有很大的優(yōu)勢,典型的如SSD和YOLO算法[3]。雖然R-CNN系列算法的檢測精度比較準(zhǔn)確,但該算法通常需要高性能的計(jì)算單元來進(jìn)行推理,無法達(dá)到實(shí)時(shí)處理分析的速度,對于典型的工業(yè)生產(chǎn)場景并不實(shí)用。通用目標(biāo)檢測應(yīng)該是快速、準(zhǔn)確的,并且能夠方便的部署到工業(yè)設(shè)備中。
本文應(yīng)用了目前實(shí)時(shí)處理速度最快的目標(biāo)檢測算法YOLO,基于激光焊接數(shù)據(jù)集進(jìn)行訓(xùn)練,對訓(xùn)練好的算法模型進(jìn)行驗(yàn)證,通過量化和剪枝等操作,將模型壓縮轉(zhuǎn)化后,部署到移動(dòng)端設(shè)備,對預(yù)測結(jié)果進(jìn)行了檢驗(yàn),檢測精度幾乎沒有損失,實(shí)時(shí)性較高,對于工業(yè)場景的部署有一定的借鑒價(jià)值。
YOLO算法在2015年被Joseph提出,它將目標(biāo)檢測重新定義為一個(gè)單一的回歸問題,直接從圖像像素?cái)?shù)據(jù)提取出目標(biāo)的邊界框坐標(biāo)和類概率。使用訓(xùn)練完成的YOLO算法模型,只需“看”一次圖像就可以預(yù)測出物體的位置。YOLO算法非常簡單,單個(gè)卷積網(wǎng)絡(luò)可以同時(shí)預(yù)測多個(gè)邊界框和這些框的類概率。YOLO算法不同于R-CNN系列,采用回歸網(wǎng)絡(luò)直接進(jìn)行預(yù)測,它將輸入圖像進(jìn)行柵格化處理,分成相等大小的多個(gè)區(qū)域,若被檢測物體的中心包含于某個(gè)網(wǎng)格區(qū)域中,則該區(qū)域的邊界框負(fù)責(zé)預(yù)測物體的位置[4]。
由于YOLO算法將整個(gè)圖像作為整體預(yù)測,因此它的輸出結(jié)果是根據(jù)圖像中的全局特征語義信息而來的,降低了將背景誤檢測為目標(biāo)的概率。此外,YOLO算法還采用單個(gè)網(wǎng)絡(luò)評估進(jìn)行預(yù)測,這與R-CNN等算法不同,該方法大大減少了數(shù)據(jù)需求量和訓(xùn)練輪數(shù),加快了網(wǎng)絡(luò)訓(xùn)練效率[5]。
目前Joseph已經(jīng)將算法更新到Y(jié)OLOv3版本,該算法構(gòu)思可分為產(chǎn)生候選區(qū)域和提取特征兩個(gè)部分[6]:
1)算法按設(shè)定好的規(guī)則在圖像上產(chǎn)生多個(gè)備選區(qū)域,根據(jù)目標(biāo)實(shí)際標(biāo)注框?qū)@些區(qū)域進(jìn)行判別比對,與實(shí)際標(biāo)注框距離足夠接近的作為正樣本,偏離值較大的作為負(fù)樣本,負(fù)樣本不參與預(yù)測和標(biāo)注過程[7]。
2)采用神經(jīng)網(wǎng)絡(luò)對輸入圖像進(jìn)行特征提取,對算法判別為正樣本的備選區(qū)域進(jìn)行預(yù)測和標(biāo)注,結(jié)合目標(biāo)真實(shí)的標(biāo)注框和類別,建立損失函數(shù)[8]。
算法訓(xùn)練流程如圖1所示。
圖1 訓(xùn)練流程圖
YOLOv3的主干網(wǎng)絡(luò)為Darknet53,算法通過主干網(wǎng)絡(luò)進(jìn)行一系列的卷積操作提取圖像特征,引入殘差網(wǎng)絡(luò)Residual,有利于深層次的特征提取[9]??紤]到在不斷卷積的過程中,雖然提取了更多的特征信息,但損失了目標(biāo)的位置信息。因此YOLOv3將三層特征層進(jìn)行輸出,對不同的特征層進(jìn)行堆疊拼接,用于構(gòu)建特征金字塔FPN,從而整合不同層次的語義信息,進(jìn)而更有效的提取特征[10]。網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示:
圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
由于YOLO算法發(fā)明者Joseph擔(dān)心算法被用于軍事或其他危害到人類的研究中,帶來不好的影響,因此停止了對于該算法的研究。目前的研究成果都是其他研究人員在YOLOv3的基礎(chǔ)上提出了自己的改進(jìn)思路,每年都有更好、更新,更先進(jìn)的目標(biāo)檢測器被發(fā)布,但由于這些檢測器是針對通用數(shù)據(jù)集(如COCO數(shù)據(jù)集)進(jìn)行訓(xùn)練的,因此在激光焊接數(shù)據(jù)的目標(biāo)模型上無法展示出最好效果,還存在著很大的提升空間。
本文主要研究焊接質(zhì)量檢測問題,焊接缺陷具有小目標(biāo)的特征,而且在移動(dòng)端設(shè)備部署需要考慮實(shí)時(shí)性和算力問題[11],因此需要對原檢測模型進(jìn)行針對性的改進(jìn),本文從錨定框,特征層卷積核和多尺度特征等方向進(jìn)行了改進(jìn)。
設(shè)置適合的錨定框有助于提高算法對數(shù)據(jù)集目標(biāo)匹配的準(zhǔn)確性[12]。對于不同的數(shù)據(jù)集,需要重新設(shè)定錨定框的大小,使其更有效的對目標(biāo)進(jìn)行檢測。YOLOv3中直接估計(jì)錨定框中的四個(gè)參數(shù)值:位置x、y,高度h和寬度w,就是把四個(gè)參數(shù)當(dāng)作分散的自變量來處理,實(shí)際上并沒有考慮到不同變量之間的關(guān)聯(lián)性。計(jì)算公式如下:
本文選用了聯(lián)合標(biāo)定框方法(UnitBox),它采用了一種新穎的損失函數(shù)來預(yù)測錨定框[13]。IoU損失直接計(jì)算預(yù)測的錨定框與真實(shí)標(biāo)注框的最大重疊率,它將邊界框定義為一個(gè)四維的向量,將所有邊界變量作為一個(gè)整體回歸,不斷迭代,最終得到適合數(shù)據(jù)的錨定框。
損失計(jì)算公式如下:
其中X=(XL,XR,XT,XB),Y=(YL,YR,YT,YB),具體參數(shù)如圖3所示。
圖3 圖像標(biāo)注框的損失計(jì)算
圖中紅框?yàn)檎鎸?shí)標(biāo)注框,綠框?yàn)轭A(yù)測框。其中O點(diǎn)為目標(biāo)中心點(diǎn),每個(gè)框的四個(gè)參數(shù)為目標(biāo)中心點(diǎn)到邊框上、下、左、右的距離。
如圖4所示,輸入圖像在經(jīng)過YOLO卷積特征提取后,最終輸出預(yù)測對象的特征張量,原YOLOv3是針對COCO數(shù)據(jù)集的卷積計(jì)算,共輸出3×(80+4+1)=255個(gè)特征信息[14]。特征信息可分為三個(gè)邊界框的信息,每個(gè)邊界框的85個(gè)特征信息為4個(gè)坐標(biāo)信息:位置x、y,高h(yuǎn)和寬w,邊界框中是否含有目標(biāo),以及預(yù)測目標(biāo)屬于80個(gè)類別的概率。
圖4 輸入圖像特征卷積
本文焊接數(shù)據(jù)的類有6個(gè):完好、焊偏、未焊滿、氣孔、夾渣和裂紋,故可以調(diào)整YOLOv3卷積層的卷積核為:3×(6+4+1)=33。
信息在神經(jīng)網(wǎng)絡(luò)中的傳播方式是非常重要的,原YOLOv3算法中采用多尺度特征構(gòu)建特征金字塔FPN,但不同層次之間的特征關(guān)聯(lián)路徑較長,增加了獲取精確定位信息的難度[15]。為了解決這個(gè)缺陷,路徑聚合網(wǎng)絡(luò)PANet設(shè)計(jì)了簡單而有效的組件來增強(qiáng)特征網(wǎng)絡(luò)中的信息傳播,整體框架如圖5所示[16]。
圖5 PANet框架圖
其中圖5(a)為FPN骨干網(wǎng)絡(luò),圖5(b)為路徑擴(kuò)展,圖5(c)為特征融合,圖5(d)為特征輸出。
PANet對路徑進(jìn)行了擴(kuò)展,可以有效利用底層位置特征信息,對比于FPN,PANet縮短了特征關(guān)聯(lián)路徑,增強(qiáng)了多尺度特征信息的整合,且對計(jì)算的影響很小,故本文采用PANet來構(gòu)建特征金字塔,用于提升算法識別目標(biāo)的準(zhǔn)確性。
檢測系統(tǒng)的搭建流程圖如圖6所示。
圖6 檢測系統(tǒng)部署
檢測系統(tǒng)的搭建包含四個(gè)重要節(jié)點(diǎn):制作數(shù)據(jù)集,模型訓(xùn)練,模型壓縮和移動(dòng)端部署,其中制作數(shù)據(jù)集和模型壓縮最為關(guān)鍵。
數(shù)據(jù)集對于模型的訓(xùn)練效果是極為重要的,但在工業(yè)生產(chǎn)中,缺陷樣本相對于正常樣本的數(shù)據(jù)量較少,不利于算法訓(xùn)練提取特征,故可以采用數(shù)據(jù)增強(qiáng)的方式擴(kuò)展數(shù)據(jù)集,增加輸入圖像的可變性,也有利于提高算法模型的穩(wěn)定性。常見的數(shù)據(jù)增強(qiáng)方式有光學(xué)失真和幾何失真兩種[17]。
光學(xué)失真包括:改變圖像的亮度、色溫、飽和度、對比度和增加噪點(diǎn)等。
圖7 光學(xué)失真示例
幾何失真包括:旋轉(zhuǎn)圖片、翻轉(zhuǎn)、裁剪和縮放等。
圖8 幾何失真示例
本研究通過對現(xiàn)場的焊接圖片進(jìn)行采集,篩選適合深度學(xué)習(xí)的圖片,根據(jù)不同的缺陷類型進(jìn)行劃分,并對其進(jìn)行數(shù)據(jù)增強(qiáng)操作,各種缺陷的樣本數(shù)量盡量保持均等,最終制作好的數(shù)據(jù)集分布如表1所示。
表1 數(shù)據(jù)集分布
部署于工業(yè)環(huán)境下,要為低功耗的嵌入式系統(tǒng)對模型進(jìn)行壓縮。對模型壓縮的方法有定點(diǎn)量化,網(wǎng)絡(luò)剪枝和知識蒸餾等操作[18]。
定點(diǎn)量化是將精度較高的浮點(diǎn)數(shù)轉(zhuǎn)化為精度較低的定點(diǎn)數(shù)[19]。使用定點(diǎn)量化的計(jì)算有助于降低計(jì)算所需的資源,加快模型的運(yùn)行速度,也有助于減少存儲(chǔ)占用,降低功耗。
網(wǎng)絡(luò)剪枝的方式是去除神經(jīng)網(wǎng)絡(luò)中不重要的部分和多余的權(quán)重值。
知識蒸餾是通過引入復(fù)雜但計(jì)算精確的網(wǎng)絡(luò)來監(jiān)督訓(xùn)練精簡的神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)知識遷移。知識蒸餾有助于以更小的模型完成復(fù)雜模型的輸出。
以上三種方式都有助于減少算法對于高性能計(jì)算單元的依賴,使得模型可以在硬件配置較低的移動(dòng)端運(yùn)行。
本文采用5000張焊接圖片,訓(xùn)練輪數(shù)為50000。在測試數(shù)據(jù)集上對比了原YOLOv3算法和改進(jìn)的算法的效果,然后在整個(gè)數(shù)據(jù)集上測試了移動(dòng)端部署檢測系統(tǒng)的準(zhǔn)確率,數(shù)據(jù)如下所示。
從表中數(shù)據(jù)可以看出,在平均精度指標(biāo)AP中,T-YOLOv3算法為89.4%高于YOLOv3算法的83.6%,在不同尺度下的精度指標(biāo)也均優(yōu)于原YOLOv3算法。在召回率指標(biāo)AR中,YOLOv3為59.9%低于改進(jìn)的算法的67.3%。在檢測速度上,本文所述算法T-YOLOv3也優(yōu)于經(jīng)典YOLOv3算法。
對于不同的缺陷類型,兩種算法的識別情況如表3所示。
表2 兩種算法準(zhǔn)確性對比
表3 五種缺陷算法準(zhǔn)確性對比
由圖9中數(shù)據(jù)可以看出,改進(jìn)后的算法在檢測缺陷上的準(zhǔn)確度均有不同程度的提升。在特征比較明顯的焊偏和未焊滿上,算法的識別準(zhǔn)確度最高,較小的特征點(diǎn)如氣孔,識別準(zhǔn)確度也提升到80%以上。
圖9 兩種算法目標(biāo)檢測結(jié)果
本文基于YOLOv3算法,提出了一種針對于焊接質(zhì)量檢測的改進(jìn)算法,對算法的錨定框,特征層卷積核和多尺度特征進(jìn)行了改變,增加了檢測小目標(biāo)焊接缺陷的成功率。將訓(xùn)練好的模型進(jìn)行壓縮轉(zhuǎn)化后,最終在移動(dòng)端進(jìn)行部署,驗(yàn)證了算法的準(zhǔn)確性和實(shí)時(shí)性。采用深度學(xué)習(xí)算法,訓(xùn)練出的檢測模型泛化能力強(qiáng),可以適應(yīng)工業(yè)靈活的生產(chǎn)方式。對模型進(jìn)行壓縮,避免了對高性能計(jì)算單元的依賴,轉(zhuǎn)化為對應(yīng)環(huán)境的可執(zhí)行文件,可以方便快速的在工業(yè)場景中部署。
本文檢測系統(tǒng)仍存在一些不足之處,距離真正的實(shí)時(shí)分析處理還有差距。如何更好的優(yōu)化網(wǎng)絡(luò),降低模型大小,減少計(jì)算量,提高實(shí)時(shí)檢測速度,是未來學(xué)習(xí)的主要研究方向。