黨應(yīng)聰 陳勁杰
摘 ?要:本文針對五類簡單幾何體三維模型,設(shè)計了完整的卷積神經(jīng)網(wǎng)絡(luò)模型以實現(xiàn)自動分類識別。首先本文運(yùn)用CATIA二次開發(fā)技術(shù)完成了模型的生產(chǎn)并收集了原始數(shù)據(jù),其次運(yùn)用圖像處理的理論對原始數(shù)據(jù)進(jìn)行了預(yù)處理,然后運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)理論完成了本文的卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計,最后進(jìn)行了實驗分析并驗證了本文模型的可行性。
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò);識別與分類;簡單幾何體;三維模型
中圖分類號:TP391.41 ? ? 文獻(xiàn)標(biāo)識碼:A
Abstract:In this paper,a complete convolution neural network model is designed for automatic classification and recognition of five kinds of simple geometric three-dimensional models.Firstly,the CATIA secondary development technology is used to complete the production of the model and collect the original data.Secondly,the theory of image processing is used to preprocess the original data.Thirdly,the convolutional neural network model is designed by using the convolutional neural network theory.Finally,the feasibility of the model is analyzed and verified through experiments.
Keywords:convolutional neural network;classification and recognition;simple geometric;3D models
1 ? 引言(Introduction)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network) 是有監(jiān)督的學(xué)習(xí)模型,模型中的參數(shù)可以使用帶標(biāo)簽的數(shù)據(jù)通過優(yōu)化算法進(jìn)行訓(xùn)練,經(jīng)過訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型能夠有效地學(xué)習(xí)到圖像中的特征,并且完成對圖像特征的提取和分類[1]。卷積神經(jīng)網(wǎng)絡(luò)具有三個巨大的優(yōu)勢,即分層局部視野感知,參數(shù)共享和多卷積核處理,這三大優(yōu)勢使得其成為研究圖像識別的強(qiáng)大算法[2]。
本文從數(shù)據(jù)處理入手,完整地實現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)模型的搭建和訓(xùn)練,主要目的在于研究卷積神經(jīng)網(wǎng)絡(luò)對由CATIA建模軟件生產(chǎn)的三維實體模型的自主識別,為以后機(jī)器理解更多種類的3D模型提供識別分類基礎(chǔ)。
2 ? 總體設(shè)計路線(Overall design route)
本文研究目是完成卷積神經(jīng)網(wǎng)絡(luò)對三維實體模型的自動分類識別,考慮到模型種類的復(fù)雜多樣,本文以五類簡單幾何體三維模型作為研究對象,其中包括:長方體、正方體、圓柱體、圓錐和球體。
總體設(shè)計路線如圖1所示,主要包括五大部分:收集原始數(shù)據(jù),對數(shù)據(jù)進(jìn)行預(yù)處理,搭建卷積神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練并驗證模型以得到最優(yōu)參數(shù),最后用訓(xùn)練好的模型用于實際預(yù)測。本文關(guān)鍵點(diǎn)在于原始數(shù)據(jù)的收集處理和網(wǎng)絡(luò)模型的搭建下文將著重研究這兩點(diǎn)內(nèi)容。
3 數(shù)據(jù)的收集與預(yù)處理(Data collection andpreprocessing)
3.1 ? 數(shù)據(jù)集的產(chǎn)生
本文所用的數(shù)據(jù)是通過CATIA軟件創(chuàng)建的三維實體模型,根據(jù)CATIA二次開發(fā)技術(shù)產(chǎn)生三維實體模型,對模型進(jìn)行截圖作為初始數(shù)據(jù)集,然后再對數(shù)據(jù)集進(jìn)行預(yù)處理,以使卷積神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù)標(biāo)準(zhǔn)化,整個二次開發(fā)配置如表1所示。
Catia零件建模二次開發(fā)流程如圖2所示,利用二次開發(fā)接口去獲取Part零件對象,在對象上獲取實體集合,然后添加并繪制草圖,最后使用造型工廠完成三維建模[3]。
最終生產(chǎn)的初始數(shù)據(jù)集截圖如圖3所示,五種類別三維模型幾何體的圖像分別有400張,至此完成了初始數(shù)據(jù)集的收集。
3.2 ? 數(shù)據(jù)集的標(biāo)準(zhǔn)化處理
由于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)量十分龐大,當(dāng)前的初始數(shù)據(jù)不能滿足訓(xùn)練數(shù)據(jù)量的要求,同時由于初始圖像的像素大小參差不齊,無法直接作為卷積神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù),因此對原始圖像的預(yù)處理變得尤為重要[4]。
圖像預(yù)處理過程如圖4所示,對原始圖像進(jìn)行目標(biāo)位置檢測,框選出整幅圖像里三維模型實體的位置;其次是通過圖像的剪裁與填充算法,將每個圖像都剪裁并填充為正方形以方便對圖像做壓縮處理,填充為正方形的目的是為了使圖像在等比壓縮或擴(kuò)大的同時其本身結(jié)構(gòu)不發(fā)生變化,以減少識別出錯的可能;最后將所有的處理好的數(shù)據(jù)進(jìn)行旋轉(zhuǎn),鏡像等操作以增強(qiáng)數(shù)據(jù)量和提高數(shù)據(jù)的魯棒性。
圖像中的目標(biāo)檢測過程如圖5所示,本文采取的策略是對原始圖像進(jìn)行灰度化處理、Sobel算子梯度處理、均值濾波處理、二值化處理[5,6]。最后找到圖像中的最大輪廓,用矩形框框選出來圖像中關(guān)鍵信息,框選后對圖像進(jìn)行剪裁并填充為正方形圖像。
經(jīng)過剪裁填充后的數(shù)據(jù)在總量上沒有變化,仍然存在數(shù)據(jù)量較小的問題,需要使用數(shù)據(jù)增強(qiáng)算法,即對所有原始圖像進(jìn)行水平翻轉(zhuǎn),垂直翻轉(zhuǎn)和水平垂直翻轉(zhuǎn)操作。這樣使得數(shù)據(jù)量變?yōu)樵瓉淼乃谋?,再將翻轉(zhuǎn)后的圖像旋轉(zhuǎn)90度、180度、270度,這樣便使數(shù)據(jù)量變?yōu)槌跏嫉氖?,那么每一類別的數(shù)據(jù)量變?yōu)?800張圖像。
3.3 ? 數(shù)據(jù)集的存儲
卷積神經(jīng)網(wǎng)絡(luò)的圖像矩陣的輸入,上文處理好的數(shù)據(jù)的像素大小仍然不盡相同,所以預(yù)處理好的圖像需要進(jìn)行歸一化處理(即壓縮為50×50像素大小的圖像),并為每一張圖像貼上對應(yīng)的標(biāo)簽,最后將其以矩陣的形式保存起來。卷積神經(jīng)網(wǎng)絡(luò)需要的數(shù)據(jù)除了訓(xùn)練集之外還有測試集,訓(xùn)練集主要用于優(yōu)化網(wǎng)絡(luò)的權(quán)重和偏置,而測試集數(shù)據(jù)主要用于驗證優(yōu)化后網(wǎng)絡(luò)的魯棒性和準(zhǔn)確率[7]。因此,本文將上文處理后的24000張圖像中的80%作為訓(xùn)練數(shù)據(jù)集,剩下的20%作為測試數(shù)據(jù)集,最后保持結(jié)果如圖8所示。
4 ?卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計(Design of convolutionalneural network model)
4.1 ? 卷積神經(jīng)網(wǎng)絡(luò)的搭建
一個簡單的神經(jīng)網(wǎng)絡(luò)模型主要由輸入層、卷積層、池化層、全連接層和輸出層組成,其中卷積層和全連接層的層數(shù)是根據(jù)具體情況而設(shè)定[8]。本文通過經(jīng)驗和由低層級向高層級逐漸驗證的方法最終確定了整個卷積網(wǎng)絡(luò)的層數(shù)于其中的神經(jīng)元個數(shù)。每層的矩陣維度如表2所示,總共包含兩個卷積層,兩個池化層,一個全連接層,一個輸入層和一個輸出層。
4.2 ? 卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法
在完成網(wǎng)絡(luò)的模型的搭建之后,就需要用準(zhǔn)備好的數(shù)據(jù)去訓(xùn)練整個網(wǎng)絡(luò),本文采用的訓(xùn)練算法流程如圖9所示。該流程算法主要包含兩個訓(xùn)練,一個大循環(huán)是用所有數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò),在大循環(huán)里有一個小循環(huán)是將所有訓(xùn)練數(shù)據(jù)在整個大循環(huán)里分批次訓(xùn)練,這樣可以減少計算量,整個訓(xùn)練流算法如下所示:
(1)初始化所有權(quán)重W和偏置b;
(2)將所有訓(xùn)練集數(shù)據(jù)分批次沿卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行前向傳播得到預(yù)測值;
(3)將預(yù)測值與對應(yīng)輸入的標(biāo)簽值進(jìn)行比較得出誤差值即損失函數(shù)的值;
(4)根據(jù)損失函數(shù),利用隨機(jī)梯度下降法(SGD)去跟新每層權(quán)重與偏置的值以優(yōu)化參數(shù),這也就是卷積神經(jīng)網(wǎng)絡(luò)的后續(xù)傳播;
(5)計算訓(xùn)練集結(jié)果準(zhǔn)確率,如果準(zhǔn)確率滿足要求則停止訓(xùn)練;
(6)重復(fù)過程(2)—過程(5),直到訓(xùn)練次數(shù)到達(dá)設(shè)定值。
4.3 ? 卷積神經(jīng)網(wǎng)絡(luò)的測試與預(yù)測
卷積神經(jīng)網(wǎng)絡(luò)模型的測試過程如圖10(a)所示,主要將全部的測試數(shù)據(jù)輸入訓(xùn)練后的模型,進(jìn)行前向傳播最后得到預(yù)測值,將預(yù)測值與圖像的實際標(biāo)簽值對比,可以得到測試訓(xùn)練集的總體準(zhǔn)確率,一般情況下沒完成一次網(wǎng)絡(luò)的訓(xùn)練都會進(jìn)行一次測試,以驗證此次訓(xùn)練的效果;而預(yù)測過程如圖10(b)所示,與測試過程基本一致,只是預(yù)測過程輸入的數(shù)據(jù)是單個數(shù)據(jù)。
5 ? 實驗結(jié)果與分析(Experimental results and analysis)
在完成了針對簡單幾何體的三維模型的卷積網(wǎng)絡(luò)整體設(shè)計之后,本文在高性能計算機(jī)上進(jìn)行了訓(xùn)練和測試實驗,用于實驗的計算機(jī)配置如表3所示。
如圖11和圖12所示,通過不斷地訓(xùn)練使得卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)得到優(yōu)化,使得訓(xùn)練數(shù)據(jù)的準(zhǔn)確率隨迭代次數(shù)的增加而不斷提升最終達(dá)到一個較為穩(wěn)定的值,經(jīng)過55次的訓(xùn)練準(zhǔn)確率已經(jīng)到達(dá)了99.98%,同時訓(xùn)練集的損失函數(shù)的值也隨著訓(xùn)練次數(shù)的下降,表示隨著訓(xùn)練次數(shù)的增加預(yù)測誤差在減小。
在完成一次訓(xùn)練并更新優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)參數(shù)之后,都會進(jìn)行一次測試數(shù)據(jù)的實驗,用于驗證該網(wǎng)絡(luò)的通用性和魯棒性。如圖13所示,測試數(shù)據(jù)集的準(zhǔn)確率也隨著訓(xùn)練次數(shù)的增加而增加,測試準(zhǔn)確率低于訓(xùn)練準(zhǔn)確率并且與之相差不多,可以說明該訓(xùn)練好的模型并沒有過擬合,卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計合理,識別精度高。在第55次訓(xùn)練后,測試數(shù)據(jù)集的準(zhǔn)確率到達(dá)98.09%,如果繼續(xù)進(jìn)行訓(xùn)練準(zhǔn)確還可以再提升。
6 ? 結(jié)論(Conclusion)
本文系統(tǒng)將卷積神經(jīng)網(wǎng)絡(luò)用于簡單幾何體三維模型的識別和分類,為了機(jī)器理解三維模型實體提供一種方法,為以后機(jī)器自主設(shè)計三維模型實體提供一個鋪墊。同時本文針對五類簡單幾何體的三維模型,進(jìn)行了總體系統(tǒng)設(shè)計,完成了數(shù)據(jù)集的收集,數(shù)據(jù)的預(yù)處理,卷積神經(jīng)網(wǎng)絡(luò)的搭建和訓(xùn)練算法的設(shè)計,最后通過實驗驗證了整套系統(tǒng)的可行性,驗證了網(wǎng)絡(luò)模型的可用性。
參考文獻(xiàn)(References)
[1] 周飛燕,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機(jī)學(xué)報,2017,40(06):1229-1251.
[2] 李彥冬,郝宗波,雷航.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機(jī)應(yīng)用,2016,36(09):2508-2515;2565.
[3] 胡挺,吳立君.CATIA二次開發(fā)基礎(chǔ)[M].浙江:浙大旭日科技圖書,2006.
[4] 許可.卷積神經(jīng)網(wǎng)絡(luò)在圖像識別上的應(yīng)用的研究[D].浙江大學(xué),2012:12-24.
[5] Robust Real-Time Face Detection[J].Paul Viola,Michael J.Jones. International Journal of Computer Vision,2004(2):137-154.
[6] Richard Szeliski.Computer Vision:Algorithms and Applications [M].Springer,2010:101-118.
[7] 常亮,鄧小明,周明全,等.圖像理解中的卷積神經(jīng)網(wǎng)絡(luò)[J].自動化學(xué)報,2016,42(09):1300-1312.
[8] Yu Chen,Hongbing Meng,Xinling Wen,et al.Classification methods of a small sample target object in the sky based on the higher layer visualizing feature and transfer learning deep networks[J].EURASIP Journal on Wireless Communications and Networking,2018(1):127-138.
作者簡介:
黨應(yīng)聰(1993-),男,碩士生.研究領(lǐng)域:智能機(jī)器人,機(jī)器學(xué)習(xí).
陳勁杰(1969-),男,碩士,副教授.研究領(lǐng)域:智能機(jī)器人,機(jī)器學(xué)習(xí).