李振軒,孫福臨,劉羿漩,齊振嶺,葛廣英
(1. 山東省光通信科學與技術重點實驗室,聊城 252059;2. 聊城大學計算機學院,聊城 252059)
法蘭盤是一種管道間相互連接的盤狀機械零件,在管道工程中發揮著重要作用。法蘭盤加工過程復雜,步驟繁瑣,不可避免地會出現一些缺陷。其中法蘭盤表面缺陷不僅影響產品外觀,同時嚴重損害其性能,縮短使用壽命,甚至導致嚴重的安全事故。目前大多數企業采用人工檢測,人工質檢方法受工人工作經驗等因素影響,無法形成統一、嚴格的判斷標準,漏檢、錯檢的情況時常發生,人工檢測效率低下不僅阻礙企業擴大生產規模,而且增加企業生產成本,嚴重影響企業健康發展[1]。因此,設計一種效率高、成本低的法蘭盤表面缺陷檢測方法尤為重要。
隨著人工智能技術的快速普及,深度學習算法在各個研究領域得到廣泛應用,為實現簡捷、高效的缺陷檢測提供了新思路[2]。以Faster R-CNN[3]和Mask R-RCNN[4]等為代表的二階段檢測網絡和以SSD[5]、YOLO 系列等為代表的單階段檢測網絡在缺陷檢測中都有不錯的表現。吳越等[6]提出了一種基于改進Faster R-CNN 算法,通過改進Faster R-CNN 的RPN 網絡,有效降低池化過程中的量化誤差,提高了小目標的檢測精度,但改進后的算法推理速度低于YOLOv3算法。針對傳統鑄件表面缺陷檢測效率低、精度差等問題,馬宇超等[7]將深度遷移學習的網絡自適應策略與Mask R-CNN 算法相結合,構建了深度網絡自適應優化的Mask R-CNN 算法模型,優化后的模型泛化能力得到提升,在三種常見鑄件表面缺陷數據集中得到的平均檢測精度為92%,但檢測速率較低。魏智鋒等[8]設計了一種適用于人造板表面缺陷檢測的SDD-MoblieNet 算法模型,將SSD 算法中的VGGNet 網絡替換為輕量級的MobileNet 網絡,并將Inception 網絡附加到多個特征映射上,不僅增強網絡提取特征的能力,而且提高了模型檢測速度,在五種人造板表面缺陷數據中,該模型的平均檢測精度為93.76%,最快檢測速度為75 幀/秒。程婧怡等[9]將YOLOv3淺層特征和深層特征進行融合并新增一個特征圖層,形成四個尺度預測,提升了模型檢測金屬表面小尺寸缺陷和模糊缺陷的能力,在NEU-DET 數據集中,改進后的YOLOv3算法平均檢測精度為67.64%,但檢測速率低于YOLOv3 算法。張凱等[10]設計了基于YOLOv4 的輕量化發電機定子表面缺陷檢測算法,將YOLOv4 提取特征的主干網絡替換為改進的MoblieNetv3 網絡,使模型體積大幅縮小,檢測速度提升了45.4%。雖然這些算法的檢測精度能滿足基本要求,但是對硬件的性能要求高,難以部署在計算資源有限的邊緣設備中,不利于在企業大規模推廣使用。為實現算法模型在邊緣設備的部署,本文對YOLOv5進行優化,實現網絡輕量化,并將輕量化后的模型部署在邊緣設備Jetson nano 中,驗證模型在邊緣設備中的推理效果。
YOLOv5 算法是由Ultralytics LLC 團隊設計的一種高效、便捷的單階段目標檢測算法,相較于先提取物體區域再對區域進行CNN 分類識別的兩階段目標檢測算法,單目標檢測算法將目標檢測任務轉換成一個回歸問題,雖然會損失一定的檢測精度,但有效縮短了檢測的時間,滿足實時檢測要求。根據網絡的復雜程度可以將YOLOv5 分為五個版本。本文以YOLOv5s 為基礎實現法蘭盤表面缺陷檢測,網絡結構模型如圖1所示。

