何煒杰, 韓晨陽(yáng), 倪忠進(jìn), 倪益華, 呂艷, 葉曉平
(1.浙江農(nóng)林大學(xué) 工程學(xué)院,杭州311300;2.浙江省特色文創(chuàng)產(chǎn)品數(shù)字化設(shè)計(jì)與智能制造重點(diǎn)實(shí)驗(yàn)室,浙江 麗水323000)
水凝膠擠出式打印成型技術(shù)是生物3D打印中常用的技術(shù)之一。擠出式生物打印機(jī)實(shí)質(zhì)上是基于噴墨式打印機(jī)的優(yōu)化版本,它不同于噴墨式打印機(jī)的單個(gè)動(dòng)力,而是通過施加一個(gè)連續(xù)的動(dòng)力,使其打印機(jī)可以連續(xù)不間斷地噴吐出打印纖維。這種打印方式的一大特點(diǎn)就是對(duì)打印材料的選擇較多,只需要打印材料的黏度合適,打印結(jié)構(gòu)通過交聯(lián)后可以很好地保持其原有形狀[1-2]。并且其設(shè)備成本低廉、打印物品的延展性好、打印墨水種類多、容易上手操作,被研究者廣泛地應(yīng)用在生物3D打印的實(shí)驗(yàn)研究中[3]。但由于水凝膠擠出式打印成型過程中極易受到溫度與配置溶液黏度的影響,進(jìn)行打印實(shí)驗(yàn)中常常會(huì)出現(xiàn)成型問題,如斷絲和坍塌現(xiàn)象。為了避免打印出現(xiàn)問題后不必要的材料浪費(fèi),打印時(shí)需要實(shí)驗(yàn)員長(zhǎng)時(shí)間守在打印設(shè)備附近觀察打印情況,且打印過程用時(shí)較長(zhǎng),這樣十分浪費(fèi)時(shí)間和人力。
計(jì)算機(jī)視覺檢測(cè)技術(shù)近年來在智能制造業(yè)中受到廣泛的關(guān)注,越來越多的生產(chǎn)加工的檢測(cè)環(huán)節(jié)應(yīng)用了該項(xiàng)技術(shù)[4]。伴隨著高速工業(yè)相機(jī)發(fā)展及深度學(xué)習(xí)算法的普及化,利用深度學(xué)習(xí)實(shí)現(xiàn)高效的計(jì)算機(jī)視覺識(shí)別系統(tǒng),是當(dāng)今面對(duì)生產(chǎn)監(jiān)測(cè)問題的主要解決方法。其中一種主要應(yīng)用于圖像識(shí)別的方式是卷積神經(jīng)網(wǎng)絡(luò)算法,該算法與傳統(tǒng)的圖像處理技術(shù)相比,具有高效的自主學(xué)習(xí)能力,并且還簡(jiǎn)化了許多復(fù)雜的圖像預(yù)處理的操作[5]。目前,卷積神經(jīng)網(wǎng)絡(luò)技術(shù)已經(jīng)廣泛地應(yīng)用在人臉識(shí)別、視頻監(jiān)控、智慧家居等領(lǐng)域[6]。
本文基于卷積神經(jīng)網(wǎng)絡(luò)技術(shù),設(shè)計(jì)了針對(duì)打印時(shí)出現(xiàn)斷絲和坍塌現(xiàn)象的識(shí)別模型,以期該模型能實(shí)現(xiàn)對(duì)水凝膠擠出式打印成型過程進(jìn)行有效的監(jiān)測(cè),從而用計(jì)算機(jī)視覺代替研究人員,有效地節(jié)省人力和時(shí)間。
本文的水凝膠擠出式打印成型監(jiān)測(cè)系統(tǒng)是基于深度學(xué)習(xí)、圖像視覺、計(jì)算機(jī)視覺原理所構(gòu)建而成的。其原理為:以圖像傳感器為核心搭建一個(gè)硬件檢測(cè)平臺(tái),用以打印過程中的圖像數(shù)據(jù)的采集、在打印時(shí)相隔一定時(shí)間拍攝圖像、存儲(chǔ),將計(jì)算機(jī)作為采集數(shù)據(jù)處理器,通過程序開發(fā)語(yǔ)言、圖像處理軟件、卷積神經(jīng)網(wǎng)絡(luò)、Caffe深度學(xué)習(xí)框架等開發(fā)工具,建立的打印監(jiān)測(cè)系統(tǒng),用于打印過程的檢測(cè)及數(shù)據(jù)的保存。該系統(tǒng)的構(gòu)架如圖1所示,由硬件系統(tǒng)及軟件系統(tǒng)組成。

