,,2,
(1.西安工程大學(xué)機(jī)電工程學(xué)院,陜西 西安 710048;2.紹興市柯橋區(qū)西紡紡織產(chǎn)業(yè)創(chuàng)新研究院,浙江 紹興 312030)
機(jī)械制造業(yè)是國(guó)民經(jīng)濟(jì)的支柱產(chǎn)業(yè),其中棒料是批量生產(chǎn)輥鍛件、模鍛件及輾壓件等零件的主要原材料,廣泛應(yīng)用于工程機(jī)械、汽車制造和建筑等行業(yè)。目前,大多數(shù)企業(yè)主要依靠人工將大量堆放在地上的棒料放在料架和輥道上來(lái)完成上料工作[1],而這種上料方式自動(dòng)化程度低,費(fèi)時(shí)費(fèi)力且效率低下。
隨著中國(guó)制造2025提出,以機(jī)器視覺(jué)技術(shù)引導(dǎo)的上料自動(dòng)化已成為制造企業(yè)上料的必然趨勢(shì)。為此,廣大學(xué)者開展了深入的機(jī)器視覺(jué)的零件識(shí)別方法研究:基于模板匹配的目標(biāo)識(shí)別方法[2-5]在目標(biāo)大小和形狀變化時(shí),就無(wú)法與模板匹配,需重新訓(xùn)練補(bǔ)充模板,匹配耗時(shí)越長(zhǎng);基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)識(shí)別方法[6-11]對(duì)密集目標(biāo)和存在遮擋時(shí)的識(shí)別效果還不太理想,而且這類算法復(fù)雜且計(jì)算量龐大,實(shí)際工業(yè)生產(chǎn)中并沒(méi)有推廣應(yīng)用。而由于卷積神經(jīng)網(wǎng)絡(luò)具有自學(xué)習(xí)自適應(yīng)和大數(shù)據(jù)處理等優(yōu)勢(shì),所以這類方法是目標(biāo)識(shí)別方法的研究熱點(diǎn)。
為了解決工業(yè)環(huán)境下棒料堆積、相互遮擋而造成的難以快速有效識(shí)別的問(wèn)題,研究了基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)識(shí)別方法[12-15]。以YOLOv4為改進(jìn)算法的基礎(chǔ)框架,通過(guò)設(shè)計(jì)一種輕量化的工業(yè)棒料識(shí)別算法,實(shí)現(xiàn)了棒料的快速識(shí)別;采用對(duì)YOLOv4原損失函數(shù)進(jìn)行改進(jìn)優(yōu)化,引入Repulsion損失函數(shù),減少棒料的誤檢、漏檢問(wèn)題,從而改善棒料間相互遮擋而難以有效識(shí)別的問(wèn)題。
YOLOv4的算法框架如圖1所示,主要包含4部分:輸入(Input),輸入尺寸為416×416的3通道圖片;主干網(wǎng)絡(luò)(CSP-Darknet53),CSP-Darknet53網(wǎng)絡(luò)采用全卷積神經(jīng)網(wǎng)絡(luò)的方式,用卷積操作代替池化和全連接操作進(jìn)行特征提??;Neck模塊,包含空間金字塔池化結(jié)構(gòu)(SPP)和特征金字塔結(jié)構(gòu)(PANet),該模塊對(duì)主干網(wǎng)絡(luò)提取到的最后3層特征圖反復(fù)進(jìn)行特征融合再提取,融合深淺層的語(yǔ)義信息特征和空間信息特征[16],實(shí)現(xiàn)多尺度目標(biāo)檢測(cè);預(yù)測(cè)模塊,采用YOLO Head結(jié)構(gòu)預(yù)測(cè)目標(biāo)的位置、類別和置信度。
圖1 YOLOv4的算法框架
YOLOv4算法的損失函數(shù)由3部分構(gòu)成:回歸框損失函數(shù)LCIoU、置信度損失函數(shù)Lcon和類別損失函數(shù)Lclass,即
L=LCIoU+Lcon+Lclass
(1)
其中,回歸框損失函數(shù)LCIoU為:
(2)
(3)
(4)
SIoU為真實(shí)框面積和預(yù)測(cè)框面積之間交集與并集的比值;b、b1分別為預(yù)測(cè)框和真實(shí)框的中心點(diǎn)坐標(biāo);ρ2(b,b1)為預(yù)測(cè)框和真實(shí)框中心點(diǎn)坐標(biāo)之間的歐氏距離;c2為預(yù)測(cè)框和真實(shí)框的最小閉包區(qū)域的對(duì)角線距離;w1和h1分別為真實(shí)框的寬、高;w和h分別為預(yù)測(cè)框的寬、高;v用來(lái)度量長(zhǎng)寬比的相似性,若真實(shí)框和預(yù)測(cè)框的寬高相似,則v為0;α為權(quán)重函數(shù)。
置信度損失函數(shù)和類別損失函數(shù)分別為:
(5)
(6)
K為特征圖的尺寸;M為特征圖使用的先驗(yàn)框的數(shù)量;cij為置信度;c為預(yù)測(cè)的類別。
YOLOv4的主干網(wǎng)絡(luò)采用全連接神經(jīng)網(wǎng)絡(luò)的方式進(jìn)行特征提取,網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜、模型計(jì)算量大,往往需要使用高性能的計(jì)算機(jī)運(yùn)行才能達(dá)到預(yù)期識(shí)別精度和速度。為了降低棒料識(shí)別算法的硬件需求,在保證識(shí)別精度的條件下提高識(shí)別速度,所以需要對(duì)YOLOv4的主干網(wǎng)絡(luò)進(jìn)行輕量化改進(jìn),采用輕量級(jí)網(wǎng)絡(luò)Mobilenetv3替換原YOLOv4的主干網(wǎng)絡(luò)。
工業(yè)棒料往往由于堆疊產(chǎn)生遮擋,若直接采用YOLOv4對(duì)密集的棒料進(jìn)行識(shí)別則會(huì)出現(xiàn)誤檢漏檢問(wèn)題。因棒料堆疊且外觀特征相似,易導(dǎo)致目標(biāo)預(yù)測(cè)框偏移,使識(shí)別時(shí)定位不準(zhǔn)確,從而出現(xiàn)誤檢問(wèn)題。由于棒料堆疊導(dǎo)致目標(biāo)預(yù)測(cè)框和其他目標(biāo)預(yù)測(cè)框過(guò)于靠近,所以在非極大值抑制操作時(shí)容易被誤刪,從而出現(xiàn)棒料漏檢問(wèn)題。為了解決棒料識(shí)別過(guò)程中的誤檢漏檢問(wèn)題,借鑒行人檢測(cè)遮擋問(wèn)題的研究方法[17-18],將Repulsion損失函數(shù)與YOLOv4原損失函數(shù)結(jié)合,改進(jìn)優(yōu)化損失函數(shù)。
圖2 改進(jìn)YOLOv4算法的網(wǎng)絡(luò)結(jié)構(gòu)
主干網(wǎng)絡(luò)的改進(jìn):首先對(duì)Mobilenetv3進(jìn)行微調(diào),即去除其最后的平均池化層和1×1卷積層,然后將剩余部分作為YOLOv4模型的主干網(wǎng)絡(luò)。改進(jìn)YOLOv4算法的主干網(wǎng)絡(luò)由1個(gè)普通卷積層conv和多個(gè)bneck結(jié)構(gòu)組成,如圖2所示。bneck結(jié)構(gòu)由深度可分離卷積、具有線性瓶頸的逆殘差結(jié)構(gòu)和輕量級(jí)的注意力模型SENet組成,如圖3所示。
深度可分離卷積先采用深度卷積將輸入特征中的每個(gè)通道與對(duì)應(yīng)的單通道卷積核進(jìn)行卷積操作,保持特征圖數(shù)量不變,然后用N個(gè)1×1×M卷積核對(duì)所有特征圖進(jìn)行整合,得到N個(gè)卷積特征圖,如圖4所示,其參數(shù)量為M×b×b×c×c+M×c×c×N=M×c2×(b2+N)。標(biāo)準(zhǔn)卷積的計(jì)算方式如圖5所示,其參數(shù)量為M×b2×c2×N。很容易得到深度可分離卷積的參數(shù)量是標(biāo)準(zhǔn)卷積的(1/N+1/b2),極大地減少了網(wǎng)絡(luò)參數(shù)量,加快了模型運(yùn)行速度,進(jìn)而提高了算法的檢測(cè)速度。
圖3 bneck的結(jié)構(gòu)
圖4 深度可分離卷積
圖5 標(biāo)準(zhǔn)卷積
將原YOLOv4損失函數(shù)和Repulsion損失函數(shù)串聯(lián)起來(lái)得到改進(jìn)后的損失函數(shù),即
LR=L+α×LRepGT+β×LRepBox
(7)
L為YOLOv4原損失函數(shù);LRepGT為目標(biāo)預(yù)測(cè)框
與相鄰真實(shí)框所產(chǎn)生的損失值;LRepBox為目標(biāo)預(yù)測(cè)框與相鄰的其他目標(biāo)預(yù)測(cè)框所產(chǎn)生的損失值;系數(shù)α和β為平衡2個(gè)損失值的權(quán)值。RepGT和RepBox損失函數(shù)具體如下所述。
a.RepGT損失函數(shù)的表達(dá)式為:
(8)
(9)
(10)
BP為預(yù)測(cè)框P回歸調(diào)整得到的目標(biāo)預(yù)測(cè)框;GRep為除了指定目標(biāo)外,與目標(biāo)預(yù)測(cè)框交并比最大的真實(shí)框;P1為預(yù)測(cè)框P和真實(shí)框重合度達(dá)到閾值的正例集合;Aarea()為計(jì)算面積的函數(shù)。Smoothln函數(shù)中的δ值用來(lái)調(diào)節(jié)整個(gè)損失函數(shù)對(duì)交集大的框?qū)Φ拿舾行?,?dāng)δ=1時(shí),LRepGT取得最好效果;當(dāng)δ=0時(shí),LRepBox取得最好效果,本文實(shí)驗(yàn)取δ=0.5。
b.RepBox損失函數(shù)的表達(dá)式為
(11)
Pi和Pj分別為預(yù)測(cè)不同目標(biāo)的預(yù)測(cè)框;BPi和BPj是分別從預(yù)測(cè)框Pi和Pj回歸的目標(biāo)預(yù)測(cè)框;SIoU(BPi,BPj)為BPi和BPj之間交集與并集的比值;ε為防止除數(shù)為0而設(shè)置的極小值。分母中的示性函數(shù)表示:只對(duì)有交集的BPi和BPj目標(biāo)預(yù)測(cè)框計(jì)算損失值,否則不進(jìn)行損失計(jì)算。
從式(8)可以看出,當(dāng)BP和GRep之間的交集越大,即越靠近時(shí),所產(chǎn)生的RepGT損失越大,使目標(biāo)預(yù)測(cè)框和相鄰的真實(shí)目標(biāo)框遠(yuǎn)離,因此可以有效防止目標(biāo)預(yù)測(cè)框誤檢。從式(11)可以看出,當(dāng)BPi和BPj的交集越大,即越靠近時(shí),則產(chǎn)生的RepBox損失越大,使目標(biāo)預(yù)測(cè)框遠(yuǎn)離不是預(yù)測(cè)同一真實(shí)目標(biāo)的相鄰預(yù)測(cè)框,可以降低非極大值抑制后不同目標(biāo)的預(yù)測(cè)框被誤刪的概率,從而減少目標(biāo)漏檢。
實(shí)驗(yàn)平臺(tái)配置:CPU型號(hào)Intel x299/i7-7820x,GPU型號(hào)為NVIDIA GeForce RTX 2080Ti,內(nèi)存為16 GB,實(shí)驗(yàn)基于Ubuntu操作系統(tǒng),以Tensorflow深度學(xué)習(xí)框架和Python編程語(yǔ)言在自制棒料數(shù)據(jù)集上進(jìn)行相關(guān)實(shí)驗(yàn)。
為了驗(yàn)證改進(jìn)YOLOv4算法是否能快速有效識(shí)別棒料,實(shí)驗(yàn)選擇尺寸為直徑30 mm,長(zhǎng)100 mm的圓柱棒料通過(guò)模擬棒料離散和隨機(jī)堆疊的擺放方式來(lái)保證數(shù)據(jù)集更加貼近實(shí)際生產(chǎn)環(huán)境,直徑使用工業(yè)相機(jī)拍攝了1 467張零件圖片作為實(shí)驗(yàn)數(shù)據(jù)集,實(shí)驗(yàn)數(shù)據(jù)集只有1類,即棒料。實(shí)驗(yàn)數(shù)據(jù)集中的原始圖片大小為600×600,訓(xùn)練前按7∶3的比例在實(shí)驗(yàn)數(shù)據(jù)集中隨機(jī)選擇1 027張圖片作為訓(xùn)練集,剩余440張圖片作為測(cè)試集,棒料數(shù)據(jù)集的部分樣本圖片如圖6所示。
圖6 部分棒料數(shù)據(jù)集
3.2.1 模型訓(xùn)練方法
由于卷積神經(jīng)網(wǎng)絡(luò)需要大量數(shù)據(jù)集訓(xùn)練才會(huì)取得較好的檢測(cè)效果,訓(xùn)練樣本過(guò)少會(huì)導(dǎo)致網(wǎng)絡(luò)過(guò)擬合。為了避免過(guò)擬合,提高模型的泛化能力和準(zhǔn)確率,針對(duì)本實(shí)驗(yàn)小數(shù)據(jù)集的情況,實(shí)驗(yàn)中改進(jìn)算法采用遷移學(xué)習(xí)的訓(xùn)練方式進(jìn)行訓(xùn)練,同時(shí)在訓(xùn)練時(shí)不斷對(duì)棒料圖片的色調(diào)、飽和度和曝光度進(jìn)行隨機(jī)調(diào)整,以達(dá)到數(shù)據(jù)集擴(kuò)充的目的。本實(shí)驗(yàn)設(shè)置訓(xùn)練的迭代輪次為100:前50輪訓(xùn)練時(shí)先凍結(jié)主干網(wǎng)絡(luò),加載預(yù)訓(xùn)練權(quán)重,只對(duì)最后的全連接層進(jìn)行訓(xùn)練;后50輪訓(xùn)練時(shí)再將主干網(wǎng)絡(luò)解凍,使用自制棒料數(shù)據(jù)集將整個(gè)網(wǎng)絡(luò)一起訓(xùn)練。網(wǎng)絡(luò)訓(xùn)練的參數(shù)設(shè)置如表1所示,其中批尺寸即為batch size,表示每次輸入網(wǎng)絡(luò)中進(jìn)行訓(xùn)練的樣本數(shù)量;動(dòng)量因子為訓(xùn)練時(shí)損失函數(shù)的值下降的趨勢(shì)。
表1 網(wǎng)絡(luò)的訓(xùn)練參數(shù)
3.2.2 評(píng)價(jià)指標(biāo)
a.準(zhǔn)確度評(píng)價(jià)指標(biāo)。實(shí)驗(yàn)采用平均精度(AP)作為衡量改進(jìn)算法性能好壞的評(píng)價(jià)指標(biāo),一般目標(biāo)識(shí)別算法的性能越好,其平均精度越高。平均精度表示網(wǎng)絡(luò)對(duì)每類目標(biāo)識(shí)別的平均準(zhǔn)確度,計(jì)算方法為每類目標(biāo)準(zhǔn)確率-召回率曲線與x軸圍成圖像的面積,即
(12)
其中,P為準(zhǔn)確率;R為召回率。
b.速度評(píng)價(jià)指標(biāo)。實(shí)驗(yàn)采用每秒檢測(cè)棒料圖片的幀數(shù)(幀/s)作為改進(jìn)算法檢測(cè)速度的評(píng)價(jià)指標(biāo)。
c.模型的參數(shù)量作為輔助指標(biāo)衡量改進(jìn)算法的復(fù)雜程度。
3.3.1 改進(jìn)YOLOv4算法的性能分析
為了驗(yàn)證改進(jìn)YOLOv4算法的收斂速度和穩(wěn)定性,將改進(jìn)算法與YOLOv4、YOLOv3和Faster R-CNN這4種算法的損失函數(shù)曲線進(jìn)行對(duì)比。為了更加清晰地對(duì)比收斂效果,這里選取每一輪次的總損失值作為對(duì)比數(shù)據(jù),如圖7所示。可以看出4種算法經(jīng)過(guò)訓(xùn)練最終都達(dá)到了收斂,但改進(jìn)YOLOv4算法與其他3種算法相比, 算法的收斂速度更快,損失函數(shù)曲線更加平滑,且訓(xùn)練到85輪之后損失值震蕩的范圍和損失值也更小。由此可見(jiàn),改進(jìn)YOLOv4算法在保證收斂性能的同時(shí)還具有較好的魯棒性。
圖7 4種不同算法的損失函數(shù)對(duì)比
3.3.2 改進(jìn)YOLOv4算法的棒料識(shí)別效果及結(jié)果分析
為了驗(yàn)證改進(jìn)YOLOv4算法的棒料識(shí)別性能,將改進(jìn)YOLOv4算法與YOLOv4、YOLOv3和Faster R-CNN算法在準(zhǔn)確度、識(shí)別速度和模型參數(shù)3方面進(jìn)行對(duì)比,如表2所示。
表2 4種不同算法的識(shí)別結(jié)果對(duì)比
由表2可知,改進(jìn)YOLOv4算法的準(zhǔn)確度為97.85%,與YOLOv4、YOLOv3和Faster R-CNN相比分別提升了1.62%、1.90%和5.22%。從算法的識(shí)別速度來(lái)看,改進(jìn)YOLOv4算法均高于其他3種算法,達(dá)到了63幀/s;從算法的模型參數(shù)來(lái)看,改進(jìn)YOLOv4算法的模型參數(shù)為46.5 MB,YOLOv4的模型參數(shù)約是改進(jìn)算法的5.5倍,YOLOv3的模型參數(shù)約是改進(jìn)算法的5.3倍,F(xiàn)aster R-CNN的模型參數(shù)約是改進(jìn)算法的2.4倍??偟膩?lái)看,改進(jìn)YOLOv4算法提高了棒料識(shí)別準(zhǔn)確度,大大減少了模型參數(shù),提升了棒料的識(shí)別速度,從而實(shí)現(xiàn)了棒料的快速有效檢測(cè)。棒料識(shí)別算法的部分識(shí)別效果如圖8所示。
圖8 部分棒料數(shù)據(jù)集的識(shí)別效果
可以看出,離散棒料全部可以準(zhǔn)確識(shí)別出來(lái),如圖8a所示,共7根棒料全部能準(zhǔn)確識(shí)別;對(duì)于輕度遮擋下的棒料由于部分特征丟失,存在少量的漏檢,但整體識(shí)別效果良好,如圖8b所示,共8根棒料識(shí)別出7根;而對(duì)于重度遮擋下的棒料由于特征丟失嚴(yán)重且棒料間顏色對(duì)比度低,所以識(shí)別效果相對(duì)較差,如圖8c所示,在10根棒料中,只識(shí)別出表層和邊緣特征丟失不多的6根棒料。總的來(lái)說(shuō),改進(jìn)YOLOv4算法對(duì)于棒料的識(shí)別效果良好。
針對(duì)存在遮擋干擾時(shí)棒料如何進(jìn)行快速有效識(shí)別的問(wèn)題展開了研究,提出了一種基于改進(jìn)YOLOv4的棒料識(shí)別算法。與YOLOv4相比,改進(jìn)算法的棒料識(shí)別準(zhǔn)確率更高,識(shí)別速度更快,對(duì)于離散和輕度遮擋時(shí)棒料的識(shí)別效果良好,但當(dāng)棒料嚴(yán)重遮擋時(shí)不能全部有效識(shí)別。而棒料上料時(shí)往往是從表層開始進(jìn)行抓取,當(dāng)表層棒料抓取之后就將棒料嚴(yán)重遮擋問(wèn)題轉(zhuǎn)化成輕度遮擋或者離散情況了,這時(shí)棒料的識(shí)別效果就會(huì)更好,所以改進(jìn)的棒料識(shí)別算法可以作為棒料上料過(guò)程的識(shí)別模塊,為棒料的定位抓取奠定基礎(chǔ),同時(shí)也作為下一步的研究工作。