王紅梅
(山西工程技術(shù)學(xué)院 大數(shù)據(jù)與信息工程科學(xué)系,山西 陽泉045000)
3D打印技術(shù)誕生于上世紀(jì)八十年代,該項技術(shù)能根據(jù)數(shù)字化信息建立3D模型,以此創(chuàng)建出具體的物理對象[1].在過去十年間,桌面3D打印機(jī)已經(jīng)逐漸地走進(jìn)人們的工作和日常生活,受到諸如專業(yè)設(shè)計師和制造愛好者的歡迎.3D打印融合了多種不同的技術(shù),其中熔絲制造是最為主流的3D打印技術(shù).3D打印技術(shù)相對于傳統(tǒng)制造方法在制造和快速成型方面具有優(yōu)勢,其最大的優(yōu)點是減少浪費,能夠在短時間內(nèi)創(chuàng)建復(fù)雜和詳細(xì)的幾何結(jié)構(gòu).然而,3D打印也存在一系列的挑戰(zhàn),阻礙了這項技術(shù)的大規(guī)模演進(jìn)發(fā)展.由于存在模型大小、復(fù)雜性差異等因素,3D打印的過程可能會持續(xù)數(shù)個小時至幾天不等.此期間很可能會出現(xiàn)諸如噴嘴堵塞等故障,影響打印成品的質(zhì)量,甚至損壞3D打印機(jī)機(jī).因此,如何在打印期間進(jìn)行實時的打印機(jī)故障或打印成品缺陷檢測是亟待解決的關(guān)鍵問題.對此,本文搭建了3D打印缺陷檢測系統(tǒng),設(shè)計了基于人工智能(Artificial Intelligence,AI)算法的3D打印缺陷檢測方法.
所使用的系統(tǒng)結(jié)構(gòu)如圖1所示,所使用的3D 打印機(jī)為Prusa i3 MK3S+.攝像頭可以捕獲實時的打印對象的圖像,通過在捕獲圖像A和渲染圖像B中對打印對象進(jìn)行分割,可以得到對應(yīng)的分割掩碼s(A)和s(B),以此將誤差估計簡化為兩個稀疏矩陣元素之間的異或操作,即:
圖1 系統(tǒng)結(jié)構(gòu)
D=s(A)⊕s(B)
(1)
當(dāng)實際視圖和預(yù)期視圖之間存在差異,D中元素的值為真,以此表明存在錯誤.基于D,可定義誤差度量:
E=ND/Ntotal
(2)
其中:ND是D中元素值為真的像素數(shù)量,Ntotal是完整對象的渲染蒙版中的前景像素數(shù)量.
在進(jìn)行打印對象分割的過程中,攝像頭使用Bayer圖像色彩還原技術(shù)[2]將圖像的顏色空間轉(zhuǎn)化到RGB(Red Green Blue)空間中,即每個像素的顏色由紅色、綠色和藍(lán)色三種強(qiáng)度表示.雖然這三種顏色可以模擬大多數(shù)人類可感知的顏色,但這種顏色表示方式并不適合用于對于彩色對象的分割和檢測.因此需要將顏色空間從RGB轉(zhuǎn)換至HSV(Hue,Saturation and Value).
給定圖像中位置x的像素,假設(shè)其RGB值為rx、gx和bx,首先對這些值進(jìn)行歸一化,即:
(3)
(4)
(5)
隨后計算最大強(qiáng)度Cmax、最小強(qiáng)度Cmin及其差值Δ,分別如下所示:
(6)
(7)
Δ=Cmax-Cmin
(8)
結(jié)合上述各式,HSV的計算方式如下所示:
(9)
(10)
vx=Cmax
(11)
將捕獲圖像轉(zhuǎn)換到HSV空間后,只需保留色相在Ht=[hmin,hmax]范圍內(nèi)的像素.另外,將飽和度和明度小于對應(yīng)閾值TS和TV的像素去除,這些像素由于光照不足而沒有包含太多信息.因此,分割掩碼中位置為x的像素值的計算方式如下所示:
(12)
當(dāng)光線從一種介質(zhì)進(jìn)入另一種介質(zhì)時,部分光會被透射,部分會被吸收,還有部分會被反射.將被透射、吸收和反射的光的比例分別表示定義為透射率T、吸收率A和反射率R:
T=IT/I0
(13)
A=IA/I0
(14)
R=IR/I0
(15)
其中:I0是介質(zhì)表面接收到的輻射強(qiáng)度,IT是通過介質(zhì)傳播的強(qiáng)度,IA是介質(zhì)吸收的強(qiáng)度,IR是介質(zhì)反射的強(qiáng)度.
由于不同的打印材料具有不同的輻射特性,因此在渲染給定媒體的外觀時必須對透射率T、吸收率A和反射率R進(jìn)行建模.
在打印對象表面上的給定位置處被吸收、透射和反射的輻射強(qiáng)度的量取決于表面與光源之間的入射角以及表面與攝像頭之間的角度.此處采用雙向散射分布函數(shù)(Bidirectional scattering distribution function,BSSRDF)來捕獲光線與打印對象相互作用的特性.BSSRDF將給定表面點的出射輻射與另一點接收到的入射輻照度相關(guān)聯(lián),即:
dLr(xr,ωr)=S(xi,ωi,xr,ωr)dEi(xi,ωi)
(16)
其中:Ei(xi,ωi)是在表面點xi接收到的來自方向ωi的輻照度,Lr(xr,ωr)是在表面點xr向方向ωr發(fā)射的輻亮度.
除了獲得準(zhǔn)確的輻射模型外,還需要一個模擬3D打印機(jī)創(chuàng)建的表面微結(jié)構(gòu)的過程模型.最后,必須知道所有場景元素(例如光源、打印對象、攝像頭和底板)的位置.
使用仿射變換矩陣P將頂點v投影到圖像平面,即:
u=Pv
(17)
其中:u是二維圖像平面的點,仿射變換矩陣P的定義如下所示:
(18)
其中:f是相機(jī)的焦距,(Δx,Δy)是圖像坐標(biāo),α是縮放因子,β是剪切系數(shù).仿射變換矩陣P定義了三維點到二維點的透視投影.
為了使世界坐標(biāo)系與打印機(jī)的坐標(biāo)系重合,需要預(yù)先估計相機(jī)參數(shù),即進(jìn)行攝像頭校準(zhǔn).對此,定義了一個新的坐標(biāo)系,該坐標(biāo)系由四個角標(biāo)記的位置構(gòu)成,使用角標(biāo)記的位置來確定打印對象的相對位置.這樣一來,能得到一個明確的坐標(biāo)系,很容易地找到相對于打印對象和攝像機(jī)的坐標(biāo)系.
當(dāng)對象表面和光源之間的角度以及對象表面和觀察者之間的角度都接近45度,且光源和觀察者之間的方向差很小時,就可以盡可能多地捕獲從打印對象反射的光的漫射分量.對此,需要盡可能將光源放置在靠近攝像頭的位置,同時兩者都相對于構(gòu)建板呈大約45度的角度.
為了對模型進(jìn)行訓(xùn)練,需要收集有缺陷打印對象的圖像.通過改變相關(guān)的打印參數(shù),生成了具有缺陷的打印對象,收集了500張相應(yīng)打印對象的圖像作為檢測器的訓(xùn)練數(shù)據(jù)集.隨后,應(yīng)用了數(shù)據(jù)增強(qiáng)技術(shù)以增加訓(xùn)練數(shù)據(jù)集中實例的數(shù)量.數(shù)據(jù)增強(qiáng)是一種基于現(xiàn)有數(shù)據(jù)集來創(chuàng)建新合成數(shù)據(jù)的技術(shù)[3].對于原始訓(xùn)練集上的每幅圖像,本文應(yīng)用的數(shù)據(jù)增強(qiáng)技術(shù)有五張,分別是圖像縮放(將圖像縮小到原圖的一半大小)、水平翻轉(zhuǎn)、隨機(jī)裁剪、90 度旋轉(zhuǎn)和隨機(jī)亮度調(diào)整.將這5 種數(shù)據(jù)增強(qiáng)技術(shù)應(yīng)用于500張原始訓(xùn)練圖像,能獲得2 500張圖像作為新的合成數(shù)據(jù)集.為了獲得帶有正確標(biāo)注的圖像,使用開源注釋工具手動注釋所有圖像并得到相應(yīng)的Pascal Visual Object Classes(PASCAL VOC)格式的可擴(kuò)展標(biāo)記語言(XML)文件作為每個訓(xùn)練圖像的注釋文件.
由于該缺陷檢測方法需要部署在真實的實時環(huán)境,需要在準(zhǔn)確性和快速檢測之間取得平衡,因此本文基于人工智能算法提出實時的缺陷檢測方法(記為DDAI).
DDAI使用VGG16[4]前饋卷積網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),其輸出是具有固定大小的邊界框集合.該網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示,其中最后的softmax函數(shù)生成圖像屬于某個類別的概率.
圖2 基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)
該階段根據(jù)對象類別存在的概率為每個邊界框給出分?jǐn)?shù).DDAI在基礎(chǔ)網(wǎng)絡(luò)后添加額外的卷積層(如圖3所示),這些卷積層的大小逐漸減小,直到達(dá)到非極大值抑制[5].非極大值抑制使用第一個網(wǎng)絡(luò)的額外卷積特征層來決定最終的檢測結(jié)果.DDAI是基于Tensorflow實現(xiàn)的,訓(xùn)練模型的超參數(shù)取值如表1所示.
圖3 DDAI整體結(jié)構(gòu)
表1 模型參數(shù)
由于對象檢測算法使用邊界框進(jìn)行局部預(yù)測,因此可以使用交并比(IoU)來量化特定預(yù)測邊界框的精度.IoU指標(biāo)刻畫了預(yù)測邊界框和真實邊界框的重疊量.DDAI使用了0.4、0.5和0.6的閾值作為真假預(yù)測的余量進(jìn)行了實驗.在IoU等于0.5的情況下,如果邊界框的IoU值大于0.5,可以認(rèn)為預(yù)測結(jié)果是真陽性(TP),同理可以進(jìn)一步計算預(yù)測結(jié)果的假陽性(FP)和假陰性(FN).由于測試集中的每個圖像至少存在一個缺陷,因此此處不對真陰性進(jìn)行評估.
當(dāng)IoU大于0.5(閾值)時,相應(yīng)的預(yù)測為真陽性,這意味著預(yù)測的缺陷是真實的.在 IoU小于0.5的情況下,預(yù)測的結(jié)果為假陽性,這意味著預(yù)測的缺陷并不是真實存在.當(dāng)DDAI的預(yù)測結(jié)果完全錯過真正的缺陷時,預(yù)測結(jié)果是假陰性.
結(jié)合上述真陽性(TP)、假陽性(FP)和假陰性(FN)的結(jié)果,定義精度、召回率和F1度量三個指標(biāo),如式(19)所示.
(19)
如圖4所示,訓(xùn)練后的模型在IoU為0.4時達(dá)到了0.44的精度和0.69的召回率,在IoU為0.5時達(dá)到了0.41的精度和0.63的召回率,以及在IoU為0.6時達(dá)到了0.4的精度和0.62的召回率.隨著IoU閾值的增加,預(yù)測會變得更加嚴(yán)格,從而導(dǎo)致性能下降.隨著閾值變得更高,DDAI產(chǎn)生了更多的誤報.由于DDAI的目標(biāo)是檢測缺陷,因此IoU閾值為0.4的檢測結(jié)果是可以接受.使用較小的IoU閾值可以增加檢測到的真實缺陷的數(shù)量,但是太小的IoU 閾值會顯著增加假陽性.因此,雖然增加 IoU 閾值將減少真陽性,但也會減少假陽性.在實際部署中,本文選擇0.4作為IoU閾值.
圖4 實驗結(jié)果
原始數(shù)據(jù)集僅由500張圖像組成,其規(guī)模過小,不足以訓(xùn)練出擁有較高性能的模型.增加訓(xùn)練數(shù)據(jù)的規(guī)??梢蕴嵘鼶DAI的性能指標(biāo).關(guān)于平均精度,在IoU閾值為0.6時達(dá)到 0.4,在IoU閾值為0.5時達(dá)到0.44,在IoU閾值為0.4 時達(dá)到0.52.
本文設(shè)計了由打印機(jī)、工作站、攝像頭和光源組成的3D打印缺陷檢測系統(tǒng),提出了打印對象分割和渲染方法,以實時、準(zhǔn)確地捕獲由攝像頭拍攝的打印對象.針對實時缺陷檢測,設(shè)計了基于AI算法的缺陷檢測方法,以較低的成本實現(xiàn)了準(zhǔn)確的打印缺陷檢測.通過增強(qiáng)技術(shù)對數(shù)據(jù)集進(jìn)行擴(kuò)充,并在進(jìn)行系統(tǒng)部署后使用實驗評估了所提出檢測方法的性能.實驗結(jié)果表明,所提出的方法在實時缺陷檢測方面獲得較好的性能.后續(xù)的研究工作將擴(kuò)展本文所提出的模型,使其能識別更多類型的打印缺陷和打印機(jī)故障.