圖1 水凝膠打印監(jiān)測(cè)系統(tǒng)架構(gòu)
監(jiān)測(cè)系統(tǒng)分為上位機(jī)和下位機(jī)兩部分。下位機(jī)模塊需進(jìn)行圖片的拍攝及圖像的傳遞,上位機(jī)即計(jì)算機(jī)需要對(duì)圖像進(jìn)行截取保存并進(jìn)行檢測(cè)。而上位機(jī)部分需要對(duì)拍攝到的圖片進(jìn)行檢測(cè),并且將檢測(cè)的結(jié)果反饋到交互界面中。

圖2 水凝膠監(jiān)測(cè)系統(tǒng)硬件平臺(tái)示意圖
1.1.1 樣本制作
本實(shí)驗(yàn)的樣本圖片均來源于浙江農(nóng)林大學(xué)生物打印實(shí)驗(yàn)室,在進(jìn)行實(shí)際打印中獲得的打印實(shí)物圖,通過架設(shè)在打印機(jī)旁的相機(jī)拍攝的圖片,共計(jì)2000張。本文的數(shù)據(jù)集中將打印時(shí)所拍攝到的照片分為4類,正常(Normal)、斷絲(Broken Wire)、坍塌(Collapse)、阻擋(Hinder),如圖3所示。由于打印機(jī)理是通過溫度控制水凝膠進(jìn)行交聯(lián),其打印平臺(tái)上有冷凝水會(huì)影響圖片中的特征,所以在制備拍部分?jǐn)z樣本水凝膠時(shí)加入了食用染料(C20H11N2Na3O10S3, 中國(guó)上海阿拉丁實(shí)業(yè)公司)使打印特征更明顯,如圖3所示。

圖3 打印過程中存在的4類現(xiàn)象
通過上述實(shí)驗(yàn)和圖片的采集可知,打印常出現(xiàn)的異常情況主要有斷絲和坍塌兩種。斷絲是由于打印時(shí)擠出量不穩(wěn)定或噴嘴堵塞所致,其主要的特點(diǎn)就是打印的水凝膠表面出現(xiàn)形狀不規(guī)則的凹痕。而坍塌是由于水凝膠溶液黏度過低或擠出量過大,導(dǎo)致堆積的水凝膠過多倒塌無法正常繼續(xù)打印,其主要特點(diǎn)是有明顯的弧形表面,且打印噴嘴與打印面分離。另外拍攝過程中極易遇到打印噴嘴阻擋拍攝角度的現(xiàn)象,使拍攝圖片沒有拍攝到水凝膠的特征。
為了提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練的效率和有效性,需要對(duì)采集的圖像樣本進(jìn)行一定的處理,本文中運(yùn)用到了OpenCV庫(kù),它作為一種跨平臺(tái)的計(jì)算機(jī)視覺庫(kù),其主要的作用就是可以高效地處理圖像[7-8]。由于它適用性廣的特點(diǎn),在Linux、Windows等平臺(tái)均可使用而受到許多科學(xué)研究者的喜愛[9]。實(shí)驗(yàn)中對(duì)所采集的水凝膠打印圖像進(jìn)行圖像的預(yù)處理,使用二值化和輪廓分割等方法處理圖像[10],這樣能有效地降低多余信息突出圖像中的主要特征[11]。再使用Labelimg標(biāo)記工具進(jìn)行按分工標(biāo)記,作為水凝膠擠出式打印成型檢測(cè)模型的數(shù)據(jù)樣本,如圖4、圖5所示。

圖4 圖像預(yù)處理

