何煒杰, 韓晨陽, 倪忠進(jìn), 倪益華, 呂艷, 葉曉平
(1.浙江農(nóng)林大學(xué) 工程學(xué)院,杭州311300;2.浙江省特色文創(chuàng)產(chǎn)品數(shù)字化設(shè)計與智能制造重點實驗室,浙江 麗水323000)
水凝膠擠出式打印成型技術(shù)是生物3D打印中常用的技術(shù)之一。擠出式生物打印機(jī)實質(zhì)上是基于噴墨式打印機(jī)的優(yōu)化版本,它不同于噴墨式打印機(jī)的單個動力,而是通過施加一個連續(xù)的動力,使其打印機(jī)可以連續(xù)不間斷地噴吐出打印纖維。這種打印方式的一大特點就是對打印材料的選擇較多,只需要打印材料的黏度合適,打印結(jié)構(gòu)通過交聯(lián)后可以很好地保持其原有形狀[1-2]。并且其設(shè)備成本低廉、打印物品的延展性好、打印墨水種類多、容易上手操作,被研究者廣泛地應(yīng)用在生物3D打印的實驗研究中[3]。但由于水凝膠擠出式打印成型過程中極易受到溫度與配置溶液黏度的影響,進(jìn)行打印實驗中常常會出現(xiàn)成型問題,如斷絲和坍塌現(xiàn)象。為了避免打印出現(xiàn)問題后不必要的材料浪費,打印時需要實驗員長時間守在打印設(shè)備附近觀察打印情況,且打印過程用時較長,這樣十分浪費時間和人力。
計算機(jī)視覺檢測技術(shù)近年來在智能制造業(yè)中受到廣泛的關(guān)注,越來越多的生產(chǎn)加工的檢測環(huán)節(jié)應(yīng)用了該項技術(shù)[4]。伴隨著高速工業(yè)相機(jī)發(fā)展及深度學(xué)習(xí)算法的普及化,利用深度學(xué)習(xí)實現(xiàn)高效的計算機(jī)視覺識別系統(tǒng),是當(dāng)今面對生產(chǎn)監(jiān)測問題的主要解決方法。其中一種主要應(yīng)用于圖像識別的方式是卷積神經(jīng)網(wǎng)絡(luò)算法,該算法與傳統(tǒng)的圖像處理技術(shù)相比,具有高效的自主學(xué)習(xí)能力,并且還簡化了許多復(fù)雜的圖像預(yù)處理的操作[5]。目前,卷積神經(jīng)網(wǎng)絡(luò)技術(shù)已經(jīng)廣泛地應(yīng)用在人臉識別、視頻監(jiān)控、智慧家居等領(lǐng)域[6]。
本文基于卷積神經(jīng)網(wǎng)絡(luò)技術(shù),設(shè)計了針對打印時出現(xiàn)斷絲和坍塌現(xiàn)象的識別模型,以期該模型能實現(xiàn)對水凝膠擠出式打印成型過程進(jìn)行有效的監(jiān)測,從而用計算機(jī)視覺代替研究人員,有效地節(jié)省人力和時間。
本文的水凝膠擠出式打印成型監(jiān)測系統(tǒng)是基于深度學(xué)習(xí)、圖像視覺、計算機(jī)視覺原理所構(gòu)建而成的。其原理為:以圖像傳感器為核心搭建一個硬件檢測平臺,用以打印過程中的圖像數(shù)據(jù)的采集、在打印時相隔一定時間拍攝圖像、存儲,將計算機(jī)作為采集數(shù)據(jù)處理器,通過程序開發(fā)語言、圖像處理軟件、卷積神經(jīng)網(wǎng)絡(luò)、Caffe深度學(xué)習(xí)框架等開發(fā)工具,建立的打印監(jiān)測系統(tǒng),用于打印過程的檢測及數(shù)據(jù)的保存。該系統(tǒng)的構(gòu)架如圖1所示,由硬件系統(tǒng)及軟件系統(tǒng)組成。
圖1 水凝膠打印監(jiān)測系統(tǒng)架構(gòu)
監(jiān)測系統(tǒng)分為上位機(jī)和下位機(jī)兩部分。下位機(jī)模塊需進(jìn)行圖片的拍攝及圖像的傳遞,上位機(jī)即計算機(jī)需要對圖像進(jìn)行截取保存并進(jìn)行檢測。而上位機(jī)部分需要對拍攝到的圖片進(jìn)行檢測,并且將檢測的結(jié)果反饋到交互界面中。
圖2 水凝膠監(jiān)測系統(tǒng)硬件平臺示意圖
1.1.1 樣本制作
本實驗的樣本圖片均來源于浙江農(nóng)林大學(xué)生物打印實驗室,在進(jìn)行實際打印中獲得的打印實物圖,通過架設(shè)在打印機(jī)旁的相機(jī)拍攝的圖片,共計2000張。本文的數(shù)據(jù)集中將打印時所拍攝到的照片分為4類,正常(Normal)、斷絲(Broken Wire)、坍塌(Collapse)、阻擋(Hinder),如圖3所示。由于打印機(jī)理是通過溫度控制水凝膠進(jìn)行交聯(lián),其打印平臺上有冷凝水會影響圖片中的特征,所以在制備拍部分?jǐn)z樣本水凝膠時加入了食用染料(C20H11N2Na3O10S3, 中國上海阿拉丁實業(yè)公司)使打印特征更明顯,如圖3所示。
圖3 打印過程中存在的4類現(xiàn)象
通過上述實驗和圖片的采集可知,打印常出現(xiàn)的異常情況主要有斷絲和坍塌兩種。斷絲是由于打印時擠出量不穩(wěn)定或噴嘴堵塞所致,其主要的特點就是打印的水凝膠表面出現(xiàn)形狀不規(guī)則的凹痕。而坍塌是由于水凝膠溶液黏度過低或擠出量過大,導(dǎo)致堆積的水凝膠過多倒塌無法正常繼續(xù)打印,其主要特點是有明顯的弧形表面,且打印噴嘴與打印面分離。另外拍攝過程中極易遇到打印噴嘴阻擋拍攝角度的現(xiàn)象,使拍攝圖片沒有拍攝到水凝膠的特征。
為了提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練的效率和有效性,需要對采集的圖像樣本進(jìn)行一定的處理,本文中運用到了OpenCV庫,它作為一種跨平臺的計算機(jī)視覺庫,其主要的作用就是可以高效地處理圖像[7-8]。由于它適用性廣的特點,在Linux、Windows等平臺均可使用而受到許多科學(xué)研究者的喜愛[9]。實驗中對所采集的水凝膠打印圖像進(jìn)行圖像的預(yù)處理,使用二值化和輪廓分割等方法處理圖像[10],這樣能有效地降低多余信息突出圖像中的主要特征[11]。再使用Labelimg標(biāo)記工具進(jìn)行按分工標(biāo)記,作為水凝膠擠出式打印成型檢測模型的數(shù)據(jù)樣本,如圖4、圖5所示。
圖4 圖像預(yù)處理
圖5 目標(biāo)區(qū)域的定位
1.1.2 卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計
Caffe(Convolutional Architecture for Fast Feature Embedding)框架是2014年伯克利大學(xué)賈揚清博士及其團(tuán)隊開發(fā)并發(fā)布的深度學(xué)習(xí)框架[12]。該深度學(xué)習(xí)框架的優(yōu)點在于其多接口,盡管其內(nèi)核程序由C++編寫的,但開發(fā)者給它設(shè)置了Python和Matlab相關(guān)的接口[13]。本文使用的就是其中的Python接口,對訓(xùn)練模型的神經(jīng)網(wǎng)絡(luò)層進(jìn)行再編輯[14]。并且Caffe平臺下通過編輯源碼能實現(xiàn)一些特殊的層,從而在該平臺下運用多種目標(biāo)檢測算法。本文以傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5為基礎(chǔ),對神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)層數(shù)和種類進(jìn)行改進(jìn),利用Swish激活函數(shù)和BN算法對模型進(jìn)行優(yōu)化[15]。
1)為了提高神經(jīng)網(wǎng)絡(luò)模型對于復(fù)雜事物的學(xué)習(xí)能力,需要將非線性的特性引入到神經(jīng)網(wǎng)絡(luò)中,這就需要使用激活函數(shù)。但神經(jīng)網(wǎng)絡(luò)算法在使用誤差逆?zhèn)鞑ニ惴▋?yōu)化網(wǎng)絡(luò)參數(shù)時,其激活函數(shù)若出現(xiàn)飽和現(xiàn)象,則會降低網(wǎng)絡(luò)的訓(xùn)練速度和效果,甚至?xí)霈F(xiàn)梯度消失等現(xiàn)象[16]。其中常用的激活函數(shù)中Sigmoid函數(shù)就會導(dǎo)致這一現(xiàn)象,為了避免梯度消失的問題,開發(fā)者會使用Relu激活函數(shù),但該函數(shù)常會出現(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)。
寫到柳傳志的生平時,作者介紹他小時候在達(dá)志橋一所學(xué)校讀書,順便說了一句,這里是康有為當(dāng)年“公車上書”的地方。而后說起柳傳志在四人幫時期用左手寫了封匿名信,成為當(dāng)時一件大案?!斑@個舉動雖然不能和公車上書相比,完全兩回事,但某種血脈是一致的?!边@種敘事手法為“非虛構(gòu)”敘事提供了一條新路徑——在尊重客觀事實的基礎(chǔ)上,附加上合理想象,讓文本更加富有創(chuàng)造力。
Swish激活函數(shù)使Google團(tuán)隊在2017年提出的一種新型激活函數(shù),其數(shù)學(xué)公式為[16]
式中:f(x)為Swish 函數(shù)激活后的輸出;x為函數(shù)的輸入值。
通過公式可得到函數(shù)圖像,如圖6所示。圖中Swish激活函數(shù)、Sigmoid激活函數(shù)與Relu激活函數(shù)的圖像對比,可以得到Swish激活函數(shù)具有一般激活函數(shù)的通性,并且Swish激活函數(shù)與Relu激活函數(shù)類似,具有一定的平滑性,這能避免梯度消失的問題,不同的是Swish函數(shù)并非單調(diào)。經(jīng)測試[12]該函數(shù)相較Relu激活函數(shù)同樣的迭代步數(shù)下其準(zhǔn)確度更高。
圖6 函數(shù)特性
2) 由于神經(jīng)網(wǎng)絡(luò)中引入非線性因素提高學(xué)習(xí)能力,但同時也大幅影響了網(wǎng)絡(luò)的訓(xùn)練。針對神經(jīng)網(wǎng)絡(luò)收斂速度緩慢的問題,就需要使用歸一化的手段處理輸入值,所以在訓(xùn)練模型神經(jīng)網(wǎng)絡(luò)中引入了BN算法。BN算法的具體操作步驟如下[17]:
當(dāng)輸入樣本為n,計算其均值u和方差σ:
利用均值u和方差σ實現(xiàn)數(shù)據(jù)的歸一化:
式中:∈為常量,是為了避免當(dāng)σ的取值為0的情況發(fā)生時式子無意義。
為了保持原始數(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ǔ),對其進(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)行水凝膠擠出式打印成型狀況的識別。
表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ò)后利用該檢測算法訓(xùn)練得到損失函數(shù)值和準(zhǔn)確度曲線,如圖8所示。通過反饋的損失函數(shù)和精確度的值觀測訓(xùn)練模型在測試集中的完成度。隨著迭代次數(shù)增大,損失函數(shù)值不斷下降,表示網(wǎng)絡(luò)模型不斷擬合,經(jīng)過4000次迭代網(wǎng)絡(luò)模型損失函數(shù)值約為0.8左右。從測試集反饋的準(zhǔn)確度顯示網(wǎng)絡(luò)模型在測試集中的準(zhǔn)確率在0.75左右。
本實驗?zāi)P突赪indows操作系統(tǒng)、Caffe框架下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成,對訓(xùn)練模型的檢測效果采用的是未放入訓(xùn)練集中的圖片,分別為正常、斷絲、坍塌、阻擋4種類型進(jìn)行5次單一的隨機(jī)樣本集測試。
圖8 Loss和Accuracy曲線
根據(jù)表2所示的訓(xùn)練模型實際檢測的結(jié)果,每組測試均為單一類型圖片20張。結(jié)果表明檢測打印狀態(tài)為正常的圖片時準(zhǔn)確率最高,均在90%以上。檢測被噴頭阻擋的圖片時識別度較差的原因可能是該類型的圖片特征較模糊,樣本數(shù)據(jù)小,訓(xùn)練集無法提取到有效的特征值。而檢測斷絲與坍塌圖片時準(zhǔn)確率接近80%左右。總體的準(zhǔn)確率在78%,證明該監(jiān)測系統(tǒng)能對水凝膠打印進(jìn)行檢測。另外幾乎所有斷絲與坍塌圖片的誤判均判別為打印正常,這是因為誤判部分的圖片大多都是出現(xiàn)問題的前期,特征點不明顯。
表2 測試結(jié)果 %
圖9 測試樣本例圖
這個檢測結(jié)果對照上述的精確度曲線與其值不符,準(zhǔn)確率并沒有精確度曲線反饋的準(zhǔn)確度,這一現(xiàn)象說明訓(xùn)練模型過擬合,這是由于訓(xùn)練集較少和特征圖片較接近導(dǎo)致的。
完成檢測用模型后需要對監(jiān)測系統(tǒng)進(jìn)行整體的設(shè)計,本文使用PyQt5圖形界面編輯軟件進(jìn)行了監(jiān)測系統(tǒng)的界面的開發(fā)。PyQt5是一個跨平臺下基于Python圖形用戶界面庫。該開發(fā)環(huán)境具有較豐富的API和詳細(xì)的開發(fā)文檔,并且具有多平臺接口,保障了其通用性,所以成為眾多軟件設(shè)計開發(fā)者的選擇。
設(shè)計的系統(tǒng)分為圖片檢測和實時檢測兩部分,通過開啟后切換模式實現(xiàn),圖片檢測需要導(dǎo)入圖片,只顯示對圖片檢測的結(jié)果,實時檢測開啟后自動計時定時拍攝圖片,對拍攝的圖片進(jìn)行檢測并對不同的檢測結(jié)果進(jìn)行不同方式的反饋。具體流程如圖10所示。
圖10 監(jiān)測系統(tǒng)流程圖
根據(jù)檢測流程圖完成界面的控件設(shè)置與編輯??傻玫剿z監(jiān)測系統(tǒng)的界面,圖11所示為監(jiān)測系統(tǒng)的界面。該系統(tǒng)分為檢測圖片和實時檢測兩部分。通過載入按鈕將圖片導(dǎo)入,點擊“Check”按鈕可對圖片進(jìn)行檢測,檢測圖片顯示在右上“檢測圖像”框內(nèi),檢測結(jié)果會顯示在右下“檢測結(jié)果”框內(nèi)。如圖12所示,當(dāng)圖像中打印正常時,檢測結(jié)果顯示為該情況的匹配度;當(dāng)圖像中打印異常時,則檢測結(jié)果會顯示紅色的“PRINT ERROR”字樣提醒,并會給單片機(jī)傳輸反饋信號啟動蜂鳴器。使用實時監(jiān)控,只需點擊“打開攝像頭”則左下框內(nèi)將實時顯示攝像頭所拍攝的畫面,再點擊“運行”將每30 s截取拍攝畫面圖像進(jìn)行檢測。
圖11 監(jiān)測系統(tǒng)界面
圖12 監(jiān)測系統(tǒng)工作運行圖像
本研究是針對水凝膠擠出式打印成型中的問題進(jìn)行監(jiān)測系統(tǒng)的設(shè)計。該設(shè)計過程主要分成兩部分:第一部分是通過Caffe框架設(shè)計深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)完成檢測模型;第二部分是對監(jiān)測系統(tǒng)的界面及程序的設(shè)計。從結(jié)果來看訓(xùn)練完成的模型準(zhǔn)確率在78%左右,能對拍攝到的打印狀態(tài)進(jìn)行一定程度的識別,其中打印水凝膠被阻擋的識別度較差的原因是該類型的圖片特征較模糊、樣本數(shù)據(jù)小,訓(xùn)練集無法提取到有效的特征值。另一部分借助PyQt5對監(jiān)測系統(tǒng)進(jìn)行了可視化窗口的設(shè)計,能有效地對成型出現(xiàn)的問題進(jìn)行反饋,實現(xiàn)了使用計算機(jī)視覺替代實驗員在打印時進(jìn)行觀測,有效地節(jié)約了人力。