圖1 YOLOv5結構
YOLOv5 網絡結構由圖像輸入模塊(Input)、負責輸入圖像特征提取的骨干網絡(Backbone)、由特征金字塔和路徑聚合網絡構成的特征融合網絡(Neck)和預測模塊(Prediction)四部分組成[11]。YOLOv5 網絡的輸入模塊沿用YOLOv4 的Mosaic 數據增強,將輸入的四張圖片做隨機縮放、裁剪,然后再將其拼接,不僅豐富了檢測數據集,而且增加了很多小目標,網絡的魯棒性得到增強,在進行歸一化操作時會一次性計算四張圖片的數據,降低了模型的內存需求,提升了網絡的訓練速度。由于數據集中圖片的大小不一,通常是將原始圖片按一定比例縮放到一個固定尺寸,然后對圖片進行填充,填充較多會造成信息冗余。而YOLOv5通過自適應縮放算法,為縮放后的圖片添加最少的填充,有效避免因過度填充造成的信息冗余,提升了網絡的推理速度。在YOLOv5 6.0 版本中,使用Conv模塊代替了骨干網絡中的Focus模塊,二者在理論上是等價的,但對于GPU 設備和現有的優化算法而言使用6×6 的卷積會更加高效[12],更有利于模型在邊緣設備中部署。
ShuffleNetV2[13]是曠視科技團隊設計的針對嵌入式設備的高效輕量化卷積神經網絡,ShuffleNetV2 作者通過大量實驗得出不能單純地以神經網絡計算復雜度FLOPs作為衡量輕量化卷積神經網絡指標的結論,并提出設計輕量化卷積神經網絡的四條準則,分別為G1 輸入輸出通道數相同時,內存訪問量最小;G2分組數過大的分組卷積會增加內存訪問量;G3碎片化操作不利于并行加速;G4逐元素操作帶來的內存和耗時不可忽略。作者根據這四條準則對ShuffleNetV1 加以改進和優化,設計出ShuffleNetV2。
ShuffleNetV2 主要由基本單元和下采樣單元構成,其網絡結構如圖2所示。在基本單元中通道拆分(Channel Split)操作將輸入特征矩陣的通道等分成兩份,左支路不做任何處理作恒等映射,減少了碎片化操作,滿足G3 準則。右支路經兩次步長為1 的1×1 標準卷積(Standard Convolution,SConv)和一次步長為1的3×3深度可分離卷積(Depth-wise separable convolution, DWConv)[14],并且在卷積操作過程中輸入輸出通道數相同,滿足G2 準則。為滿足G4 準則ShuffleNetV2 放棄了ShuffleNetV1 中將左右兩支路拼接的Add 操作而采用通道拼接(Concat)操作將左右兩支路合并在一起。為保證左右兩個支路的特征信息得到充分的融合,在Concat 操作后引入Channel Shuffle 模塊,實現兩支路間的信息交流,提升網絡提取特征的能力。在ShuffleNetV2 基本單元中利用Channel Split 操作實現分組并將Shuffle-NetV1 中的分組卷積代替為DWConv,有效降低了分組數,滿足G1 準則。ShuffleNetV2 下采樣單元與基本單元結構相似,與基本單元相比少了對輸入特征圖Channel Split操作,并在左支路添加了步長為2 的3×3 DWConv 和1×1 SConv,增強網絡提取特征的能力。由于下采樣單元沒有通道拆分操作使得左右支路在通道拼接后輸出的通道數加倍。