圖5 目標(biāo)區(qū)域的定位
1.1.2 卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)
Caffe(Convolutional Architecture for Fast Feature Embedding)框架是2014年伯克利大學(xué)賈揚(yáng)清博士及其團(tuán)隊(duì)開發(fā)并發(fā)布的深度學(xué)習(xí)框架[12]。該深度學(xué)習(xí)框架的優(yōu)點(diǎn)在于其多接口,盡管其內(nèi)核程序由C++編寫的,但開發(fā)者給它設(shè)置了Python和Matlab相關(guān)的接口[13]。本文使用的就是其中的Python接口,對(duì)訓(xùn)練模型的神經(jīng)網(wǎng)絡(luò)層進(jìn)行再編輯[14]。并且Caffe平臺(tái)下通過編輯源碼能實(shí)現(xiàn)一些特殊的層,從而在該平臺(tái)下運(yùn)用多種目標(biāo)檢測(cè)算法。本文以傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5為基礎(chǔ),對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)層數(shù)和種類進(jìn)行改進(jìn),利用Swish激活函數(shù)和BN算法對(duì)模型進(jìn)行優(yōu)化[15]。
1)為了提高神經(jīng)網(wǎng)絡(luò)模型對(duì)于復(fù)雜事物的學(xué)習(xí)能力,需要將非線性的特性引入到神經(jīng)網(wǎng)絡(luò)中,這就需要使用激活函數(shù)。但神經(jīng)網(wǎng)絡(luò)算法在使用誤差逆?zhèn)鞑ニ惴▋?yōu)化網(wǎng)絡(luò)參數(shù)時(shí),其激活函數(shù)若出現(xiàn)飽和現(xiàn)象,則會(huì)降低網(wǎng)絡(luò)的訓(xùn)練速度和效果,甚至?xí)霈F(xiàn)梯度消失等現(xiàn)象[16]。其中常用的激活函數(shù)中Sigmoid函數(shù)就會(huì)導(dǎo)致這一現(xiàn)象,為了避免梯度消失的問題,開發(fā)者會(huì)使用Relu激活函數(shù),但該函數(shù)常會(huì)出現(xiàn)輸入無響應(yīng)的問題,導(dǎo)致該問題的原因是學(xué)習(xí)率過高、學(xué)習(xí)速率太快導(dǎo)致神經(jīng)元更新數(shù)據(jù)過載,使網(wǎng)絡(luò)癱瘓?zhí)幱跓o法響應(yīng)的狀態(tài)。
寫到柳傳志的生平時(shí),作者介紹他小時(shí)候在達(dá)志橋一所學(xué)校讀書,順便說了一句,這里是康有為當(dāng)年“公車上書”的地方。而后說起柳傳志在四人幫時(shí)期用左手寫了封匿名信,成為當(dāng)時(shí)一件大案。“這個(gè)舉動(dòng)雖然不能和公車上書相比,完全兩回事,但某種血脈是一致的。”這種敘事手法為“非虛構(gòu)”敘事提供了一條新路徑——在尊重客觀事實(shí)的基礎(chǔ)上,附加上合理想象,讓文本更加富有創(chuàng)造力。
Swish激活函數(shù)使Google團(tuán)隊(duì)在2017年提出的一種新型激活函數(shù),其數(shù)學(xué)公式為[16]

式中:f(x)為Swish 函數(shù)激活后的輸出;x為函數(shù)的輸入值。
通過公式可得到函數(shù)圖像,如圖6所示。圖中Swish激活函數(shù)、Sigmoid激活函數(shù)與Relu激活函數(shù)的圖像對(duì)比,可以得到Swish激活函數(shù)具有一般激活函數(shù)的通性,并且Swish激活函數(shù)與Relu激活函數(shù)類似,具有一定的平滑性,這能避免梯度消失的問題,不同的是Swish函數(shù)并非單調(diào)。經(jīng)測(cè)試[12]該函數(shù)相較Relu激活函數(shù)同樣的迭代步數(shù)下其準(zhǔn)確度更高。

圖6 函數(shù)特性
2) 由于神經(jīng)網(wǎng)絡(luò)中引入非線性因素提高學(xué)習(xí)能力,但同時(shí)也大幅影響了網(wǎng)絡(luò)的訓(xùn)練。針對(duì)神經(jīng)網(wǎng)絡(luò)收斂速度緩慢的問題,就需要使用歸一化的手段處理輸入值,所以在訓(xùn)練模型神經(jīng)網(wǎng)絡(luò)中引入了BN算法。BN算法的具體操作步驟如下[17]:
當(dāng)輸入樣本為n,計(jì)算其均值u和方差σ:

