牛小明,曾 理*,楊 飛,何光輝
(1.重慶大學(xué) 數(shù)學(xué)與統(tǒng)計學(xué)院,重慶 401331;2.長春長光辰譜科技有限公司,吉林 長春 130000)
機(jī)器視覺定位[1]是一種基于光學(xué)攝像頭或其他傳感器獲取物體位置和姿態(tài)信息,并結(jié)合算法進(jìn)行數(shù)據(jù)處理,最終實現(xiàn)對目標(biāo)物體精確定位和跟蹤的技術(shù)。該技術(shù)在工業(yè)4.0 中發(fā)揮著不可或缺的作用。在智能制造中,視覺定位技術(shù)可以用于產(chǎn)品或零部件的定位[2]、檢測和識別,實現(xiàn)產(chǎn)線流水線的自動化和智能化,進(jìn)而大幅提升生產(chǎn)效能,降低人工成本。在機(jī)器人自動化裝配中[3],視覺定位技術(shù)可以幫助機(jī)器人定位和識別零部件,實現(xiàn)自動化裝配。在智能物流中,視覺定位技術(shù)可以用于物品的識別[4]和追蹤,提高物流效率和準(zhǔn)確性;在智能倉儲中,視覺定位技術(shù)可以用于物品的分類和存儲,提高倉儲效率和管理水平。
機(jī)器視覺定位技術(shù)通常包括以下幾個步驟:圖像采集、圖像預(yù)處理、特征提取、目標(biāo)匹配和坐標(biāo)轉(zhuǎn)換(圖像的像素坐標(biāo)轉(zhuǎn)換為機(jī)器人的空間物理坐標(biāo))。在流水線自動安裝時,機(jī)器視覺定位不精準(zhǔn)對微型芯片、高靈敏零部件、易碎且價格昂貴的屏幕等產(chǎn)品的影響可能會更加嚴(yán)重。具體影響包括:(1)損壞產(chǎn)品,機(jī)器視覺定位不準(zhǔn)確會導(dǎo)致機(jī)器在操作時未能正確識別產(chǎn)品位置,可能會對其進(jìn)行錯誤的處理或施加過大的力量,從而導(dǎo)致產(chǎn)品損壞;(2)降低產(chǎn)品質(zhì)量,機(jī)器視覺定位不準(zhǔn)確可能會導(dǎo)致產(chǎn)品的安裝不夠精準(zhǔn)或位置不正確,進(jìn)而導(dǎo)致產(chǎn)品質(zhì)量下滑,功能異?;蛘邏勖s減;(3)增加生產(chǎn)成本,由于機(jī)器視覺定位不準(zhǔn)確,機(jī)器需要進(jìn)行額外的處理或人工干預(yù),從而增加生產(chǎn)成本;(4)安全隱患,機(jī)器視覺定位不準(zhǔn)確還可能會導(dǎo)致產(chǎn)品被放置在不正確的位置,從而產(chǎn)生安全隱患。對于微型芯片和高靈敏零部件等產(chǎn)品,錯誤的操作可能會導(dǎo)致電路短路等嚴(yán)重問題。因此,在智能制造生產(chǎn)過程中,機(jī)器視覺的定位準(zhǔn)確性和精度起到至為關(guān)鍵的作用。
隨著人工智能的發(fā)展,深度學(xué)習(xí)方法在自動駕駛、智能安防、工業(yè)制造和醫(yī)學(xué)影像等領(lǐng)域得到了廣泛的應(yīng)用。AlexNet[5]是深度學(xué)習(xí)在計算機(jī)視覺領(lǐng)域的開端,它使用深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)對大規(guī)模圖像數(shù)據(jù)集ImageNet 進(jìn)行分類,同時也在目標(biāo)檢測領(lǐng)域進(jìn)行了嘗試。2014 年,Girshickt[6]等提出了R-CNN(Region based Convolutional Neural Network)算法,它使用區(qū)域建議法取出候選目標(biāo)區(qū)域,然后對單個區(qū)域采用CNN 進(jìn)行特征提取,并利用支持向量機(jī)(SVM)實施分類,緊接著選用回歸模型對目標(biāo)框?qū)嵤┪⒄{(diào),R-CNN 在PASCAL VOC 數(shù)據(jù)集上獲得了比較好的效果。SPP-Net[7]對R-CNN 算法進(jìn)行了改進(jìn),引入了空間金字塔池化(Spatial Pyramid Pooling,SPP),促使網(wǎng)絡(luò)可以對任意尺寸的輸入圖像進(jìn)行分類和檢測;對比R-CNN,SPP-Net 識別率更高且運行時間更短。Fast R-CNN[8]引入了ROI(Region of Interest Pooling)池化,使得網(wǎng)絡(luò)可以在整張圖像上進(jìn)行前向傳播,并對每個候選區(qū)域進(jìn)行分類和定位;相比R-CNN 和SPP-Net,F(xiàn)ast R-CNN 更快、更準(zhǔn)確。2015 年,Ren[9]等提出了Faster RCNN 網(wǎng)絡(luò),它引入?yún)^(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)來生成候選目標(biāo)框,然后再將這些框輸入到Fast R-CNN 中進(jìn)行分類和定位。因其速度和準(zhǔn)確率表現(xiàn)優(yōu)秀,F(xiàn)aster R-CNN 是目前最常用的目標(biāo)檢測算法之一。2016 年,Redmon[10]等提出YOLO(You Only Look Once)算法,YOLO 是一種One-Stage 的實時目標(biāo)檢測算法,它將輸入圖像分成柵格,然后對每個柵格預(yù)測出多個目標(biāo)框和類別概率,因此推理速度非常快。SSD[11](Single Shot Multi-Box Detector)也是一種One-Stage 的目標(biāo)檢測算法,它使用多尺度卷積特征圖來檢測不同尺度的目標(biāo),并在每個特征圖位置上同時預(yù)測多個目標(biāo)框和類別概率;SSD 在速度和準(zhǔn)確率方面都有較好的表現(xiàn)。2017 年,Lin[12]等提出RetinaNet 網(wǎng)絡(luò),RetinaNet是一種基于Focal Loss 的目標(biāo)檢測算法。Focal Loss 通過縮小易分類樣本的權(quán)重,加強難分類樣本的權(quán)重,解決了目標(biāo)檢測中正負(fù)樣本不均衡的問題。相比較SSD 和YOLO,RetinaNet 的性能相對更好。Mask R-CNN[13]是對Faster R-CNN的改進(jìn),引入了Mask Head 進(jìn)行實例分割,它能夠同時檢測物體的邊界框和生成物體的掩模,是目前應(yīng)用較廣的實例分割算法之一。2018 年,Cai[14]等提出Cascade R-CNN 算法,它引入級聯(lián)結(jié)構(gòu)進(jìn)一步提升目標(biāo)檢測準(zhǔn)確率,每個級聯(lián)層都是一個獨立的分類器,用來篩選出更準(zhǔn)確的目標(biāo)框。2019 年,Zhou[15]等提出基于關(guān)鍵點檢測的ExtremeNet 網(wǎng)絡(luò),它利用網(wǎng)絡(luò)模型檢測出目標(biāo)物體上下左右方向的4 個極值點和一個中心點,并利用幾何關(guān)系找到有效點組,一組極點代表一個檢測結(jié)果,該模型有著較快的檢測速度。Li[16]等提出了多尺度目標(biāo)檢測網(wǎng)絡(luò)TridentNet,它采用空洞卷積并設(shè)計了3 種不同尺寸感受野的并行分支,可以處理不同尺寸的物體;訓(xùn)練時使用3 個分支,測試時使用1 個分支,有效解決了目標(biāo)尺寸變化的問題。Zhu[17]等提出了可以根據(jù)目標(biāo)尺寸自由選擇特征層的FSAF(Feature Selective Anchor-Free),針對每一個特征層,計算其損失值,使用損失值最小的特征層當(dāng)作最好的特征層進(jìn)行檢測,該模型較好地解決了目標(biāo)尺寸變化的問題。2020 年,Tan[18]等提出了EfficientDet 網(wǎng)絡(luò),它引入BiFPN(Bi-directional Feature Pyramid Network)進(jìn)行多尺度特征融合,同時使用Compound Scaling 進(jìn)行模型結(jié)構(gòu)優(yōu)化,EfficientDet 在速度和準(zhǔn)確率方面都有很好的表現(xiàn)。YOLOv4[19]是在YOLOv3 的基礎(chǔ)上進(jìn)行技術(shù)升級和迭代,包括利用SAM(Spatial Attention Module)來提升感受野響應(yīng),使用SPP(Spatial Pyramid Pooling)來增加網(wǎng)絡(luò)對目標(biāo)的表達(dá)能力等,在COCO 數(shù)據(jù)集上的mAP50為43.5%。Sparse RCNN[20]采用一種稀疏注意力機(jī)制,目的是減少冗余計算和加速推理,在COCO 數(shù)據(jù)集上,Sparse R-CNN 在mAP50方面比Faster R-CNN 高2.5%,速度比它快5 倍以上。Beal[21]等提出了ViTFRCNN 網(wǎng)絡(luò),它使用Transformer 替換骨干網(wǎng)絡(luò),借助注意力機(jī)制對圖像全局特征進(jìn)行編碼,基于Transformer 的ViT-FRCNN 網(wǎng)絡(luò)在標(biāo)準(zhǔn)數(shù)據(jù)集上獲得了出色的性能。另外,Qiu[22]等提出了BoderDet 網(wǎng)絡(luò),它使用邊界對齊自適應(yīng)地進(jìn)行邊界特征提取,并將邊界對齊操作封裝成對齊模塊集成到FCOS(Fully Convolutional One-Stage)網(wǎng)絡(luò),使用高效的邊界特征提高了重疊目標(biāo)的檢測精度。Yang[23]等提出了基于邊界圓的無錨框檢測方法CircleNet,只需要學(xué)習(xí)邊界圓的半徑就可以實現(xiàn)目標(biāo)檢測,與邊界框相比,具有優(yōu)越的檢測性能和較好的旋轉(zhuǎn)一致性。2021 年,Chen[24]等提出RepPoints v2 算法,它基于Anchor-Free 的思想,利用學(xué)習(xí)目標(biāo)的重心和特征點進(jìn)行檢測;相比較RepPoints v1,RepPoints v2,它對網(wǎng)絡(luò)結(jié)構(gòu)、特征提取和損失函數(shù)等實施了改進(jìn),進(jìn)而提升了檢測精度和速度;在COCO 數(shù)據(jù)集上測試,RepPoints v2 的mAP50比RepPoints v1 高1.6%。Yao[25]等提出了一種端到端的檢測算法Efficient DETR,該算法利用密集先驗知識初始化檢測網(wǎng)絡(luò),僅用3 個編碼器和1 個解碼器就達(dá)到了較高的檢測精度,而且提高了收斂速度。Lang[26]提出了無錨框檢測網(wǎng)絡(luò)DAFNe,結(jié)合中心點和角點間距預(yù)測邊界框,并將中心度感知函數(shù)擴(kuò)展到任意四邊形,從而提高目標(biāo)定位精度,對于旋轉(zhuǎn)目標(biāo)效果更好。Ge[27]等提出了基于無錨機(jī)制的檢測方法YOLOX,它利用解耦頭將分類和回歸任務(wù)進(jìn)行解耦,改善模型收斂速度的同時提高了檢測性能。2022 年,Yu[28]等使用三段級聯(lián)設(shè)計完善了目標(biāo)檢測和重識別,實現(xiàn)每個階段注意力結(jié)構(gòu)緊密特征交叉,進(jìn)而使網(wǎng)絡(luò)從粗到細(xì)進(jìn)行目標(biāo)特征學(xué)習(xí),能夠更加清晰地區(qū)分目標(biāo)和背景特征。Cheng[29]等提出了AOPG(Anchor-Free Oriented Proposal Generator)網(wǎng)絡(luò),它將特征圖映射到圖像上,把位于真實框中心區(qū)域的頂點作為正樣本,構(gòu)建新的區(qū)域標(biāo)簽分配模塊,緩解了正樣本所占比例小的問題,并且使用對齊卷積消除了特征和旋轉(zhuǎn)框之間的不對齊。Huang[30]等提出了一種無錨框自適應(yīng)標(biāo)簽分配策略,能夠從熱力圖中獲取任意方向和形狀的特征,自適應(yīng)調(diào)整高斯權(quán)重來適配不同的目標(biāo)特征,使用聯(lián)合優(yōu)化損失完善非對齊優(yōu)化任務(wù),使檢測速度和檢測精度得到大幅提升。
深度學(xué)習(xí)目標(biāo)檢測算法目前已初步應(yīng)用在工業(yè)機(jī)器視覺中,比如制造過程中的產(chǎn)品缺陷檢測、工廠的異常行為檢測、工廠的安全隱患監(jiān)測,指導(dǎo)機(jī)器人進(jìn)行自動化加工、裝配等。然而,將它直接應(yīng)用于零部件精準(zhǔn)定位時存在一定的局限性:(1)經(jīng)典的深度學(xué)習(xí)算法需要海量訓(xùn)練數(shù)據(jù),通常需要大量的標(biāo)注數(shù)據(jù),這對于工業(yè)零部件視覺精準(zhǔn)定位數(shù)據(jù)采集來說是一個挑戰(zhàn);(2)模型參數(shù)量大、對硬件資源要求高,經(jīng)典的深度學(xué)習(xí)算法模型參數(shù)量偏大,如YOLOv3 模型參數(shù)量為162 MB,大模型意味著對硬件資源的占用也相對較多,從而需要大量的計算資源來進(jìn)行訓(xùn)練和推理,這對于一些小型或中小型企業(yè)來說是一個負(fù)擔(dān);(3)穩(wěn)定性問題,工業(yè)環(huán)境中極易存在噪聲和干擾,在復(fù)雜的光線和噪聲環(huán)境條件下,深度學(xué)習(xí)算法可能會出現(xiàn)性能下降或無法工作的情況;(4)工業(yè)零部件視覺定位精度要求高,針對零部件定位或插件、精密部件的螺孔定位等,有的定位精度要求在毫米量級,有的定位精度要求在百分之一毫米量級,在機(jī)器人、相機(jī)作用距離和相機(jī)分辨率固定的情況下對圖像的定位算法精度要求極高(2~5 pixel),而經(jīng)典的深度學(xué)習(xí)算法會出現(xiàn)檢測框冗余及不精確,可能會導(dǎo)致其不能直接應(yīng)用于工業(yè)零部件像素級精準(zhǔn)定位。針對以上問題,本文構(gòu)建了一種工業(yè)零部件精準(zhǔn)定位的輕量化深度學(xué)習(xí)網(wǎng)絡(luò)(Industry Light Weight Localization Network,ILWLNet)。網(wǎng)絡(luò)整體結(jié)構(gòu)采用Encoder-Decoder 架構(gòu),Encoder 采用多級bottleneck 模塊[31],內(nèi)部融入非對稱卷積和空洞卷積,可以有效降低特征提取參數(shù),增大感受野;Decoder 中的上采樣卷積同樣融入和非對稱卷積和空洞卷積,恢復(fù)圖像的同時進(jìn)一步降低模型參數(shù);Encoder 與Decoder 對應(yīng)特征層實施融合拼接,促使Encoder 在上采樣卷積時可以獲得更多的高分辨率信息,進(jìn)而更完備地重建出原始圖像細(xì)節(jié)信息。最后,利用加權(quán)的Hausdorff距離構(gòu)建了Decoder 輸出層與定位坐標(biāo)點的關(guān)系。該輕量化深度學(xué)習(xí)定位網(wǎng)絡(luò)具有定位精度高、準(zhǔn)確率高和抗干擾能力強等特性,基本滿足工業(yè)零部件精準(zhǔn)定位的需求。
圖1 為零部件光學(xué)影像定位系統(tǒng)的硬件組成。它主要由照明子系統(tǒng)、圖像采集子系統(tǒng)、機(jī)械運動子系統(tǒng)、機(jī)器人以及計算機(jī)組成。照明子系統(tǒng)由光源和光源控制器構(gòu)成;圖像采集子系統(tǒng)由鏡頭、CCD 相機(jī)和圖像采集卡等構(gòu)成;機(jī)械運動子系統(tǒng)由傳送帶、卡槽、支撐座和伺服運動系統(tǒng)等構(gòu)成。
圖1 定位系統(tǒng)硬件組成Fig.1 Hardware components of localization system
精準(zhǔn)定位系統(tǒng)的基本工作原理如下:由運動控制系統(tǒng)對物件進(jìn)行運動控制,配合卡槽位完成對物件的粗定位;光學(xué)子系統(tǒng)負(fù)責(zé)打光、由成像系統(tǒng)獲取圖像數(shù)據(jù),經(jīng)過圖像采集卡進(jìn)行A/D 轉(zhuǎn)換,轉(zhuǎn)換成數(shù)字信號、送入至計算機(jī)進(jìn)行零部件的像素級精準(zhǔn)定位;將定位后的精準(zhǔn)像素坐標(biāo)經(jīng)過坐標(biāo)轉(zhuǎn)換為機(jī)器人的空間物理坐標(biāo),控制機(jī)器人進(jìn)行精準(zhǔn)打孔、插件等,如圖2 所示。
圖2 零部件光學(xué)影像定位系統(tǒng)Fig.2 Optical image localization system for industry component
ILWLNet 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。網(wǎng)絡(luò)總體設(shè)計選用Encoder-Decoder 架構(gòu),Encoder 和Decoder 分別由三級Down_Block 和三級Up_Block級聯(lián)而成。每級Down_Block 由4 個配置不同的bottleneck 模塊串聯(lián)構(gòu)成;每級Up_Block 對輸入數(shù)據(jù)進(jìn)行上采樣卷積后與對應(yīng)的Down_Block 輸出數(shù)據(jù)進(jìn)行padding,并送入至conv_async 模塊,促使Encoder 在進(jìn)行上采樣卷積時可以獲得更多的高分辨率信息,進(jìn)而更完整地重建出原始圖像的細(xì)節(jié)信息。目標(biāo)點的個數(shù)由Encoder 輸出特征圖與Decoder 輸出語義層經(jīng)過全連接、拼接、全連接回歸獲得。最后,利用加權(quán)的Hausdorff 距離建立Decoder 輸出語義層與定位坐標(biāo)點的關(guān)系,并結(jié)合回歸的目標(biāo)點數(shù)量偏差構(gòu)建最終的損失函數(shù)形成閉環(huán)訓(xùn)練;推理階段,Decoder 輸出語義層經(jīng)過Otsu 分割即可得到最終的零部件精準(zhǔn)定位坐標(biāo)。
圖3 輕量化深度學(xué)習(xí)定位網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Lightweight deep learning localization network architecture
ILWLNet 網(wǎng)絡(luò)算法流程如圖4 所示,包括Encoder、Decoder、目標(biāo)點數(shù)量回歸和目標(biāo)點位置回歸。
圖4 輕量化深度學(xué)習(xí)定位網(wǎng)絡(luò)算法流程Fig.4 Flowchart lightweight deep learning localization network algorithm
Encoder 流程如下:輸入的圖像首先歸一化成3×256×256,經(jīng)過conv_async 輸出16×256×256 的特征圖,記為X1,其中conv_async 內(nèi)部進(jìn)行了1×1 的投影卷積和3×1,1×3 的非對稱卷積,得到初級特征圖的同時,降低了直接卷積的運算量和模型參數(shù);其次,經(jīng)過Down_Block_1 模塊得到32×128×128 的特征圖,實現(xiàn)下采樣和進(jìn)一步的深度特征提取,記為X2,其中Down_Block_1 內(nèi)部包含bottleneck_1_0,bottleneck_1_1,bottleneck_1_2 和bottleneck_1_3 四個模塊,具備降采樣、低卷積運算量和拓展感受野的能力,多級串聯(lián)也提升了網(wǎng)絡(luò)整體的非線性擬合能力;再次經(jīng)過Down_Block_2 模塊得到64×64×64 的特征圖,記為X3,其中Down_Block_2 內(nèi)部包含bottleneck_2_0,bottleneck_2_1,bottleneck_2_2 和bottleneck_2_3 四個模塊,功能同Down_Block_1;最后,經(jīng)過Down_Block_3 模塊得到64×32×32 的特征圖,記為X4,其中Down_Block_3 內(nèi)部包含bottleneck_3_0,bottleneck_3_1,bottleneck_3_2 和bottleneck_3_3 四個模塊,功能同Down_Block_1。
Decoder 流程如下:首先,特征圖X4和X3作為參變量進(jìn)入至Up_Block_1 模塊,得到32×64×64 的語義圖Y1,其中Up_Block_1 內(nèi)部實現(xiàn)X4上采樣并與X3特征拼接、拼接后的特征圖進(jìn)入conv_async 模塊,Up_Block_1 具備上采樣、低卷積運算和多特征融合能力,促使Encoder 在進(jìn)行上采樣卷積時可以獲得更多的高分辨率信息;其次,語義圖Y1和特征圖X2作為參變量進(jìn)入Up_Block_2 模塊,得到16×128×128 的語義圖Y2,功能實現(xiàn)同Up_Block_1;最后,語義圖Y2和特征圖X1作為參變量進(jìn)入至Up_Block_3 模塊,得到8×256×256 的語義圖Y3。
目標(biāo)點數(shù)量回歸:特征圖X4與語義圖P分別經(jīng)過全連接得到Branch2 的B2和Branch1 的B1,經(jīng)過特征拼接及全連接回歸得到最終的定位目標(biāo)點數(shù)量。
目標(biāo)點位置回歸:Decoder 得到的最終語義圖P可以體現(xiàn)每個坐標(biāo)點的激活概率值,但是并不能直接返回預(yù)測目標(biāo)點坐標(biāo);通過3.3 節(jié)構(gòu)建的加權(quán)Hausdorff 距離損失函數(shù),將預(yù)測點坐標(biāo)與語義圖P進(jìn)行關(guān)聯(lián),再次融合目標(biāo)點數(shù)量預(yù)測誤差,利用3.4 節(jié)構(gòu)建的最終損失函數(shù)進(jìn)行閉環(huán)訓(xùn)練。模型閉環(huán)訓(xùn)練收斂且達(dá)到指定誤差后,推理階段將語義圖P經(jīng)過Otsu 分割即可得到最終的目標(biāo)點位置。
圖5 介紹了ILWLNet 網(wǎng)絡(luò)的通用網(wǎng)絡(luò)模塊和外層網(wǎng)絡(luò)模塊。通用網(wǎng)絡(luò)模塊:conv_async 包含1×1 投影卷積、3×1 與1×3 的非對稱卷積(內(nèi)置空洞卷積),實現(xiàn)淺層特征提取同時降低了直接卷積的運算量。外層網(wǎng)絡(luò)模塊:Down_Block_i包含bottleneck_i_0,bottleneck_i_1,bottleneck_i_2 和bottleneck_i_3 四部分,具備降采樣、低卷積運算量和拓展感受野的能力,多級串聯(lián)可提升網(wǎng)絡(luò)整體的非線性擬合能力;Up_Block_i 內(nèi)部包含上采樣、特征拼接和conv_async 模塊,具備特征尺寸擴(kuò)張、低卷積運算和多特征融合能力。
圖5 外層網(wǎng)絡(luò)模塊結(jié)構(gòu)Fig.5 Structure of outer network module
圖6 介紹了ILWLNet 網(wǎng)絡(luò)的內(nèi)層網(wǎng)絡(luò)模塊。bottleneck_i_0:左鏈路包括MaxPooling2D 和Padding 模塊,右鏈路包含2×2 卷積(步長為2)、3×3 卷積、1×1 擴(kuò)張卷積和Dropout2d,兩條鏈路特征相加并經(jīng)過PReLU 輸出,各個卷積模塊后面都追加BatchNorm 和PReLU 模塊用于提升非線性能力和降低過擬合風(fēng)險。bottleneck_i_1:右鏈路包括1×1 投影卷積、3×3 卷積、1×1 擴(kuò)張卷積和Dropout2d,直通的左鏈路與右鏈路特征相加并經(jīng)過PReLU 輸出;各個卷積模塊后面都追加BatchNorm 和PReLU。bottleneck_i_2:右 邊鏈路包括1×1 投影卷積、3×3 空洞卷積、1×1 擴(kuò)張卷積和Dropout2d,直通的左鏈路與右邊鏈路特征相加并經(jīng)過PReLU 輸出;各個卷積模塊后面都追加BatchNorm 和PReLU。bottleneck_i_3:右鏈路包括1×1 投影卷積、5×1 和1×5 的非對稱卷積、1×1 擴(kuò)張卷積和Dropout2d,直通的左鏈路與右鏈路特征相加并經(jīng)過PReLU 輸出;各個卷積模塊后面都追加BatchNorm 和PReLU。
圖6 內(nèi)層網(wǎng)絡(luò)模塊結(jié)構(gòu)Fig.6 Structure of inner network modules
本文的損失函數(shù)構(gòu)建來源于Hausdorff 距離[32]。X,Y是兩個無序的點集,d(x,y)表示兩個點集X,Y之間的距離,其中,x∈X,y∈Y,本文采用歐氏距離。X,Y擁有的點的數(shù)量可以不同Ω?R2表示包含所有可能點的空間,則集合X?R 與集合Y?R 的Hausdorff 距離定義為:
其中:
Hausdorff 距離的最大短板是對輪廓上的點的距離計算相對敏感[33]。為了優(yōu)化這個問題,通常采用加權(quán)的Hausdorff 距離,如下:
其中:|X|,|Y|分別為集合X,Y點的數(shù)量,在本文中,Y表示圖像目標(biāo)定位點坐標(biāo)標(biāo)簽集合,X表示預(yù)測的圖像目標(biāo)定位點坐標(biāo)集合。
語義圖P可以得到每個點的激活概率值,但是并不能返回預(yù)測點的坐標(biāo)。為了建立語義結(jié)果與坐標(biāo)點最終的聯(lián)系,采用加權(quán)Hausdorff 距離(Weighted Hausdorff Distance,WHD)函數(shù)進(jìn)行構(gòu)建,即:
這里ε設(shè)定 為10-6,Mα為廣義均值函數(shù),px∈[0,1]為語義圖P中每個坐標(biāo)對應(yīng)的概率值。
為了訓(xùn)練整個ILWLNet,結(jié)合加權(quán)Hausdorff 距離函數(shù)和回歸的點的數(shù)量差,構(gòu)建ILWLNet 整體損失函數(shù)如下:
其中:G為圖像的標(biāo)簽包含目標(biāo)點的坐標(biāo)和目標(biāo)數(shù)量,C=|G|,為預(yù)測的目標(biāo)點數(shù)量。
Lreg(x)為回歸項,這里采用L1平滑函數(shù)。
為了充分驗證ILWLNet 的性能,本文選用3 組數(shù)據(jù)集。數(shù)據(jù)集一:筆記本螺孔定位數(shù)據(jù)集,原始數(shù)據(jù)共358 張,原圖與中心點坐標(biāo)融合后的示例圖見圖7 的第一行。數(shù)據(jù)集二:筆記本螺孔定位數(shù)據(jù)集,原始數(shù)據(jù)共318 張,原圖與中心點坐標(biāo)融合后的示例圖見圖7 的第二行。數(shù)據(jù)集三:紗車機(jī)定位數(shù)據(jù)集,原始數(shù)據(jù)共529 張,原圖與中心點坐標(biāo)融合后的示例圖見圖7 的第三行。
圖7 數(shù)據(jù)集示例Fig.7 Dataset sample
ILWLNet 訓(xùn)練和測試的模型均運行在Ubuntu16.04 操作系統(tǒng)的工作站上。硬件的具體配置如下:CPU,Intel Xeon(R)CPU E5-1650 V4 3.6 GHz 12 核;內(nèi)存,32 GB,顯卡,Nvidia Ge-Force 1080Ti;軟件配置如下:CUDA,10.0;cuDNN,7.6.1.34;深度學(xué)習(xí)框架,PyTorch 1.0.0;Python,3.6 版本。選擇Loss 值最小的模型作為單次測試驗證的最優(yōu)模型,實驗?zāi)P统瑓?shù)配置如表1 所示。
表1 模型超參數(shù)設(shè)置Tab.1 Model super parameter setting
為了充分驗證ILWLNet 的性能,本文利用Precision,Root Mean Squared Error(RMSE)和Mean Average Hausdorff Distance(MAHD)進(jìn)行衡量。其計算公式如下:
其中:TP(True Positive)表示預(yù)測正確,實際為真;FP(False Positive)表示預(yù)測錯誤,實際為真;FN 表示預(yù)測錯誤,實際為假;TN 表示預(yù)測正確,實際為假;N表示測試集的數(shù)量,Ci表示第i 張圖片中實際目標(biāo)的個數(shù),表示預(yù)測的第i張圖片目標(biāo)個數(shù)。
4.3.1 對比分析
在本次實驗中,綜合考慮不同配比的訓(xùn)練數(shù)據(jù)對模型定位性能的影響,對訓(xùn)練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)選用以下配比進(jìn)行實驗,Train∶Val∶Test 分別設(shè)置為10%∶10%∶80%,20%∶10%∶70%,30%∶10%∶60%,40%∶10%∶50%,50%∶10%∶40%,60%∶10%∶30%,70%∶10%∶20%,80%∶10%∶10%,在圖8 和圖9 的Loss 曲線圖中分別對應(yīng)loss_1~loss_9。使用ILWLNet 算法訓(xùn)練,對8 種不同配比的數(shù)據(jù)訓(xùn)練并將訓(xùn)練過程Loss 值作可視化處理,以利于分析訓(xùn)練過程中損失函數(shù)Loss 值的變化情況。
圖8 數(shù)據(jù)一訓(xùn)練的loss 曲線Fig.8 Trainning loss curves of dataset one
圖9 數(shù)據(jù)二訓(xùn)練的loss 曲線Fig.9 Trainning loss curves of dataset two
如圖8 和圖9 所示,兩種數(shù)據(jù)集在訓(xùn)練中Loss 值的整體變化趨勢一致,隨著訓(xùn)練數(shù)據(jù)量的增加,收斂速度越快。其中,訓(xùn)練數(shù)據(jù)大于等于40%,200 次迭代后基本收斂,然后逐漸趨于穩(wěn)定,但依然出現(xiàn)小幅震蕩;訓(xùn)練數(shù)據(jù)大于等于20%且小于等于40%,600 次迭代后基本收斂,然后逐漸趨于穩(wěn)定;訓(xùn)練數(shù)據(jù)占比10%,1 000 次訓(xùn)練后仍會收斂。結(jié)合表3 和表4,雖然訓(xùn)練樣本集在20%比例時,推理結(jié)果可以得到98%以上,但是為了達(dá)到定位精度小于等于5 pixel 的識別率大于等于99.5%,訓(xùn)練樣本比例建議大于等于50%。與深度學(xué)習(xí)所需要的海量數(shù)據(jù)相比,ILWLNet 只需要150 張左右相對較少的數(shù)據(jù)即可收斂到很好的效果,更適用于工業(yè)智能制造的實際應(yīng)用場景。
本文以Precision,MSE 和MAHD 作為評價指標(biāo),計算不同配比的訓(xùn)練數(shù)據(jù)在1 000 迭代后得到最優(yōu)的收斂模型用于ILWLNet 推理,推理計算得到測試集的Precision 和RMSE 值;其中,訓(xùn)練集、驗證集和測試集數(shù)據(jù)三者無交集。判定為定位準(zhǔn)確的參數(shù)條件為:推理得到的中心點坐標(biāo)與標(biāo)簽的中心點坐標(biāo)均方差誤差小于等于5,結(jié)果如表2 和表3 所示。
表2 ILWLNet 在數(shù)據(jù)集一中的定位測試結(jié)果Tab.2 ILWLNet localization test results on dataset one
表3 ILWLNet 在數(shù)據(jù)集二中的定位測試結(jié)果Tab.3 ILWLNet localization test results on dataset two
通過表3 和表4 可以看出,ILWLNet 網(wǎng)絡(luò)可以進(jìn)行零部件的精準(zhǔn)定位。當(dāng)訓(xùn)練數(shù)據(jù)占比在20%以上時,定位誤差小于等于5 pixel 可以取得至少98%的準(zhǔn)確率,平均準(zhǔn)確率高于99%;當(dāng)訓(xùn)練數(shù)據(jù)集在50%及其以上時,定位誤差小于等于5 pixel 的準(zhǔn)確率可以達(dá)到100%。隨著訓(xùn)練數(shù)據(jù)的增加,測試推理得到的RMSE 和MAHD 誤差值呈整體變小的趨勢。相比較經(jīng)典的深度學(xué)習(xí)網(wǎng)絡(luò)(YOLO3,162 MB),ILWLNet 模型的參數(shù)量非常少,只有57.4 kB。這是由于ILWLNet 網(wǎng)絡(luò)的Decoder 和Encoder 的層級較少,均為3 層,利用Bottleneck 技術(shù)代替直接的卷積方式且內(nèi)部融入了非對稱卷積和空洞卷積,因此模型參數(shù)量非常小。利用構(gòu)建的加權(quán)Hausdorff 距離將輸出的語義概率圖與定位坐標(biāo)點進(jìn)行關(guān)聯(lián)并構(gòu)建Loss 函數(shù)進(jìn)行閉環(huán)回歸,ILWLNet 能夠用于零部件的精準(zhǔn)定位。另外,ILWLNet 網(wǎng)絡(luò)采用Up_Block 與Down_Block 的對應(yīng)特征層融合以及多級Bottleneck 級聯(lián),不僅提升了整體網(wǎng)絡(luò)的非線性而且較好地恢復(fù)了原始圖像的細(xì)節(jié)信息,配合構(gòu)建的加權(quán)Hausdorff 距離,表明ILWLNet得到了非常理想的定位精度。由于構(gòu)建的ILWLNet 模型參數(shù)較小,僅需相對較少的樣本訓(xùn)練即可取得比較好的結(jié)果,通過表2 和表3 的不同配比實驗定位結(jié)果得到證實;因此,ILWLNet 亦可適用于小樣本訓(xùn)練,進(jìn)而滿足工業(yè)光學(xué)影像定位的小樣本實際需求。
表4 ILWLNet 推理時間測試結(jié)果Tab.4 Test results of ILWLNet inference time(ms)
表4 展示了ILWLNet 推理時間測試結(jié)果,測試圖片共100 張;其中,ILWLNet 網(wǎng)絡(luò)前向推理平均時間為8.34 ms/frame,閾值分割的平均時間為86.58 ms/frame,ILWLNet 的整體運行時間平均為94.92 ms/frame,滿足工業(yè)光學(xué)影像精準(zhǔn)定位的200 ms/frame 需求。
4.3.2 測試集定位結(jié)果與分析
在閉環(huán)1 000 次迭代訓(xùn)練過程中,最小loss值對應(yīng)的模型記為ILWLNet 在該次訓(xùn)練過程的最優(yōu)模型。為了檢驗ILWLNet 網(wǎng)絡(luò)的實際定位效果,利用3 組測試集數(shù)據(jù)進(jìn)行驗證。圖10~圖12 分別顯示了數(shù)據(jù)集一、數(shù)據(jù)集二和數(shù)據(jù)集三的定位結(jié)果。其中,第一行顯示的是原始圖、第二行顯示的是語義概率圖P 經(jīng)過歸一化得到的結(jié)果、第三行顯示的是語義概率圖P 經(jīng)過Otsu 閾值分割后的二值圖、第四行顯示的是原圖加載預(yù)測中心點后的融合圖。
圖10 數(shù)據(jù)集一的測試定位結(jié)果Fig.10 Localization test results on dataset one
從第二行可以看出,ILWLNet 通過Encoder-Decoder 架構(gòu)可以還原出原圖(圖像復(fù)原,用于缺陷檢測[34])及其語義信息(語義分割[35]),Decoder的輸出語義概率圖P 呈現(xiàn)了完整的原圖信息;另外,ILWLNet 將預(yù)測語義概率圖P 與定位中心點坐標(biāo)通過加權(quán)Hausdorff 距離進(jìn)行了有效關(guān)聯(lián),因此,概率圖中的螺孔中心點區(qū)域灰度明顯高于圖片中的任何其他區(qū)域,從而可以通過Otsu 自適應(yīng)分割方法將中心點區(qū)域精準(zhǔn)分割出來。第三行呈現(xiàn)了語義概率圖P 經(jīng)過Otsu 自適應(yīng)分割后的結(jié)果,可以看出除中心點區(qū)域為白外,圖片中的其他區(qū)域均為黑,因此得到的中心點坐標(biāo)不會發(fā)散。
圖10 左一的螺孔內(nèi)部受到光照(拍攝角度和光線)的影響,小部分區(qū)域呈現(xiàn)黑色;左二的外殼的最左邊沒有拍攝清楚,整體呈現(xiàn)黑色,與其他圖相差較大。圖11 右一和右二的螺孔最里面白色內(nèi)圈明顯不圓(拍攝角度影響)。此類圖片如果采用傳統(tǒng)的圓擬合、模板匹配等方法,定位結(jié)果會大打折扣。仿真及實測結(jié)果表明,ILWLNet算法不僅可以對正常的零部件樣本進(jìn)行精準(zhǔn)定位,而且對受到光線干擾、部分缺損的零部件圖片的定位效果仍然很好。
圖11 數(shù)據(jù)集二的測試定位結(jié)果Fig.11 Localization test results on dataset two
圖12 為紗車機(jī)圖像定位結(jié)果。此組圖像受光照影響較為嚴(yán)重,四組圖像均出現(xiàn)明顯的反光,右二和右一的矩形中心孔周圍受到了強光干擾;另外,圖片中的矩形孔并不唯一,利用傳統(tǒng)模板匹配方法可能會出現(xiàn)誤匹配,再疊加光照的影響,傳統(tǒng)定位算法性能會受到嚴(yán)重影響。通過仿真及實測的結(jié)果可以看出,ILWLNet 算法不僅適用于圓形的零部件定位,而且適用于其他樣式的零部件精準(zhǔn)定位,同時兼顧較好的抗干擾效果。
圖12 數(shù)據(jù)集三的測試定位結(jié)果Fig.12 Localization test results on dataset three
為了驗證 conv_async,Down_Block_1,Down_Block_2,Down_Block_3,Up_Block_1,Up_Block_2,Up_Block_3,特征拼接融合(Encoder 與Decoder 對應(yīng)層padding 及融合,記為Fusion)以及WHD 對模型性能的影響,對ILWLNet進(jìn)行消融研究,實驗結(jié)果如表6 所示。測試數(shù)據(jù)選用數(shù)據(jù)集一,其Train∶Val∶Test 數(shù)據(jù)集比例選用50%∶10%∶40%。
通過表5 可以看出:不包含WHD 模塊,ILWLNet 算法不收斂,表明WHD 模塊可以有效關(guān)聯(lián)輸出語義概率圖P 與定位坐標(biāo)點的關(guān)系。配置一:只配置WHD 模塊,其他模塊中的卷積均采用經(jīng)典的3×3 卷積,此時模型大小為85.1 kB,識別率為87.94%,說明本文架構(gòu)不采用多級bottleneck 級聯(lián)仍可以收斂,不過相比較ILWL-Net,模型參數(shù)量增加了27.7 kB,定位準(zhǔn)確率降低了12.06%。配置二:只配置Fusion 以及WHD 模塊,其他模塊同配置一,模型大小為109 kB,識別率為93.62%;相比較配置一,通過Encoder 與Decoder 對應(yīng)層的融合使得識別率提升約5.68%,但是模型參數(shù)增加了接近24 kB,表明相對較大的模型在充分訓(xùn)練后一定程度上可以取得相對較好的識別效果。配置三:配置conv_async,Down_Block_1,Down_Block_2,Down_Block_3,F(xiàn)usion 和WHD 模塊,相比較配置一準(zhǔn)確率提升4.97%,模型大小減小7.1 kB,表明bottleneck_i 模塊可降低模型參數(shù)量,同時多級bottleneck_i 模塊級聯(lián)增加了網(wǎng)絡(luò)的非線性,可提升識別率。配置四:采用conv_async,Up_Block_1,Up_Block_2,Up_Block_3,F(xiàn)usion和WHD 模塊,準(zhǔn)確率基本不變,略微下降,模型參數(shù)減小9.4 kB,表明Up_Block 中的非對稱卷積和空洞卷積起到了降低模型參數(shù)量的作用,但是沒有與Encoder 的對應(yīng)層融合,對識別率提升沒有太大影響。配置五:ILWLNet 算法中去掉Fusion 模塊,其他模塊同配置一,模型參數(shù)量相比配置一降低了30.3 kB,但是識別率卻降低了2% 左右,表明Down_Block 的bottleneck_i 模塊以及Up_Block 融合的conv_async 模塊可有效降低模型參數(shù)量,F(xiàn)usion 模塊對于網(wǎng)絡(luò)整體性能的提升起到了很大的作用;通過配置一和配置二的比較,F(xiàn)usion 模塊提升4.97%的識別率(各模塊內(nèi)部卷積均為常用的3×3 卷積),而相比較ILWLNet,配置五的識別率卻降低了14.2%左右,表明conv_async、Down_Block、Up_Block 和Fusion 模塊的級聯(lián)進(jìn)一步提升了整體ILWLNet 的非線性及識別性能。
表5 不同策略對模型性能的影響對比Tab.5 Comparison of impact of different strategies on model performance
本文根據(jù)現(xiàn)代工業(yè)光學(xué)影像定位精度高、占用資源小、抗干擾好、速度快的要求,構(gòu)建了零部件視覺精準(zhǔn)定位的輕量化深度學(xué)習(xí)網(wǎng)絡(luò),并介紹了零部件光學(xué)影像定位系統(tǒng)的硬件結(jié)構(gòu)和工作原理。然后,闡述了輕量化深度學(xué)習(xí)定位網(wǎng)絡(luò)的架構(gòu)、模塊結(jié)構(gòu)、加權(quán)Hausdorff 距離及其損失函數(shù)。實驗結(jié)果表明:輕量化深度學(xué)習(xí)定位網(wǎng)絡(luò)模型參數(shù)為57.4k;通過實際產(chǎn)線數(shù)據(jù)仿真,訓(xùn)練數(shù)據(jù)集多于150 張,定位精度小于等于5 pixel 的識別率不小于99.5%,基本滿足工業(yè)零部件定位的精度高、準(zhǔn)確率高和抗干擾能力強等要求。仿真測試表明,ILWLNet 已經(jīng)在筆記本螺孔和紗車機(jī)實際工業(yè)產(chǎn)線數(shù)據(jù)中取得了較好的識別率和定位精度,可是后續(xù)將ILWLNet 進(jìn)行產(chǎn)線實際應(yīng)用,需要考慮數(shù)據(jù)的泛化性,即需要更多不同種類的產(chǎn)線定位數(shù)據(jù)集進(jìn)行驗證以及上線測試。此外,ILWLNet 的推理時間大多消耗在Encoder-Decoder 階段后的Otsu 自適應(yīng)分割流程中,因此后續(xù)會對其進(jìn)行進(jìn)一步優(yōu)化,提升推理速度。