梁 程,薛建彬
(南京航空航天大學(xué)機(jī)電學(xué)院,江蘇 南京 210016)
表面缺陷一般是指產(chǎn)品表面局部物理或化學(xué)性質(zhì)不均勻的區(qū)域,如工件的劃痕、裂紋、毛邊和污點(diǎn)等[1]。表面缺陷的存在不僅影響產(chǎn)品美觀,還可能影響產(chǎn)品使用性能,甚至存在安全隱患。因此,在工業(yè)生產(chǎn)過程中應(yīng)及時(shí)檢測出產(chǎn)品所存在的表面缺陷并分析出缺陷產(chǎn)生的原因。
傳統(tǒng)的表面缺陷檢測采用人工目檢對工件進(jìn)行查驗(yàn),人工檢測存在著檢測精度不足和檢測效率低下等一系列問題。隨著工業(yè)自動化技術(shù)的發(fā)展,機(jī)器視覺設(shè)備逐漸代替人類進(jìn)行缺陷檢測工作,相比于人工目檢,基于機(jī)器視覺的表面缺陷檢測具有可靠性高、檢測準(zhǔn)確率高、檢測速度快以及綜合成本低等一系列優(yōu)點(diǎn),但也存在難以識別微小瑕疵等問題。近些年,隨著人工智能的發(fā)展,深度學(xué)習(xí)模型也在表面缺陷檢測領(lǐng)域取得成功,常用的深度學(xué)習(xí)目標(biāo)檢測模型已能夠滿足工業(yè)生產(chǎn)中缺陷檢測的精度要求,但是多數(shù)模型檢測速率達(dá)不到實(shí)時(shí)檢測要求。
近些年,工業(yè)物聯(lián)網(wǎng)迅速發(fā)展,物聯(lián)網(wǎng)技術(shù)通過傳感器進(jìn)行數(shù)據(jù)采集并傳輸?shù)皆贫诉M(jìn)行數(shù)據(jù)分析和邏輯控制,能夠很好地存儲分析生產(chǎn)過程中的關(guān)鍵數(shù)據(jù)。但隨著工業(yè)物聯(lián)網(wǎng)的不斷發(fā)展,傳感器所產(chǎn)生的數(shù)據(jù)量也海量爆炸,傳統(tǒng)云計(jì)算模式很難滿足實(shí)時(shí)檢測的要求?;谏鲜鰡栴},以邊緣計(jì)算模型為核心的面向網(wǎng)絡(luò)邊緣設(shè)備所產(chǎn)生數(shù)據(jù)計(jì)算的邊緣大數(shù)據(jù)處理應(yīng)運(yùn)而生,其與現(xiàn)有以云計(jì)算模型為核心的集中式大數(shù)據(jù)處理相結(jié)合,二者相輔相成,很好地解決了工業(yè)物聯(lián)網(wǎng)所存在的問題。Wang等[2]提出了一種基于云計(jì)算與邊緣計(jì)算協(xié)同的智能表面檢測系統(tǒng),將表面檢測計(jì)算任務(wù)部署到邊緣端,避免了數(shù)據(jù)泄露的風(fēng)險(xiǎn),同時(shí)保證了計(jì)算的實(shí)時(shí)性。尹子會等[3]提出了基于云計(jì)算與邊緣計(jì)算協(xié)同的變電站設(shè)備典型視覺缺陷檢測系統(tǒng),與傳統(tǒng)模式直接上傳到云端計(jì)算相比,傳輸量減少90%以上,同時(shí)檢測速率也有較大提高。上述研究將云計(jì)算與邊緣計(jì)算融合的模式和檢測行業(yè)相結(jié)合,取得不錯(cuò)的成績,但所采用的深度學(xué)習(xí)模型都需要采用多塊GPU進(jìn)行訓(xùn)練推理,對硬件成本要求極高。
本文提出一種基于邊緣計(jì)算的表面缺陷檢測系統(tǒng),通過基于深度學(xué)習(xí)框架的邊緣端嵌入式設(shè)備對生產(chǎn)產(chǎn)品進(jìn)行實(shí)時(shí)的表面缺陷檢測;同時(shí)對邊緣端和云端進(jìn)行調(diào)度和管理,搭建邊緣端和云端的數(shù)據(jù)通道將檢測關(guān)鍵信息上傳至云端。
傳統(tǒng)的表面缺陷檢測系統(tǒng)方案有2種,分別是本地計(jì)算和云計(jì)算。本地計(jì)算從圖像采集到圖像缺陷檢測,再到檢測結(jié)果分析全部在本地設(shè)備實(shí)現(xiàn),因此無需進(jìn)行網(wǎng)絡(luò)通信,不存在檢測延時(shí)的問題。但是由于檢測結(jié)果的數(shù)據(jù)存儲和計(jì)算都在本地進(jìn)行,數(shù)據(jù)存儲存在安全和隱私風(fēng)險(xiǎn),同時(shí)由于深度學(xué)習(xí)模型對本地設(shè)備硬件要求極高,檢測成本也會急劇上升。
使用云計(jì)算方案,傳感器等設(shè)備會將所有數(shù)據(jù)上傳至云端,隨后云端進(jìn)行數(shù)據(jù)處理、模型訓(xùn)練和數(shù)據(jù)計(jì)算等一系列工作,之后再將檢測結(jié)果返回至終端。云計(jì)算解決了本地計(jì)算數(shù)據(jù)存儲安全的問題,能夠更好地進(jìn)行大數(shù)據(jù)分析。但是在推理計(jì)算過程中,云計(jì)算數(shù)據(jù)需要在通過網(wǎng)絡(luò)進(jìn)行通信,造成極大的響應(yīng)時(shí)延。為了解決上述方案所存在的問題,本文提出了基于云-邊緣協(xié)同計(jì)算的表面缺陷檢測系統(tǒng)方案。該系統(tǒng)由終端設(shè)備、邊緣端設(shè)備和云端設(shè)備3部分組成,檢測系統(tǒng)總體方案如圖1所示。
圖1 基于云-邊緣協(xié)同計(jì)算的檢測系統(tǒng)總體方案
a.終端。終端設(shè)備為實(shí)時(shí)采集產(chǎn)品圖像的工業(yè)相機(jī),其不具備計(jì)算推理能力,主要功能為圖像采集和圖像預(yù)處理。終端設(shè)備與邊緣端設(shè)備通過以太網(wǎng)光纖進(jìn)行有線通信,將所采集到的圖像傳輸至邊緣端設(shè)備。
b.邊緣端。邊緣端設(shè)備選擇搭載AI芯片的嵌入式設(shè)備,部署輕量的深度學(xué)習(xí)模型,能夠滿足檢測實(shí)時(shí)性的要求,對檢測到的表面缺陷進(jìn)行及時(shí)報(bào)警。邊緣端設(shè)備配備數(shù)據(jù)存儲模塊和數(shù)據(jù)通信模塊,接收到終端所采集的圖像;部署邊緣端軟件平臺對應(yīng)用進(jìn)行管理和調(diào)度,同時(shí)完成與云端設(shè)備的通信。
c.云端。由于邊緣端為嵌入式設(shè)備,受硬件的性能與成本限制,僅能進(jìn)行輕量化模型的計(jì)算,而難以完成模型的訓(xùn)練,因此云端需要搭載高性能GPU處理器以完成模型的訓(xùn)練任務(wù)。同時(shí),云端設(shè)備搭載大數(shù)據(jù)存儲和數(shù)據(jù)通信模塊,接收邊緣端設(shè)備傳輸?shù)膱D像,部署邊緣管理平臺。
本文的研究重點(diǎn)在于邊緣端與云端,即云端邊緣端協(xié)同功能、通信功能和邊緣端表面缺陷檢測功能。
云-邊緣協(xié)同計(jì)算的表面缺陷檢測系統(tǒng)需要完成云端與邊緣端之間的調(diào)度和管理,同時(shí)還需提高邊緣端設(shè)備的可靠性、安全性和資源使用率。近年來,虛擬化技術(shù)Docker容器和Kubernetes容器編排引擎廣泛應(yīng)用于云計(jì)算與邊緣計(jì)算領(lǐng)域。Docker容器通過Linux系統(tǒng)中的CGroup和NameSpace系統(tǒng)隔離技術(shù)將應(yīng)用解耦為多個(gè)獨(dú)立的功能模塊,使得應(yīng)用部署的磁盤空間占用率更小,啟動速率更快;將上層應(yīng)用與底層的基礎(chǔ)架構(gòu)分離,能夠保證在不同的操作系統(tǒng)上運(yùn)行,其架構(gòu)如圖2所示。Kubernetes容器編排引擎用于對容器的部署、管理、擴(kuò)容以及運(yùn)維,通過資源操作入口APIServer組件里的應(yīng)用程序編程接口Restful API(application programming interface)完成各模塊的管理、通信以及控制,通過Kubelet組件完成對節(jié)點(diǎn)的管理和控制并與控制平面APIServer組件進(jìn)行數(shù)據(jù)交互,Kubernetes架構(gòu)如圖3所示。
圖2 Docker容器框架
圖3 Kubernetes框架
云-邊緣協(xié)同計(jì)算的表面缺陷檢測系統(tǒng)采用基于Kubernetes技術(shù)的KubeEdge平臺架構(gòu)。如圖4所示,KubeEdge平臺架構(gòu)分為云端、邊緣端和設(shè)備端3部分,通過將Kubernetes的功能擴(kuò)展部署到邊緣端完成云端與邊緣端設(shè)備之間的協(xié)同、調(diào)度和管理工作。
圖4 KubeEdge架構(gòu)
a.云端組件。云端設(shè)備部署Kubernetes控制平面,包含云端通信中心CloudHub組件、邊緣管理控制器和設(shè)備管理控制器。其中,CloudHub實(shí)質(zhì)為套接字服務(wù)器,負(fù)責(zé)完成與邊緣端設(shè)備EdgeHub的數(shù)據(jù)通信;邊緣管理控制器負(fù)責(zé)管理邊緣端設(shè)備,同時(shí)負(fù)責(zé)邊緣元數(shù)據(jù)在邊緣端和云端之間的同步;設(shè)備管理控制器負(fù)責(zé)管理設(shè)備,同時(shí)負(fù)責(zé)設(shè)備元數(shù)據(jù)的同步工作。
b.邊緣端組件。邊緣端設(shè)備主要包含邊緣端通信中心EdgeHub組件、Edged邊緣節(jié)點(diǎn)管理容器等組件。EdgeHub組件與CloudHub相對應(yīng),是一個(gè)套接字客戶端,用于負(fù)責(zé)接收云端的資源,同時(shí)將設(shè)備信息和缺陷圖像等數(shù)據(jù)傳輸至云端設(shè)備分析存儲;元數(shù)據(jù)管理器MetaManager組件用于通信中心和容器組件之心的信息處理,用于管理元數(shù)據(jù);設(shè)備孿生DeviceTwin組件通過事件總線和邊緣端通信中心同步設(shè)備端所采集到的數(shù)據(jù),同時(shí)管理和處理設(shè)備端的元數(shù)據(jù);邊緣容器管理模塊相當(dāng)于輕量化的Kubelet組件,主要用于在邊緣端部署容器,管理容器的生命周期。
云-邊緣融合計(jì)算的表面缺陷檢測系統(tǒng)中邊緣端與云端的數(shù)據(jù)通信主要包括圖像的傳輸、模型應(yīng)用的下發(fā),同時(shí)還包含云端和邊緣端的參數(shù)信息。如圖5所示,邊緣端和云端創(chuàng)建HTTP協(xié)議棧,在傳輸層之上提供TCP接口;同時(shí),在傳輸層上分別創(chuàng)建服務(wù)器代理和客戶端代理,監(jiān)聽和轉(zhuǎn)發(fā)相應(yīng)的請求,實(shí)現(xiàn)邊緣端和云端之間的定向雙工通信。通信的具體步驟為:
圖5 邊緣端云端通信流程
a.客戶端代理與服務(wù)器代理之間通過3次握手建立TCP連接。
b.客戶端代理通過TCP接口監(jiān)聽HTTP請求,接收到請求后將該請求轉(zhuǎn)發(fā)給相應(yīng)的(云端或邊緣端)服務(wù)器。
c.服務(wù)器代理接收到請求后根據(jù)請求進(jìn)行相應(yīng)操作,并發(fā)送答復(fù)給相應(yīng)的客戶端代理。
d.如果客戶端再次監(jiān)聽到HTTP請求,將從步驟b開始執(zhí)行。
常見的缺陷檢測算法可以劃分為以YOLO[4]為代表的一階段(one stage)網(wǎng)絡(luò)算法和以Faster R-CNN[5]為代表的二階段(two stage)網(wǎng)絡(luò)算法。二階段網(wǎng)絡(luò)在檢測中首先要生成候選框(region proposal)判斷區(qū)域內(nèi)是前景還是背景,隨后再進(jìn)行目標(biāo)的分類,此類算法檢測精度較高但檢測速度緩慢,往往難以滿足實(shí)時(shí)性的要求;而一階段網(wǎng)路則是將目標(biāo)檢測問題轉(zhuǎn)化為回歸問題,直接進(jìn)行預(yù)測缺陷的位置并進(jìn)行分類,此類算法不僅有著較好的檢測準(zhǔn)確率,同時(shí)檢測速度較快能夠很好地滿足實(shí)際應(yīng)用場景中對實(shí)時(shí)性的要求。YOLOv4算法模型由輸入端、主干特征提取網(wǎng)絡(luò)CSPDarknet53[6]、加強(qiáng)特征提取網(wǎng)絡(luò)SPP(spatial pyramid pooling)模塊[7]、路徑聚合網(wǎng)絡(luò)PANet(path aggregation network)模塊[8]和YOLO Head回歸預(yù)測網(wǎng)絡(luò)構(gòu)成,由于集成了許多算法技巧,YOLOv4檢測精度相比前代YOLOv3算法有了卓越的提升。但由于YOLOv4算法的主干特征提取網(wǎng)絡(luò)CSPDarknet結(jié)構(gòu)復(fù)雜,網(wǎng)絡(luò)的訓(xùn)練與推算對硬件要求高,難以部署到計(jì)算能力有限的邊緣嵌入式設(shè)備。本文從輕量化角度考慮,將YOLOv4算法的主干特征提取網(wǎng)絡(luò)CSPDarknet改為MobileNet網(wǎng)絡(luò),改進(jìn)后主干特征網(wǎng)絡(luò)的結(jié)構(gòu)如圖6所示。MobileNet網(wǎng)絡(luò)是Google針對嵌入式設(shè)備所提出的一種輕量化的神經(jīng)網(wǎng)絡(luò),無需價(jià)格昂貴的設(shè)備即可完成深度學(xué)習(xí)的訓(xùn)練與計(jì)算。
圖6 輕量化YOLOv4的網(wǎng)絡(luò)架構(gòu)
在表面缺陷檢測網(wǎng)絡(luò)訓(xùn)練的過程中,輕量化YOLOv4模型首先將采集到的缺陷圖像調(diào)整大小為416×416,在輸入端對原始圖像進(jìn)行數(shù)據(jù)增強(qiáng)并傳入MobileNet網(wǎng)絡(luò)進(jìn)行特征提取。通過SPP網(wǎng)絡(luò)增加特征網(wǎng)絡(luò)的感受野,通過PANet網(wǎng)絡(luò)進(jìn)行上下采樣和不同尺度的特征融合,最終將圖像劃分為13×13、26×26、52×52的特征網(wǎng)格,每個(gè)尺寸的網(wǎng)格都會生成9個(gè)先驗(yàn)框。隨后, YOLO Head回歸預(yù)測網(wǎng)絡(luò)對不同尺寸特征網(wǎng)格進(jìn)行位置、類別和置信度預(yù)測,并通過與真實(shí)值進(jìn)行對比通過損失函數(shù)不斷調(diào)整,整個(gè)檢測步驟如圖7所示。
圖7 缺陷檢測過程
改進(jìn)后的YOLOv4的損失函數(shù)分為3個(gè)部分,分別為位置損失、目標(biāo)分類損失和置信度損失。位置損失函數(shù)YOLOv4采用CIOU[9]作為損失函數(shù),相比之前的損失函數(shù)IOU,CIOU考慮到預(yù)測框和目標(biāo)框的重疊面積、中心距離和長寬比,同時(shí)還將預(yù)測框和目標(biāo)框的長寬比考慮入內(nèi),CIOU損失函數(shù)公式為:
(1)
(2)
b、bgt分別為預(yù)測框和目標(biāo)框的中心點(diǎn);ρ2為2個(gè)中心點(diǎn)之間的歐氏距離;c為能夠包含預(yù)測框和目標(biāo)框的最小閉包區(qū)域的對角線距離。其中:
(3)
(4)
w、wgt分別為預(yù)測框和目標(biāo)框的寬度;h、hgt分別為預(yù)測框和目標(biāo)框的高度。
置信度損失函數(shù)采用二元交叉熵?fù)p失函數(shù),分為有目標(biāo)置信度損失和無目標(biāo)置信度損失2部分,即
(5)
K×K為像特征提取后劃分的網(wǎng)格尺寸;M為每個(gè)網(wǎng)格所生成的先驗(yàn)框個(gè)數(shù);Ci為置信度得分;i為預(yù)測框和目標(biāo)框的IOU;λ為損失函數(shù)加權(quán)參數(shù);λcoord為最高權(quán)重;λnoobj為未探測到目標(biāo)時(shí)所取的最低權(quán)重。目標(biāo)分類損失函數(shù)對每一個(gè)類別計(jì)算二元交叉熵?fù)p失函數(shù)并求和,即
(6)
loss=losslocation+lossconfidence+lossclass
(7)
缺陷檢測模型訓(xùn)練的過程中,通過不斷減小損失函數(shù)的大小,即可使得目標(biāo)預(yù)測框不斷逼近真實(shí)框,提高檢測類別和置信度的準(zhǔn)確率。
印刷電路板(printed circuit board,PCB)是重要的電子部件,是電子元器件電氣連接的載體。隨著電子產(chǎn)品行業(yè)的快速發(fā)展,PCB電路板也不斷向高性能、高集成以及微元化方向演變,對PCB電路板進(jìn)行表面缺陷檢測也面臨著巨大的挑戰(zhàn)[10]。本文選取PCB電路板裸板的表面缺陷作為實(shí)際案例,檢測系統(tǒng)的可行性。選用北京大學(xué)智能機(jī)器人開放實(shí)驗(yàn)室發(fā)布的PCB缺陷數(shù)據(jù)集,該數(shù)據(jù)集包含漏孔、鼠咬、斷路、短路、毛刺和余銅6種典型缺陷[11]。
基于邊緣計(jì)算的表面缺陷檢測系統(tǒng)需要邊緣端設(shè)備具有一定的深度學(xué)習(xí)計(jì)算能力,可以完成輕量化深度學(xué)習(xí)模型的實(shí)時(shí)性檢測,同時(shí)能夠與云端進(jìn)行通信?;谛枨?,硬件選用為:NVIDA Jetson Nano開發(fā)板,CPU為128-core Maxwell,GPU為四核ARM A57 @ 1.43 GHz,操作系統(tǒng)為Ubuntu18.04,環(huán)境為Python3.6.13,部署Tensorflow-gpu1.13.2和Keras2.1.5深度學(xué)習(xí)框架,配備CUDA10.0并行計(jì)算架構(gòu)和cuDNN7.4.1.5版深度學(xué)習(xí)加速庫,同時(shí)擴(kuò)展SIM7600G-H通信模塊,從而實(shí)現(xiàn)邊緣端設(shè)備與云端的數(shù)據(jù)通信。
云端設(shè)備相比邊緣端設(shè)備有更高的算力,能夠更塊地完成深度學(xué)習(xí)模型算法的訓(xùn)練。本文選取的云端設(shè)備CPU為Intel(R) Core(TM) i7-9750H 2.6 GHz處理器,內(nèi)存16 GB,GPU為NVIDA GeForce GTX 1660 Ti 6 GB GDDR6,顯存為6 GB。操作系統(tǒng)與邊緣端設(shè)備同為Ubuntu18.04,實(shí)驗(yàn)運(yùn)行的環(huán)境為Python3.6.13,深度學(xué)習(xí)的框架是Tensorflow-gpu1.13.2和Keras2.1.5,配備CUDA10.0并行計(jì)算架構(gòu)和cuDNN7.4.1.5版深度學(xué)習(xí)加速庫。
設(shè)置輕量化YOLOv4的訓(xùn)練批次大小為16,動量參數(shù)為0.9,學(xué)習(xí)率為0.001。在訓(xùn)練的過程中,首先凍結(jié)主干網(wǎng)絡(luò)層進(jìn)行訓(xùn)練,進(jìn)行50輪次訓(xùn)練,對分類細(xì)節(jié)進(jìn)行識別學(xué)習(xí),提高檢測精度;隨后設(shè)置學(xué)習(xí)率為0.000 1,解凍主干網(wǎng)絡(luò)層再訓(xùn)練100輪次,對網(wǎng)絡(luò)進(jìn)行微調(diào)處理。
如表1所示,基于云邊緣協(xié)同計(jì)算的表面缺陷檢測系統(tǒng)數(shù)據(jù)響應(yīng)時(shí)間僅為32 ms,與本地計(jì)算方案響應(yīng)時(shí)間基本持平,遠(yuǎn)低于云計(jì)算模式的響應(yīng)時(shí)間。
表1 數(shù)據(jù)傳輸響應(yīng)時(shí)間
為評估表面缺陷算法的效果,本文選取輕量化YOLOv4算法、 YOLOv4算法、YOLOv3算法和Faster R-CNN算法4種網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練檢測;同時(shí),以模型的檢測精度、檢測速度以及模型大小作為評判標(biāo)準(zhǔn)。最終結(jié)果如表2所示,輕量化YOLOv4算法的mAP值分別為96.41%,略低于改進(jìn)前的YOLOv4模型,優(yōu)于其他模型;輕量化YOLOv4推理速度達(dá)到4.7 幀/s,遠(yuǎn)快于其他3種模型;同時(shí),輕量化YOLOv4的模型大小僅為53 MB,遠(yuǎn)小于其他模型。結(jié)果說明,輕量化YOLOv4有較好的檢測精度,能夠達(dá)到實(shí)時(shí)檢測能夠更好地在邊緣端嵌入式設(shè)備上運(yùn)行。
表2 各模型檢測結(jié)果比較
本文針對現(xiàn)有表面缺陷檢測系統(tǒng)數(shù)據(jù)利用率低、檢測實(shí)時(shí)性低和檢測模型大等問題,提出了一種基于邊緣計(jì)算的表面缺陷檢測系統(tǒng),在云端設(shè)備通過改進(jìn)后的YOLOv4算法模型進(jìn)行訓(xùn)練后,將其部署至邊緣端的嵌入式設(shè)備,并搭建云端邊緣端之間協(xié)同。實(shí)驗(yàn)表明,提出的云-邊緣協(xié)同計(jì)算的表面缺陷檢測系統(tǒng)具有檢測實(shí)時(shí)性好、檢測精度較高和模型易部署等優(yōu)勢。后續(xù)會繼續(xù)開發(fā)云端功能,能夠更好地實(shí)現(xiàn)云端信息的數(shù)據(jù)交匯,分析出生產(chǎn)中所存在的問題。