利用均值u和方差σ實(shí)現(xiàn)數(shù)據(jù)的歸一化:

式中:∈為常量,是為了避免當(dāng)σ的取值為0的情況發(fā)生時(shí)式子無意義。
為了保持原始數(shù)據(jù)所學(xué)到的特征的完整性,BN函數(shù)中引入了可學(xué)習(xí)重構(gòu)參數(shù)γi與βi,讓原始數(shù)據(jù)能夠完整地復(fù)原:

式中:γi為輸入xi的標(biāo)準(zhǔn)差;βi為輸入xi的均值;E為均值函數(shù);Var為方差函數(shù)。
3)以Caffe網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ),對(duì)其進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)的調(diào)整和設(shè)置,其網(wǎng)絡(luò)特征提取層結(jié)構(gòu)具體參數(shù)如表1所示。圖7為卷積神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練流程,其中神經(jīng)網(wǎng)絡(luò)特征提取層由6層卷積層、3層BN層、3層池化層交替疊加構(gòu)成,提取高維特征后使用3層全連接層進(jìn)行學(xué)習(xí),即通過映射的形式存于特征空間,并將結(jié)果送入分類器進(jìn)行水凝膠擠出式打印成型狀況的識(shí)別。

表1 My-Caffe網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)配置
1.1.3 模型訓(xùn)練

圖7 卷積神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練流程
搭建完成神經(jīng)網(wǎng)絡(luò)后利用該檢測(cè)算法訓(xùn)練得到損失函數(shù)值和準(zhǔn)確度曲線,如圖8所示。通過反饋的損失函數(shù)和精確度的值觀測(cè)訓(xùn)練模型在測(cè)試集中的完成度。隨著迭代次數(shù)增大,損失函數(shù)值不斷下降,表示網(wǎng)絡(luò)模型不斷擬合,經(jīng)過4000次迭代網(wǎng)絡(luò)模型損失函數(shù)值約為0.8左右。從測(cè)試集反饋的準(zhǔn)確度顯示網(wǎng)絡(luò)模型在測(cè)試集中的準(zhǔn)確率在0.75左右。
本實(shí)驗(yàn)?zāi)P突赪indows操作系統(tǒng)、Caffe框架下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成,對(duì)訓(xùn)練模型的檢測(cè)效果采用的是未放入訓(xùn)練集中的圖片,分別為正常、斷絲、坍塌、阻擋4種類型進(jìn)行5次單一的隨機(jī)樣本集測(cè)試。

