邱 益, 張志浩, 梁 杰
(鄭州大學(xué)機(jī)械與動(dòng)力工程學(xué)院,鄭州 450001)
機(jī)器人抓取技術(shù)是現(xiàn)代工業(yè)生產(chǎn)中重要的組成部分,廣泛應(yīng)用于物流、制造、服務(wù)、醫(yī)療等領(lǐng)域[1-2]。傳統(tǒng)的機(jī)器人抓取不能適應(yīng)待抓取目標(biāo)無(wú)序、散亂的分布,將深度學(xué)習(xí)技術(shù)和現(xiàn)有機(jī)器人抓取技術(shù)相結(jié)合可解決上述不足[3]。隨著近些年人工智能技術(shù)的發(fā)展,越來(lái)越多的算法開始應(yīng)用于生產(chǎn)實(shí)踐中,例如目標(biāo)檢測(cè)算法在自動(dòng)駕駛中的應(yīng)用[4-6]。文獻(xiàn)[7]中采用Tensorflow開源框架實(shí)現(xiàn)了基于MobileNet SSD[8]的垃圾分揀實(shí)驗(yàn)平臺(tái),取得良好效果,但文獻(xiàn)僅介紹了如何復(fù)現(xiàn)過去成果。文獻(xiàn)[9]中以人機(jī)對(duì)弈為背景開發(fā)了工業(yè)機(jī)器人實(shí)驗(yàn)教學(xué)平臺(tái),該平臺(tái)采用的是傳統(tǒng)機(jī)器視覺技術(shù),有待進(jìn)一步結(jié)合基于深度學(xué)習(xí)的新算法。
本實(shí)驗(yàn)平臺(tái)以工業(yè)標(biāo)準(zhǔn)件抓取為研究背景,采用深度卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了標(biāo)準(zhǔn)件識(shí)別、定位以及抓取姿態(tài)預(yù)測(cè)。該實(shí)驗(yàn)平臺(tái)將算法理論和應(yīng)用結(jié)合,采用開源的神經(jīng)網(wǎng)絡(luò)框架實(shí)現(xiàn)算法,采用STM32配合步進(jìn)滑臺(tái)完成硬件搭建,可用于機(jī)器人或人工智能的教育實(shí)踐,可將人工智能算法和工程實(shí)踐相結(jié)合,在實(shí)踐中鍛煉學(xué)生對(duì)于知識(shí)的理解與應(yīng)用[10-12]。
抓取平臺(tái)主要由單目工業(yè)攝像機(jī)、龍門式抓取平臺(tái)、搭載GTX1070顯卡的計(jì)算機(jī)、STM32單片機(jī)等組成。單目工業(yè)攝像機(jī)用于采集工作臺(tái)上待抓取零件的圖像信息以引導(dǎo)機(jī)械手準(zhǔn)確抓?。蝗S龍門式抓取平臺(tái)負(fù)責(zé)執(zhí)行抓取動(dòng)作,抓取平臺(tái)的末端執(zhí)行器是兩指式氣動(dòng)機(jī)械爪,實(shí)現(xiàn)物體的夾?。淮钶dGTX1070顯卡的計(jì)算機(jī)負(fù)責(zé)處理攝像機(jī)所采集到的圖像,通過運(yùn)行目標(biāo)檢測(cè)算法和抓取姿態(tài)預(yù)測(cè)算法來(lái)返回待抓取目標(biāo)的類別、位置和機(jī)械手的抓取姿態(tài);STM32單片機(jī)負(fù)責(zé)將計(jì)算機(jī)運(yùn)算的結(jié)果轉(zhuǎn)換為龍門式抓取平臺(tái)的動(dòng)作指令來(lái)控制機(jī)械手完成對(duì)應(yīng)的抓取動(dòng)作。抓取平臺(tái)的硬件設(shè)計(jì)架構(gòu)如圖1所示。
圖1 抓取平臺(tái)的硬件架構(gòu)
目標(biāo)檢測(cè)技術(shù)作為機(jī)器視覺領(lǐng)域中基本的且極具挑戰(zhàn)性的研究方向,隨著神經(jīng)網(wǎng)絡(luò)的應(yīng)用,目標(biāo)檢測(cè)技術(shù)在當(dāng)今強(qiáng)大算力支撐下展現(xiàn)出令人驚艷的技術(shù)美學(xué)[13]。應(yīng)用深度卷積神經(jīng)網(wǎng)絡(luò)為計(jì)算子的目標(biāo)檢測(cè)框架已經(jīng)能夠在保證檢測(cè)精度的同時(shí)做到實(shí)時(shí)檢測(cè)。雖然現(xiàn)有框架在通用數(shù)據(jù)集上展現(xiàn)出較優(yōu)的檢測(cè)性能,但是對(duì)于工業(yè)應(yīng)用領(lǐng)域仍然存在特殊場(chǎng)景下的短板,這表現(xiàn)在低紋理信息微小零件存在難以檢出的缺陷。
為提高現(xiàn)有框架在工業(yè)零件抓取應(yīng)用中的短板并盡可能地提高其檢測(cè)速度,本文綜合應(yīng)用以下4種技巧提高現(xiàn)有框架的性能:
(1)為降低卷積運(yùn)算的參數(shù)量,將內(nèi)卷積作為基本運(yùn)算子替代SSD目標(biāo)檢測(cè)算法中原有的卷積運(yùn)算,實(shí)現(xiàn)主干特征提取網(wǎng)絡(luò)的重構(gòu);
(2)為緩解小目標(biāo)零件在淺層檢測(cè)時(shí)語(yǔ)義信息不足而深層檢測(cè)時(shí)特征信息丟失嚴(yán)重的矛盾,采用雙線性插值將高層特征融合于低層次特征后再作為有效特征層進(jìn)行位置回歸和分類;
(3)為輕量化目標(biāo)檢測(cè)框架并提高運(yùn)算速度,在主干特征提取網(wǎng)絡(luò)引入Focus模塊并剪裁掉后3層卷積塊;
(4)為保證先驗(yàn)框更加契合本項(xiàng)目的實(shí)際數(shù)據(jù)集,采用K-means聚類數(shù)據(jù)集,然后將聚類結(jié)果作為依據(jù)重新設(shè)計(jì)先驗(yàn)框的分布。
優(yōu)化后的目標(biāo)檢測(cè)模型網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。圖2中Focus模塊置于輸入張量和卷積塊之間,其目的是在不丟失輸入張量信息的前提下實(shí)現(xiàn)下采樣。該計(jì)算模塊的計(jì)算過程可以描述如下:首先對(duì)輸入三通道張量進(jìn)行切片采樣,其采樣規(guī)則采用間隔采樣,即每隔1個(gè)像素進(jìn)行1次采樣。用這樣的方式采樣出5個(gè)小的張量。然后再將采樣后的張量沿通道方向上拼接,拼接起來(lái)的圖片相對(duì)于原先的RGB三通道模式變成了12個(gè)通道,即最終得到了沒有信息丟失情況下的2倍下采樣特征圖。該模塊的計(jì)算過程描述如圖3所示。
圖2 目標(biāo)檢測(cè)模型網(wǎng)絡(luò)結(jié)構(gòu)圖
圖3 Focus模塊計(jì)算圖
原版SSD目標(biāo)檢測(cè)算法的主干特征提取網(wǎng)絡(luò)采用的是VGG16網(wǎng)絡(luò),該網(wǎng)絡(luò)存在參數(shù)量大且特征提取能力不強(qiáng)的缺點(diǎn)。為實(shí)現(xiàn)增效降參的目的,采用內(nèi)卷積替換掉原版中標(biāo)準(zhǔn)的卷積運(yùn)算子并采用特征金字塔的設(shè)計(jì)思想,實(shí)現(xiàn)多層級(jí)特征圖的融合。主干特征提取網(wǎng)絡(luò)的結(jié)構(gòu)如圖4所示。
圖4 主干特征提取網(wǎng)絡(luò)的結(jié)構(gòu)圖
內(nèi)卷積是對(duì)現(xiàn)有標(biāo)準(zhǔn)卷積運(yùn)算的重構(gòu),內(nèi)卷積與標(biāo)準(zhǔn)卷積所不同的是:它實(shí)現(xiàn)了卷積核在通道上的共享,即實(shí)現(xiàn)了通道不變性和空間特異性[13]。采用該計(jì)算子可以在保證特征提取性能的同時(shí)大幅減少卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)冗余,進(jìn)而實(shí)現(xiàn)目標(biāo)檢測(cè)框架的輕量化。內(nèi)卷積可表示為:
式中:H為內(nèi)卷積計(jì)算子的卷積核;X為輸入張量;k代表后續(xù)卷積核大??;G代表involution操作的分組數(shù);C為特征圖的通道數(shù)。
內(nèi)卷積運(yùn)算的卷積核并非固定,而是依賴于輸入張量。內(nèi)卷積計(jì)算子的卷積核生成公式為
式中:W0、W1代表對(duì)輸入張量的一系列線性變換,這里采用1×1的卷積核實(shí)現(xiàn)對(duì)輸入通道的縮放;函數(shù)β為批標(biāo)準(zhǔn)化和非線性激活。內(nèi)卷積的運(yùn)算過程見圖5。
圖5 內(nèi)卷積計(jì)算圖
由于小目標(biāo)物體在經(jīng)過多次卷積和下采樣后會(huì)丟失其信息,特別是對(duì)本數(shù)據(jù)集中的小沉頭螺釘,經(jīng)過多次下采樣后僅剩幾個(gè)像素。很自然的想法是,將淺層的特征作為有效特征圖進(jìn)行檢測(cè),但是淺層特征圖的語(yǔ)義信息不足,難以滿足檢測(cè)要求。為緩解以上矛盾,設(shè)計(jì)了如下計(jì)算方法:
式中:Xi為有效特征層,從淺層到高層將主干網(wǎng)絡(luò)的3處節(jié)點(diǎn)作為有效特征層;函數(shù)U為雙線性插值運(yùn)算;函數(shù)P為最大池化運(yùn)算,以上2個(gè)函數(shù)其目是調(diào)節(jié)輸出特征圖的大小使得兩層特征圖可進(jìn)行張量拼接;函數(shù)C為卷積核大小為1×1的卷積運(yùn)算;函數(shù)B為類別預(yù)測(cè)計(jì)算和包圍框回歸運(yùn)算,均采用標(biāo)準(zhǔn)卷積運(yùn)算實(shí)現(xiàn)。
由于目標(biāo)檢測(cè)算法僅能夠識(shí)別目標(biāo)物體類別和回歸最小包圍框,針對(duì)抓取的工況要求,目標(biāo)物體相對(duì)于機(jī)械手的角度對(duì)抓取成功率的影響也是巨大的,特別是針對(duì)細(xì)長(zhǎng)類零件,機(jī)械手的抓取角度異常重要。以細(xì)長(zhǎng)類零件螺栓為例,可將其在工作臺(tái)上的姿態(tài)離散的分為4個(gè)類別,分類情況如圖6所示。由于是離散的真值姿態(tài)空間,所以可將姿態(tài)估計(jì)問題轉(zhuǎn)化為圖像分類問題,設(shè)計(jì)如圖7所示的卷積神經(jīng)網(wǎng)絡(luò)對(duì)工作臺(tái)中的零件進(jìn)行姿態(tài)預(yù)測(cè)。
圖6 螺栓姿態(tài)分類
圖7 標(biāo)準(zhǔn)件姿態(tài)預(yù)測(cè)網(wǎng)絡(luò)結(jié)構(gòu)圖
該姿態(tài)預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)采用在內(nèi)卷積運(yùn)算子和激活函數(shù)之間布置批歸一化,以保證每個(gè)卷積塊的運(yùn)算結(jié)果處于激活函數(shù)的敏感區(qū),避免由于激活函數(shù)飽和而出現(xiàn)神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練過程中難以收斂的問題[14]:
為保證該姿態(tài)預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果,采用交叉熵?fù)p失函數(shù)作為該神經(jīng)網(wǎng)絡(luò)訓(xùn)練的損失函數(shù)。由于該標(biāo)準(zhǔn)件數(shù)據(jù)集中零件的姿態(tài)可以離散地分為4種,將這4種的姿態(tài)進(jìn)行獨(dú)熱編碼后即可引入交叉熵?fù)p失,即
式中:k為分類的種類數(shù);li為樣本獨(dú)熱編碼標(biāo)簽;yi為神經(jīng)網(wǎng)絡(luò)前向傳播運(yùn)算結(jié)果。
選擇10個(gè)不同類別常見標(biāo)準(zhǔn)件為樣本,拍攝其在工作臺(tái)上不同姿態(tài)、位置上的圖片進(jìn)行標(biāo)注形成訓(xùn)練數(shù)據(jù)集。訓(xùn)練樣本集信息匯總見表1。
表1 訓(xùn)練樣本集信息匯總表
訓(xùn)練平臺(tái)采用GTX1070顯卡,經(jīng)過500輪的訓(xùn)練即可達(dá)到較為理想的識(shí)別效果。訓(xùn)練結(jié)果和識(shí)別效果如圖8、9所示。
圖8 訓(xùn)練樣本集信息匯總
圖9 目標(biāo)識(shí)別效果
由于樣本中長(zhǎng)寬比較小的零件的姿態(tài)并不會(huì)對(duì)抓取造成影響,所以僅需將樣本集中具有細(xì)長(zhǎng)特性的標(biāo)準(zhǔn)件取出制作樣本集進(jìn)行抓取姿態(tài)估計(jì)即可,訓(xùn)練樣本集信息匯總見表2。
表2 實(shí)驗(yàn)A測(cè)量數(shù)據(jù)
本模型采用Tensorflow2神經(jīng)網(wǎng)絡(luò)庫(kù)完成搭建,硬件環(huán)境為AMD 3500X處理器和GTX 1070顯卡。訓(xùn)練優(yōu)化方法采用AdaBound優(yōu)化器。訓(xùn)練迭代次數(shù)為600次,批處理參數(shù)設(shè)置為100,初始學(xué)習(xí)率設(shè)置為0.001。該模型的評(píng)價(jià)方法采用準(zhǔn)確率來(lái)評(píng)價(jià)。
訓(xùn)練的損失函數(shù)和驗(yàn)證集準(zhǔn)確率變化曲線如圖10所示。
圖10 損失函數(shù)和驗(yàn)證集的準(zhǔn)確率變化曲線
本工業(yè)零件抓取實(shí)驗(yàn)系統(tǒng)采用三軸龍門式機(jī)械手,抓取場(chǎng)景為標(biāo)準(zhǔn)件散亂、不堆疊地分布于平面工作臺(tái)上。抓取實(shí)驗(yàn)平臺(tái)采用眼在手上的布置方式,通過標(biāo)準(zhǔn)標(biāo)定板標(biāo)定出相機(jī)內(nèi)參以及像素坐標(biāo)和機(jī)械手坐標(biāo)之間的映射關(guān)系后即可應(yīng)用于抓取。抓取實(shí)驗(yàn)平臺(tái)實(shí)物如圖11所示。
圖11 抓取實(shí)驗(yàn)平臺(tái)實(shí)物
每次將10個(gè)不同類別的工業(yè)零件混合后隨機(jī)散亂地丟放于平面工作臺(tái)上,然后機(jī)械手回零點(diǎn)拍照并完成識(shí)別,最后通過機(jī)械手將零件抓取到對(duì)應(yīng)的物料框中。重復(fù)上述實(shí)驗(yàn)過程并記錄抓取、分揀結(jié)果,將實(shí)驗(yàn)結(jié)果匯總于表3(實(shí)驗(yàn)次數(shù)為100)。根據(jù)匯總結(jié)果可知,對(duì)于長(zhǎng)寬比較小的零件,影響抓取成功率的主要因素是目標(biāo)檢測(cè)算法能否識(shí)別出其類別和位置。對(duì)于細(xì)長(zhǎng)類零件,除以上因素外還會(huì)受到姿態(tài)預(yù)測(cè)是否正確的影響。另外,以上10分類標(biāo)準(zhǔn)件中,自攻螺釘和沉頭螺釘?shù)淖R(shí)別率相對(duì)較低,考慮是由于自攻螺釘長(zhǎng)寬比較大和沉頭螺釘過小的原因所致。
表3 零件抓取實(shí)驗(yàn)結(jié)果匯總表
本文基于深度學(xué)習(xí)的目標(biāo)檢測(cè)技術(shù)和工業(yè)零件抓取相結(jié)合,實(shí)現(xiàn)了工業(yè)生產(chǎn)的智能化分揀,改進(jìn)了傳統(tǒng)工業(yè)機(jī)械臂不能自動(dòng)識(shí)別、定位目標(biāo)物體的不足。該工業(yè)零件抓取實(shí)驗(yàn)系統(tǒng)應(yīng)用了基于內(nèi)卷積的輕量化特征提取網(wǎng)絡(luò)、基于上采樣和特征圖級(jí)聯(lián)結(jié)構(gòu)的特征融合機(jī)制以及根據(jù)K-means聚類樣本來(lái)重設(shè)先驗(yàn)框等技巧。本文的算法采用TensorFlow深度學(xué)習(xí)框架實(shí)現(xiàn)。抓取平臺(tái)的硬件部分由單目工業(yè)攝像機(jī)、三軸龍門機(jī)械臂、搭載GTX1070顯卡的計(jì)算機(jī)和STM32單片機(jī)等部分構(gòu)成。該工業(yè)零件抓取實(shí)驗(yàn)系統(tǒng)將傳統(tǒng)嵌入式控制技術(shù)和人工智能技術(shù)有機(jī)結(jié)合,實(shí)現(xiàn)了現(xiàn)有工業(yè)生產(chǎn)線抓取的智能化。同時(shí),本實(shí)驗(yàn)系統(tǒng)所采用的算法框架完全開源,可用于研究人員視覺算法驗(yàn)證和人工智能教學(xué)。