圖2 ShuffleNetV2結構
目前,大多數的輕量化網絡通過大量使用DWConv,減少模型對計算資源的依賴,提升檢測速度,但在一定程度上影響模型檢測精度。Li等[15]針對DWConv 固有缺點,將SConv 與DWConv 相結合,設計出兼顧速度與精度的GSConv模塊。其結構如圖3所示。設輸入特征圖X的通道數為C1,輸出通道數為C2,特征圖X經一次SConv 操作得到通道數C2/2 的特征圖X1,再經DWConv操作得到特征圖X2,通過Concat操作將X1、X2按通道進行拼接,然后利用Shuffle 操作將來自SConv 的特征信息完全混合到DWConv 輸出的特征信息中,最后得到通道數為C2的特征圖X4。這種操作既保留了SConv 的全部特征信息,降低了因輕量化帶來的精度損失,同時還具備較高的檢測速度。

圖3 GSConv結構
改進后的YOLOv5 網絡結構如圖4 所示。利用ShuffleNetV2 替換YOLOv5 骨干網絡,網絡模型的復雜度和參數量大大降低,有利于部署在計算資源有限的邊緣設備中。為進一步降低模型對硬件設備的性能要求,提升模型在邊緣設備中的運行速度,在替換骨干網絡的YOLOv5中引入兼顧速度與精度的GSConv,實現模型在邊緣設備中的快速推理,滿足法蘭盤加工過程中實時檢測的需求。

圖4 改進后YOLOv5結構
由于目前沒有公開的法蘭盤表面缺陷數據集,本文所使用的數據集采集自某法蘭盤生產廠,本數據集包含黑皮、切傷、渣孔三種缺陷,如圖5所示。本文對采集到的圖像改變亮度、對比度并進行平移、旋轉、縮放等操作實現數據集的擴充。經圖像增強處理后法蘭盤表面缺陷數據集一共有8540 張圖片,包含三種法蘭盤表面缺陷,黑皮2890張,切傷2920張,渣孔2730張,將得到的數據集按9 ∶1的比例劃分為訓練集、驗證集。利用LabelImg 工具對數據集進行手工標注,保存生成的XML文件。

圖5 法蘭盤表面缺陷數據集
本次模型訓練使用的服務器硬件配置為Intel(R) Xeon(R) Platinum 8350C CPU, RTX A5000(24 GB)GPU,45 GB RAM。所使用的系統環境為Ubuntu 18.04,深度學習框架為PyTorch,其中torch版本為1.9.0+cuda11.1。
本次模型前端部署使用的邊緣設備為英偉達生產的Jetson nano。Jetson nano 是一款外形、接口類似樹莓派的微型電腦主板,相較于其他同類設備,Jetson nano性能強悍、價格適中。在硬件方面它配備了基本時鐘頻率為1.43 GHz 的Cortex-A57 四核處理器,內存為4 GB LPDDR4。與樹莓派相比Jetson nano 最大優勢是它配備了一塊128 核Maxwell?架構的NVIDIA GPU,算力能夠達到472 GFLOPs。它采用高效、低功耗的封裝方式,具有5 W/10 W 功率模式和5 V DC 輸入。軟件方面Jetson nano 支持JetPack SDK 和多種主流的AI框架和算法,例如PyTorch,Tensor-Flow 等。JetPack SDK 是NVIDIA 用于構建AI 應用程序的開發環境包,支持Jetson模塊和開發套件,具有Linux 內核、Ubuntu 桌面環境以及CUDA-X 加速庫和API,用于深度學習、計算機視覺、加速計算和多媒體。Jetson nano 基本參數見表1。

表1 Jetson nano基本參數
本文網絡模型訓練實驗的參數如下:輸入圖片的大小為640×640,batch-size設為300。將訓練好的網絡模型復制到已搭建YOLOv5運行環境的Jetson nano 中,在Jetson nano 中運行推理程序,完成推理任務,實現法蘭盤表面缺陷的檢測。
本文以YOLOv5s 作為法蘭盤表面缺陷檢測的基礎算法,通過對YOLOv5s 引入不同的優化策略實現模型的輕量化,為驗證優化策略對模型的影響,設計了消融實驗,具體結果見表2。