圖8 Loss和Accuracy曲線
根據(jù)表2所示的訓(xùn)練模型實(shí)際檢測(cè)的結(jié)果,每組測(cè)試均為單一類型圖片20張。結(jié)果表明檢測(cè)打印狀態(tài)為正常的圖片時(shí)準(zhǔn)確率最高,均在90%以上。檢測(cè)被噴頭阻擋的圖片時(shí)識(shí)別度較差的原因可能是該類型的圖片特征較模糊,樣本數(shù)據(jù)小,訓(xùn)練集無法提取到有效的特征值。而檢測(cè)斷絲與坍塌圖片時(shí)準(zhǔn)確率接近80%左右。總體的準(zhǔn)確率在78%,證明該監(jiān)測(cè)系統(tǒng)能對(duì)水凝膠打印進(jìn)行檢測(cè)。另外幾乎所有斷絲與坍塌圖片的誤判均判別為打印正常,這是因?yàn)檎`判部分的圖片大多都是出現(xiàn)問題的前期,特征點(diǎn)不明顯。

表2 測(cè)試結(jié)果 %

圖9 測(cè)試樣本例圖
這個(gè)檢測(cè)結(jié)果對(duì)照上述的精確度曲線與其值不符,準(zhǔn)確率并沒有精確度曲線反饋的準(zhǔn)確度,這一現(xiàn)象說明訓(xùn)練模型過擬合,這是由于訓(xùn)練集較少和特征圖片較接近導(dǎo)致的。
完成檢測(cè)用模型后需要對(duì)監(jiān)測(cè)系統(tǒng)進(jìn)行整體的設(shè)計(jì),本文使用PyQt5圖形界面編輯軟件進(jìn)行了監(jiān)測(cè)系統(tǒng)的界面的開發(fā)。PyQt5是一個(gè)跨平臺(tái)下基于Python圖形用戶界面庫(kù)。該開發(fā)環(huán)境具有較豐富的API和詳細(xì)的開發(fā)文檔,并且具有多平臺(tái)接口,保障了其通用性,所以成為眾多軟件設(shè)計(jì)開發(fā)者的選擇。
設(shè)計(jì)的系統(tǒng)分為圖片檢測(cè)和實(shí)時(shí)檢測(cè)兩部分,通過開啟后切換模式實(shí)現(xiàn),圖片檢測(cè)需要導(dǎo)入圖片,只顯示對(duì)圖片檢測(cè)的結(jié)果,實(shí)時(shí)檢測(cè)開啟后自動(dòng)計(jì)時(shí)定時(shí)拍攝圖片,對(duì)拍攝的圖片進(jìn)行檢測(cè)并對(duì)不同的檢測(cè)結(jié)果進(jìn)行不同方式的反饋。具體流程如圖10所示。

圖10 監(jiān)測(cè)系統(tǒng)流程圖
根據(jù)檢測(cè)流程圖完成界面的控件設(shè)置與編輯。可得到水凝膠監(jiān)測(cè)系統(tǒng)的界面,圖11所示為監(jiān)測(cè)系統(tǒng)的界面。該系統(tǒng)分為檢測(cè)圖片和實(shí)時(shí)檢測(cè)兩部分。通過載入按鈕將圖片導(dǎo)入,點(diǎn)擊“Check”按鈕可對(duì)圖片進(jìn)行檢測(cè),檢測(cè)圖片顯示在右上“檢測(cè)圖像”框內(nèi),檢測(cè)結(jié)果會(huì)顯示在右下“檢測(cè)結(jié)果”框內(nèi)。如圖12所示,當(dāng)圖像中打印正常時(shí),檢測(cè)結(jié)果顯示為該情況的匹配度;當(dāng)圖像中打印異常時(shí),則檢測(cè)結(jié)果會(huì)顯示紅色的“PRINT ERROR”字樣提醒,并會(huì)給單片機(jī)傳輸反饋信號(hào)啟動(dòng)蜂鳴器。使用實(shí)時(shí)監(jiān)控,只需點(diǎn)擊“打開攝像頭”則左下框內(nèi)將實(shí)時(shí)顯示攝像頭所拍攝的畫面,再點(diǎn)擊“運(yùn)行”將每30 s截取拍攝畫面圖像進(jìn)行檢測(cè)。

圖11 監(jiān)測(cè)系統(tǒng)界面

圖12 監(jiān)測(cè)系統(tǒng)工作運(yùn)行圖像
本研究是針對(duì)水凝膠擠出式打印成型中的問題進(jìn)行監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)。該設(shè)計(jì)過程主要分成兩部分:第一部分是通過Caffe框架設(shè)計(jì)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)完成檢測(cè)模型;第二部分是對(duì)監(jiān)測(cè)系統(tǒng)的界面及程序的設(shè)計(jì)。從結(jié)果來看訓(xùn)練完成的模型準(zhǔn)確率在78%左右,能對(duì)拍攝到的打印狀態(tài)進(jìn)行一定程度的識(shí)別,其中打印水凝膠被阻擋的識(shí)別度較差的原因是該類型的圖片特征較模糊、樣本數(shù)據(jù)小,訓(xùn)練集無法提取到有效的特征值。另一部分借助PyQt5對(duì)監(jiān)測(cè)系統(tǒng)進(jìn)行了可視化窗口的設(shè)計(jì),能有效地對(duì)成型出現(xiàn)的問題進(jìn)行反饋,實(shí)現(xiàn)了使用計(jì)算機(jī)視覺替代實(shí)驗(yàn)員在打印時(shí)進(jìn)行觀測(cè),有效地節(jié)約了人力。