汪國平,胡 博,陳仲生,,侯幸林
基于邊緣計(jì)算改進(jìn)的MobileNetV1-SSD表面缺陷視覺檢測方法
汪國平1,胡 博2,陳仲生1,3,侯幸林3
(1. 湖南工業(yè)大學(xué) 電氣與信息工程學(xué)院,湖南 株洲 412007;2. 南京理工大學(xué) 瞬態(tài)物理國家重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210094;3. 常州工學(xué)院 汽車工程學(xué)院, 江蘇 常州 213032)
表面缺陷檢測是產(chǎn)品質(zhì)檢的重要工序之一,現(xiàn)有邊緣端視覺檢測大多存在識別率低、模型結(jié)構(gòu)復(fù)雜、部署困難、模型推理實(shí)時性差等問題。為此,本文以STM32H747微控制器為邊緣設(shè)備,基于MobileNetV1-SSD輕量化模型,研究了一種融合CBAM注意力機(jī)制的表面缺陷視覺檢測方法。首先,融合CBAM注意力機(jī)制,添加在最后一層的特征提取網(wǎng)絡(luò)之后,使缺陷目標(biāo)在檢測模型中的特征表達(dá)能力得到增強(qiáng),模型在僅增加少量的參數(shù)量的基礎(chǔ)上提升模型的檢測準(zhǔn)確率;其次,對CBAM-MobilenetV1-SSD模型進(jìn)行預(yù)處理;最后,采用X-CUBE-AI工具包在STM32H747微控制器中實(shí)現(xiàn)了模型的移植和部署。通過對比實(shí)驗(yàn)表明,融合CBAM注意力機(jī)制的模型mAP達(dá)到83.75%,精度比原算法提高2.75%,參數(shù)量僅為1.67M,模型大小為622KB,且部署在邊緣設(shè)備對軟包鋰電池表面缺陷檢測精度有顯著提升。
表面缺陷檢測;邊緣計(jì)算;STM32微控制器;MobileNetV1-SSD;CBAM
在工業(yè)制造中,產(chǎn)品質(zhì)量對用戶和制造商至關(guān)重要。產(chǎn)品表面缺陷的存在(如劃痕、凹陷、氣泡等)可能嚴(yán)重影響產(chǎn)品的外觀和功能。因此,進(jìn)行有效的表面缺陷檢測至關(guān)重要。
近年來,基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的深度學(xué)習(xí)方法在產(chǎn)品表面缺陷檢測領(lǐng)域受到廣泛關(guān)注和應(yīng)用,并取得了顯著的成果。目前,基于深度學(xué)習(xí)的目標(biāo)檢測方法第一類是以 RCNN、Faster R-CNN為代表的兩階段目標(biāo)檢測。鄭亞睿[1]等在Faster R-CNN基礎(chǔ)上引入雙動態(tài)頭的金字塔網(wǎng)絡(luò),應(yīng)用于鋼材表面缺陷檢測。第二類是以 YOLO、SSD為代表的直接進(jìn)行位置回歸的目標(biāo)檢測模型。葛釗明等人[2]基于YOLOv5網(wǎng)絡(luò)引入卷積注意力模塊,用于鋰電池極片缺陷檢測。Li等人[3]改進(jìn)了SSD的骨干網(wǎng)絡(luò),并提出了一種MobileNet-SSD 網(wǎng)絡(luò),用于檢測罐裝密封容器的表面缺陷。
以上研究利用不同的神經(jīng)網(wǎng)絡(luò)模型來實(shí)現(xiàn)對產(chǎn)品表面的缺陷檢測并取得了較好的效果。但實(shí)際上由于邊緣端視覺檢測大多存在識別率低、模型結(jié)構(gòu)復(fù)雜、部署困難、模型推理實(shí)時性差等問題,針對邊緣計(jì)算端[4]的缺陷檢測的研究甚少。因此,本文設(shè)計(jì)了一種融合卷積塊注意力機(jī)制(CBAM) 的 MobilenetV1-SSD檢測模型,以軟包鋰電池表面缺陷為實(shí)驗(yàn)對象,通過構(gòu)建輕量化的MobilenetV1-SSD模型,在此基礎(chǔ)上通過引入CBAM 注意力機(jī)制來增強(qiáng)模型對缺陷目標(biāo)的特征表達(dá)能力,進(jìn)而提高對軟包鋰電池表面缺陷檢測精度。
MobileNetV1[5]是 Google 公司 2017 年發(fā)布的用于移動端的輕量化深度學(xué)習(xí)網(wǎng)絡(luò),其核心思想是運(yùn)用深度可分離卷積和倒置殘差結(jié)構(gòu),實(shí)現(xiàn)了高效的特征提取和信息處理,大大降低了計(jì)算量和參數(shù)數(shù)量。同時,MobileNetV1在有限計(jì)算資源的情況下仍保持較高的準(zhǔn)確性和性能表現(xiàn)。
SSD[6]網(wǎng)絡(luò)是一種單階段目標(biāo)檢測網(wǎng)絡(luò),它基于VGG16骨干網(wǎng)絡(luò),通過金字塔特征提取結(jié)構(gòu)實(shí)現(xiàn)不同大小特征圖的分類和回歸。采用金字塔特征提取結(jié)構(gòu)通過不同卷積層和尺度的特征圖進(jìn)行分類和回歸,能更好地適應(yīng)小目標(biāo)的檢測需求。SSD網(wǎng)絡(luò)具有更快的運(yùn)算速度和更低的網(wǎng)絡(luò)復(fù)雜度,因而更適合于輕量化應(yīng)用。為此,本文選取SSD網(wǎng)絡(luò)作為目標(biāo)分類和邊界框回歸任務(wù)的主要框架,同時采用MobileNetV1作為骨干網(wǎng)絡(luò),替代原有的VGG16網(wǎng)絡(luò),構(gòu)建MobileNetV1-SSD輕量化模型。MobileNetV1網(wǎng)絡(luò)的計(jì)算量約為VGG網(wǎng)絡(luò)的1/30,從而明顯壓縮了缺陷檢測網(wǎng)絡(luò)模型。
在采用輕量化網(wǎng)絡(luò)技術(shù)后,根據(jù)MobileNetV1-SSD實(shí)驗(yàn)結(jié)果可知模型的精度有小幅度的下降。為了解決這個問題,本文考慮在輕量化網(wǎng)絡(luò)模型中融合CBAM注意力機(jī)制,使模型更加關(guān)注重要的特征,模型在僅增加少量的參數(shù)量的基礎(chǔ)上提升模型的檢測準(zhǔn)確率,從而提高模型的表現(xiàn)和泛化能力。CBAM[7]是一種用于圖像分類的注意力機(jī)制,可以有效地提高卷積神經(jīng)網(wǎng)絡(luò)的性能。其核心思想是將注意力機(jī)制嵌入到CNN中,以使CNN可以自適應(yīng)地選擇圖像中最具有代表性的區(qū)域并進(jìn)行更好的分類,給原本沒有注意力機(jī)制的模型,同時加入通道與空間上的注意力機(jī)制。其整體結(jié)構(gòu)原理如圖1所示。
圖1 CBAM注意力機(jī)制整體結(jié)構(gòu)圖
CBAM主要包括兩個模塊:通道注意力模塊和空間注意力模塊。通道注意力模塊主要關(guān)注通道維度上的特征,以適應(yīng)不同通道之間的重要性差異,其模塊結(jié)構(gòu)原理如圖2所示。通道注意力模塊旨在學(xué)習(xí)特征圖中不同通道之間的關(guān)系。它通過兩個步驟來計(jì)算通道注意力:全局平均池和共享全連接層。首先,通過全局平均池化操作,對每個通道的特征圖進(jìn)行全局平均池化,得到通道維度上的特征描述。然后,將這些描述送入一個共享全連接層來計(jì)算每個通道的權(quán)重,形成了通道注意力圖M,這個通道注意力圖包含了每個通道在特征圖中的重要性信息,權(quán)重值表示了每個通道對于整個特征圖的重要程度。最終,這個通道注意力圖會被應(yīng)用到原始的特征圖上對不同通道的特征進(jìn)行加權(quán),以增強(qiáng)有用的通道特征。
圖2 通道注意力模塊結(jié)構(gòu)圖
空間注意力模塊則側(cè)重于圖像中不同空間位置之間的關(guān)系。通過對圖像不同位置的特征進(jìn)行加權(quán)來強(qiáng)調(diào)重要的空間區(qū)域,以增強(qiáng)模型對物體的空間結(jié)構(gòu)和布局的理解,其模塊的工作原理如圖 3所示??臻g注意力模塊旨在學(xué)習(xí)特征圖在空間維度上的重要性分布。它主要通過兩個步驟來計(jì)算空間注意力:使用最大池化和最大值池化。首先,對于每個通道,空間注意力模塊分別對特征圖進(jìn)行最大值池化和平均值池化操作,得到每個位置上的最大值和平均值信息。接著,這些信息被拼接在一起并送入一個卷積層,生成一個空間注意力圖M。這個注意力圖會乘以原始的特征圖,強(qiáng)調(diào)空間上重要的特征,抑制不重要的部分。
圖3 空間注意力模塊結(jié)構(gòu)圖
綜上所述,CBAM注意力機(jī)制的計(jì)算公式如下:
由于考慮到STM32H747邊緣設(shè)備的存儲與計(jì)算資源有限,需要限制模型的大小,因此本文不考慮將在每層卷積層之后添加注意力機(jī)制模塊,而只是將注意力機(jī)制模塊只添加在最后一層的特征提取網(wǎng)絡(luò)之后。首先對模型的輸入通道進(jìn)行全局平均池化和全局最大池化操作,獲取通道特征的全局信息。然后設(shè)置兩個全連接層的通道共享率為8和1,繼而得到維度大小為(Batch, 1, 1, 16)和(Batch, 1, 1, 64)的兩層共享全連接層,最后傳入 Sigmoid激活函數(shù)生成每個通道的權(quán)重值,最終將權(quán)重值乘到每個通道的特征圖上,達(dá)到增強(qiáng)重要通道特征的效果,以提高模型識別的精度。使得模型在僅增加少量的參數(shù)量的基礎(chǔ)上提升模型的檢測準(zhǔn)確率。
將CBAM-Mobilenetv1-SSD缺陷檢測模型移植到STM32H74微控制器之前,需要在PC 端設(shè)備對其進(jìn)行預(yù)處理,其流程如圖4所示。PC 端的預(yù)處理步驟包括模型訓(xùn)練、模型量化[8]和模型轉(zhuǎn)換,量化后輸出的.tflit文件即是STM32可加載的網(wǎng)絡(luò)模型。
圖4 模型預(yù)處理流程圖
為了在STM32H747微控制器上部署量化后的CBAM-Mobilenetv1-SSD缺陷檢測模型,本文選擇采用X-CUBE-AI工具[9]。它支持快速自動導(dǎo)入流行深度學(xué)習(xí)框架(如Keras,TensorFlow-Lite,Caffe等)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò),將其換為適用STM32的優(yōu)化代碼,實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型向可移植C模型的精確轉(zhuǎn)換,并優(yōu)化生成的庫以減少內(nèi)存占用。
在STM32H747微控制器上部署CBAM-MobileNetV1-SSD缺陷檢測模型的流程如圖5所示。使用X-CUBE-AI 工具箱對 TFLite 模型進(jìn)行轉(zhuǎn)換,得到預(yù)處理后CBAM-Mobilenetv1-SSD模型的大小僅有622KB、占用 RAM 大小僅為312KB,完全滿足STM32H747計(jì)算及存儲資源要求。
圖5 CBAM-MobileNetV1-SSD模型部署流程圖
CBAM-MobileNetV1-SSD模型轉(zhuǎn)化生成的C代碼包括network.c、network.h、network_data.c、network_data.h、network_data_param.c和network_data_param.h,其中network.c包含了神經(jīng)網(wǎng)絡(luò)的初始化、前向傳播函數(shù)和其他相關(guān)函數(shù);network.h文件包含了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)定義、函數(shù)聲明和常量定義;network_data.c和 network_data.h文件包含了神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置數(shù)據(jù);network_data_params.c和network_data_params.h包含了部署轉(zhuǎn)換后神經(jīng)網(wǎng)絡(luò)模型所需的數(shù)據(jù)和參數(shù)定義。
最后,將上述這些數(shù)據(jù)和參數(shù)嵌入到STM32H747微控制器的代碼中,即可實(shí)現(xiàn)CBAM-Mobilenetv1-SSD缺陷檢測模型的推理,無需在運(yùn)行時訪問外部數(shù)據(jù)文件,從而實(shí)現(xiàn)了視覺檢測的邊緣檢測。
本文針對兩類軟包鋰電池表面缺陷:劃痕和凹坑,人工制作軟包鋰電池表面缺陷數(shù)據(jù)集,全部缺陷圖像數(shù)量共有2000張,隨機(jī)選取1500張圖像作為訓(xùn)練集,剩余500張作為測試集。PC端計(jì)算環(huán)境為 Inter i5 CPU、Nvidia GTX2080GPU、8 GB 內(nèi)存、Python3.8 及 Tensorflow2.83 框架。
在訓(xùn)練過程中,選取 bath_size = 64、 epoc= 500,預(yù)測框 IOU 設(shè)置為 0.4,NMS 設(shè)置為 0.5,學(xué)習(xí)率設(shè)為 0.001,優(yōu)化器選擇 Adam 算法。
CBAM-MobileNetV1-SSD和MobileNetV1-SSD模型的訓(xùn)練及驗(yàn)證過程的損失函數(shù)值隨迭代次數(shù)變化如圖6所示,可以看出CBAM-MobileNetV1-SSD模型訓(xùn)練396個epoch達(dá)到收斂,且訓(xùn)練與驗(yàn)證的最小損失值分別為1.7023和0.964,而MobileNetV1-SSD模型訓(xùn)練172個epoch達(dá)到收斂,且訓(xùn)練與驗(yàn)證的最小損失值分別為1.8794和1.4231。分析比較可知CBAM-MobileNetV1-SSD模型相比較于MobileNetV1-SSD模型在訓(xùn)練和驗(yàn)證時都表現(xiàn)出更低的損失值,具有更好的收斂性能和泛化能力,這表明本文的融合CBAM注意力機(jī)制改進(jìn)方案是可行的。
圖6 不同模型的訓(xùn)練與驗(yàn)證損失值曲線對比圖
為了評價表面缺陷檢測的性能,本文選擇目標(biāo)識別任務(wù)中常用的平均準(zhǔn)確率均值(mAP:mean average precision) 作為評估指標(biāo)。平均準(zhǔn)確率均值指軟包鋰電池表面缺陷“defect”( 劃痕、凹坑) 的平均檢測精度,計(jì)算表達(dá)式如下。同時使用推理時間作為檢測速度評估的指標(biāo),模型的大小及參數(shù)量作為裁剪壓縮評估的指標(biāo)。
式中:表示準(zhǔn)確率;表示召回率;表示預(yù)測為正,實(shí)際為正;表示預(yù)測為正,實(shí)際為負(fù);表示預(yù)測為負(fù),實(shí)際為正;為單個類別的平均精準(zhǔn)率;表示個類別的平均值。
CBAM-MobileNetV1-SSD和MobileNetV1-SSD模型的召回率如圖 7所示,CBAM-MobileNetV1-SSD模型檢測內(nèi)容 “defect”在召回率達(dá)到0.8 時有下降的趨勢,而MobileNetV1-SSD模型檢測內(nèi)容“defect”在召回率達(dá)到0.75時就已經(jīng)有下降的趨勢。這表明融合CBAM注意機(jī)制在達(dá)到相同的準(zhǔn)確率條件下召回率更高,也就是模型檢測出的正例占比全部的正例更大,具有更好的檢測性。
圖7 不同模型召回率對比圖
模型的大小及性能如表 1 所示,可以看出CBAM-MobileNetV1-SSD模型的mAP值達(dá)到83.75%,比MobileNetV1-SSD模型提高了2.75%,且其參數(shù)量相比MobileNetV1-SSD模型僅有少量的增加。分析比較可知融合CBAM注意力機(jī)制,模型在僅增加少量的參數(shù)量的基礎(chǔ)上具有更好模的檢測精度。
表1 模型大小及性能對比
表面缺陷檢測平臺如果圖8所示,由傳送平臺、夾具、環(huán)形光源、光源控制器和相機(jī)組成。軟包鋰電池通過電機(jī)驅(qū)動傳送到相機(jī)正下方,環(huán)形光源為相機(jī)連續(xù)采集提供良好的圖像質(zhì)量。相機(jī)采用OV5640攝像頭在線采集軟包鋰電池表面圖像,接著對圖像進(jìn)行預(yù)處理及特征提取,再調(diào)用部署在STM32H747的缺陷檢測深度學(xué)習(xí)模型,對獲取的產(chǎn)品表面圖像進(jìn)行識別;最后,在LCD顯示屏顯示產(chǎn)品表面缺陷的的檢測結(jié)果。
圖8 表面缺陷檢測平臺
圖9 待檢測軟包鋰電池
因此,本次實(shí)驗(yàn)采用如圖9所示的待檢測軟包鋰電池,該軟包鋰電池表面有兩個缺陷,分別是劃痕和凹坑。在STM32H747微控制器上分別運(yùn)行部署成功的CBAM-MobileNetV1-SSD和MobileNetV1-SSD模型,對軟包鋰電池表面進(jìn)行實(shí)時缺陷檢測實(shí)驗(yàn)。
本次實(shí)驗(yàn)中STM32H747運(yùn)行的CBAM-MobileNetV1-SSD和MobileNetV1-SSD模型對軟包鋰電池表面缺陷檢測實(shí)驗(yàn)結(jié)果如圖10所示,兩種模型對凹坑和劃痕這兩種缺陷均能準(zhǔn)確識別出來,CBAM-MobileNetV1-SSD識別的凹坑和劃痕的置信度分別為0.83和0.99,而MobileNetV1-SSD識別的凹坑和劃痕的置信度分別為0.58和0.63,分析本次實(shí)驗(yàn)結(jié)果可知,CBAM-MobileNetV1-SSD模型部署在邊緣設(shè)備對軟包鋰電池表面缺陷檢測精度有明顯提升。
(a) CBAM-MobileNetV1-SSD檢測結(jié)果
(b) MobileNetV1-SSD檢測結(jié)果
圖10 軟包鋰電池表面缺陷檢測結(jié)果對比圖
本文以STM32H747微控制器為核心,基于MobileNetV1-SSD輕量化模型,研究了一種融合CBAM注意力機(jī)制的表面缺陷視覺檢測方法,主要工作包括:1)采用融合CBAM注意力機(jī)制的方法對原算法模型的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化,檢測精度提升了2.75%;2)對融合CBAM注意力機(jī)制前后的模型算法進(jìn)行了對比實(shí)驗(yàn)驗(yàn)證,結(jié)果表明改進(jìn)算法的模型具有更好的收斂性能和泛化能力;3)在STM32H747微控制器中實(shí)現(xiàn)了模型的移植和部署,并搭建檢測平臺進(jìn)行實(shí)驗(yàn)對比測試與驗(yàn)證,最終實(shí)驗(yàn)結(jié)果表明融合CBAM注意力機(jī)制的MobileNetV1-SSD模型對軟包鋰電池表面缺陷的邊緣側(cè)檢測精度有明顯的提高。
[1] 鄭亞睿, 蔣三新. 基于雙動態(tài)頭Sparse R-CNN的表面缺陷檢測算法[J]. 儀表技術(shù)與傳感器, 2023(5): 97-105, 111.
[2] 葛釗明, 胡躍明. 基于改進(jìn)YOLOv5的鋰電池極片缺陷檢測[J]. 激光雜志, 2023, 44(2): 25-29.
[3] Li Y T, Huang H S, Xie Q S, et al. Research on a surface defect detection algorithm based on MobileNet-SSD[J]. App Sci, 2018, 8(9): 1678.
[4] 吳瑞東, 劉冰, 付平, 等. 應(yīng)用于極致邊緣計(jì)算場景的卷積神經(jīng)網(wǎng)絡(luò)加速器架構(gòu)設(shè)計(jì)[J]. 電子與信息學(xué)報(bào), 2023, 45(6): 1933-1943.
[5] 畢鵬程, 羅健欣, 陳衛(wèi)衛(wèi). 輕量化卷積神經(jīng)網(wǎng)絡(luò)技術(shù)研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2019, 55(16): 25-35.
[6] Wang L H, Shi W P, Tang Y H, et al. Transfer Learning-Based lightweight SSD model for detection of pests in citrus[J]. Agronomy, 2023, 13(7): 1710.
[7] Chen L J, Yao H D, Fu J Y, et al. The classification and localization of crack using lightweight convolutional neural network with CBAM[J]. Eng Struct, 2023, 275, Part B: 115291.
[8] 楊春, 張睿堯, 黃瀧, 等. 深度神經(jīng)網(wǎng)絡(luò)模型量化方法綜述[J]. 工程科學(xué)學(xué)報(bào), 2023, 45(10): 1613-1629.
[9] Lucan O I. Seiculescu C C?leanu C D. A brief review of deep neural network implementations for ARM Cortex-M processor[J]. Electronics, 2022, 11(16): 2545.
Edge computing-based enhancement of mobileNetV-SSD for surface defect visual detection
Wang Guoping1, Hu Bo2, Chen Zhongsheng1,3, Hou Xinlin3
(1. College of Electrical and Information Engineering, Hunan University of Technology, Zhuzhou 412007, Hunan China; 2. National Key Lab. of Transient Physics, Nanjing University of Science and Technology, Nanjing 210094, Jiangsu China; 3. College of Automotive Engineering, Changzhou Institute of Technology, Changzhou 213032, Jiangsu China)
TM930.9
A
1003-4862(2024)03-0009-06
2023-06-27
國家自然科學(xué)基金項(xiàng)目(62101074)
汪國平(1997- ),男,碩士研究生,研究方向:嵌入式機(jī)器視覺、產(chǎn)品缺陷檢測;E-mail:1106766548@qq.com
陳仲生(1977- ),男,教授,博士,研究方向:狀態(tài)監(jiān)控與故障診斷、工業(yè)機(jī)器視覺。E-mail:chenzs@czu.cn