表2 YOLOv5s消融實驗
由表2可知,YOLOv5s在法蘭盤表面缺陷檢測中平均檢測精度可達到95.4%,但GFLOPs、參數量和模型體積較大,難以在邊緣設備中部署。Changed(1)算法與YOLOv5s 相比,平均檢測精度下降了0.9 個百分點,這是由于模型骨干網絡輕量化,提取特征的能力下降所導致。但替換骨干網絡后模型的GFLOPs、參數量和大小分別變為YOLOv5s 的37.5%、45.4%和46.2%,證明利用ShuffleNetV2 替換YOLOv5s 的骨干網絡,可有效降低網絡的復雜程度,快速實現網絡的輕量化,同時這種輕量化方法對平均檢測精度的影響較小。Changed(2)算法在YOLOv5s的Neck 網絡引入GSConv,較YOLOv5s,其平均檢測精度提升了1.5 個百分點,模型的GFLOPs、參數量和大小雖略有下降,但仍處在較高水平,下降程度不足以滿足網絡輕量化的要求。本文算法融合了Changed(1)算法和Changed(2)算法的優勢,既實現了網絡輕量化又保持了較高的檢測精度。與YOLOv5s 相比,本文算法的GFLOPs、參數量和模型大小分別下降了66.9%、60.9%、59.4%,便于在資源有限的邊緣設備中部署。
為驗證本文優化后模型在邊緣設備中的推理性能,將消融實驗得到的算法模型部署到Jetson nano 中,對100 組數據進行多次推理,其結果見表3。

表3 模型推理結果
由表3 中的實驗結果可知,由于YOLOv5s參數量大,網絡層數深,對計算資源要求高,導致解析YOLO 層花費時間長,推理速度慢,推理速度僅為6.62 FPS,無法滿足實時檢測的要求。Changed(1)算法將YOLOv5s 的骨干網絡輕量化,使得參數量和網絡層數明顯降低,大幅縮短YOLO 層解析時間和模型推理時間,與YOLOv5s相比,推理速度提升了76.3%,基本滿足了實時檢測的要求。Changed(2)算法將YOLOv5s 的Neck 網絡輕量化,平均檢測精度得到提升,同時縮短了YOLO 層解析時間,但網絡層數加深,在模型推理時間和推理速度方面與YOLOv5s 基本持平,沒有達到輕量化要求,難以在資源有限的設備中實現實時檢測。本文算法彌補了Changed(1)算法因骨干網絡輕量化造成的精度損失,與Changed(1)算法相比,平均檢測精度增長1.1 個百分點,同時進一步降低Changed(2)算法參數量和網絡層數,大幅縮短模型推理時間,推理速度得到有效提升,變為Changed(2)算法的1.79倍。
本文將模型部署實驗所使用100組數據的推理時間繪制成圖,如圖6所示。本文算法與其他消融實驗算法相比所需推理時間最短,推理過程相對平穩,推理時間在0.063~0.071 s 之間上下浮動,本文算法在邊緣設備中的推理速度方面優于其余三種網絡。本文算法推理效果如圖7所示。

圖6 推理時間折線圖

圖7 推理效果圖
本文構建了法蘭盤表面缺陷數據集,提出了一種基于改進YOLOv5s 的法蘭盤表面缺陷檢測算法,通過替換YOLOv5s 骨干網絡,引入GSConv,實現網絡輕量化。其中,該模型的平均檢測精度可以達到95.6%,在Jetson nano 中平均推理速度為12.38 FPS,有較高檢測精度的同時也具有較高的檢測速度,為企業提供了一種法蘭盤表面缺陷實時檢測的參考方案。在接下來的研究工作中,還需對數據集進行擴充,豐富法蘭盤表面缺陷類別,對該模型做進一步的驗證;由于該模型在平均檢測精度方面還有提升空間,將嘗試對該模型做進一步的優化以提高平均檢測精度和檢測速度。