羅瑞旭 張 輝 張勝文 李 坤 方喜峰
(江蘇科技大學機械工程學院,江蘇 鎮(zhèn)江 212100)
隨著制造業(yè)發(fā)展不斷加快,對產(chǎn)品設(shè)計效率的要求不斷提高,而為設(shè)計圖紙文件申請相應的圖紙編號則是保證車間順利生產(chǎn)及實現(xiàn)產(chǎn)品數(shù)據(jù)管理的重要手段。孫宜然等[1]設(shè)計了一種面向工裝管理的圖號編碼系統(tǒng);黃坤等[2]基于ASP.NET技術(shù)實現(xiàn)圖號的在線申請、審批等功能。然而這些傳統(tǒng)的圖號申請系統(tǒng)大都需要繁瑣的人工交互式操作,自動化與智能化程度很低。在對企業(yè)設(shè)計部門的調(diào)研后發(fā)現(xiàn),在企業(yè)PDM庫中保存了大量設(shè)計資源,而對應設(shè)計圖紙的歷史圖號記錄也保存在PDM中。在企業(yè)產(chǎn)品設(shè)計過程中,一般除直接借用件、標準件外的產(chǎn)品設(shè)計圖紙都需要申請對應的圖號,而這其中60%以上的圖紙圖號在企業(yè)PDM中均存在歷史申請記錄,特別是對于一些企業(yè)中的大批量、常規(guī)型產(chǎn)品,產(chǎn)品設(shè)計圖紙圖號的重復申請率達80%~90%。然而當前大多數(shù)的制造業(yè)企業(yè)所使用的仍然是交互式很強的圖號申請系統(tǒng),造成了設(shè)計人員大量的重復性勞動,從而導致產(chǎn)品的整體設(shè)計效率難以提高。因此,有必要研究智能化的批量圖號申請技術(shù),避免設(shè)計人員的重復性勞動,提高產(chǎn)品的設(shè)計效率。
針對上述問題并結(jié)合企業(yè)實際需求,本文提出了一種基于機器學習的智能圖號申請方法并開發(fā)了相應的圖號申請系統(tǒng)。通過對已有的圖號資源處理后,利用機器學習的方式對這些圖號資源進行學習訓練,從而實現(xiàn)產(chǎn)品零部件設(shè)計圖紙圖號的自動化批量申請。
目前大多數(shù)的制造業(yè)企業(yè)都根據(jù)文獻[3]制定了相關(guān)圖號命名規(guī)則,將圖紙按照技術(shù)特征分為9級,每級10個類屬性,每個類屬性下10個型屬性,每個型屬性下10個種屬性。技術(shù)圖紙編號的組成形式如圖1。圖號申請主要在于確定由級、類、型和種4位數(shù)字組成的屬性圖號,而對應流水號只需讀取PDM庫中對應屬性圖號的最大值加1即可。
本文提出的基于機器學習的智能圖號申請方法,其方案流程如圖2。
圖2 圖號申請系統(tǒng)工作流程
首先,從企業(yè)PDM庫中提取出<零部件名稱,屬性圖號>二元組形式的數(shù)據(jù)并進行去重處理后作為原始數(shù)據(jù)集。其次,獲取當前需要申請圖號的產(chǎn)品零部件集,將需要申請圖號的新零部件與數(shù)據(jù)集中的零部件共同按照名稱使用K-means++算法[4]進行聚類劃分,得到若干零部件簇。其中,每簇內(nèi)可能包含若干個僅含新零部件名稱的殘缺二元組。最后,遍歷所有殘缺二元組,對每個新零部件,在其所在的零部件簇中判斷:若無歷史參考項,則利用KNN算法分配屬性圖號;若存在唯一歷史參考項,則分配該參考項的屬性圖號;若存在多個歷史參考項,說明該新零部件名稱在該零部件簇中對應多個屬性圖號,該新零部件即為“同名異號”件。此時利用基于基于多視圖卷積神經(jīng)網(wǎng)絡(luò)(MVCNN)的相似模型檢索技術(shù)[5],根據(jù)模型最大相似性原則分配屬性圖號。所有新零部件全部獲取屬性圖號后經(jīng)審核無誤進行流水號分配,并寫入對應的零部件模型屬性及PDM庫中。
對需要申請圖號的零部件名稱與數(shù)據(jù)集中二元組的零部件名稱共同分詞后進行One-hot編碼[6],以一個N維向量aN表示零部件名稱,同時aN對應
為提高聚類收斂的速度,避免局部最優(yōu),本文使用K-means++算法。對p個新零部件樣本和數(shù)據(jù)集中的m個歷史零部件樣本共同劃分為K簇后,再對每簇內(nèi)的新樣本分別討論,以提高運算速度。建立融合算法進行圖號申請的主要步驟如下。
步驟 1 在包含m個完整歷 史樣本x≤aN,NUMstr>的原始集中添加p個新的殘缺樣本x≤aN,None> 作為新樣本集 X={x1,x2,···,xm,xm+1,···,xm+p},在 X中以u0≤aN0,NUMstr0>為首個質(zhì)心,此時k=0。
步驟 2 將 A={aNi,i=1, ···,m+p}中的aNi與已有聚類中心uk≤aNk,NUMstrk/None>中aNk的歐式距離作為樣本xi與uk的距離度量D(xi,uk),D(xi,uk)由式(1)計算。
式中:aNiq和akiq分別為向量aNi和aNk的第q個元素。
步驟3 由式(2)計算概率P(xi,uk)得出下一質(zhì)心。
步驟 4 重復 2~3,當k=K時得到 U={u1,u2, ···,uk}為初始聚類中心。
步驟5 進入循環(huán):當xi對應時將xi分配到uk?,得到K簇{c1,c2, ···,ck}。每簇由式(3)重算質(zhì)心。
式(3)中:u'k為更新后的質(zhì)心,mk為ck簇內(nèi)的樣本個數(shù),a'Nk為u'k對應的向量。
步驟6 當質(zhì)心不變時,迭代停止,生成聚類中心集合 U?={u'1,u'2, ···,u'k},最終樣本簇 C?={c'i|
步驟7 進入循環(huán):遍歷存在缺失二元組xinc=
步驟8 所有簇中的所有缺失二元組全部補充完整后,算法進程結(jié)束。
其中,K-means++中的K值利用輪廓系數(shù)法[7]進行評價,獲取不同聚類簇數(shù)K對應的平均輪廓系數(shù),取平均輪廓系數(shù)的最大值所對應的K值為零部件聚類簇數(shù)。
2.3.1 獲取三維模型的二維視圖集
對數(shù)據(jù)集中的“同名異號”件以零部件名稱為父類別,以屬性圖號為子類,從企業(yè)SolidWorks三維模型資源庫中獲取各子類對應的零部件三維模型,利用SolidWorks API函數(shù)獲取其二維視圖集。
2.3.2 基于MVCNN相似模型檢索
基于MVCNN的模型檢索[8]基本原理為利用卷積神經(jīng)網(wǎng)絡(luò)對三維模型的二維視圖集進行訓練,獲取待識別模型的二維視圖導入訓練好的CNN模型中,通過二維視圖的檢索匹配結(jié)果來確定與待識別模型相似件。輕量型卷積神經(jīng)網(wǎng)絡(luò)MobileNet相較于其他神經(jīng)網(wǎng)絡(luò)如VGG[9]、GoogleNet[10]和ResNet[11]等具有參數(shù)量少,運算速度快等優(yōu)點[12],故本文使用MobileNet卷積神經(jīng)網(wǎng)絡(luò)對三維模型的二維視圖集進行訓練和檢索匹配。
MobileNet神經(jīng)網(wǎng)絡(luò)由于對每個輸入通道采用不同的卷積核,故每個通道的輸出只受之前對應通道信息的影響[13]。同時, MobileNet與標準卷積的計算量之比為,當DK=3,兩者計算量之比約為1/9。同時應用中加入歸一化處理并使用ReLU激活函數(shù)。
由于模型二維視圖集分類屬于多分類任務,故選擇交叉熵損失函數(shù)[14](cross-entropy loss function)
為使參數(shù)訓練更穩(wěn)定,選擇Adam優(yōu)化器[15]來調(diào)節(jié)和約束參數(shù)學習率,其公式為
在獲得各“同名異號”件模型的視圖集后,使用MobileNet卷積神經(jīng)網(wǎng)絡(luò)對各父類模型的二維視圖集進行訓練,以屬性圖號作為各父類的樣本標簽,每一父類模型對應一個MobileNet訓練結(jié)果。在2.2步驟7的情況③利用SolidWorks API函數(shù)獲取目標樣本xinc的典型二維視圖,包括等軸測圖、六面視圖、剖視圖及若干隨機旋轉(zhuǎn)角度視圖,確定xinc所屬的模型父類,調(diào)用該父類中的訓練結(jié)果進行三維模型相似性檢索匹配,將匹配到的子類賦予xinc,匹配流程如圖3。
圖3 基于模型相似性檢索的屬性圖號分配流程
從PDM庫中讀取的歷史圖號申請記錄并完成去重去流水號處理后共獲取1 327條有效記錄,將之作為有效二元組寫入原始數(shù)據(jù)集。利用Python中的jieba分詞器將零部件名稱分詞后進行One-hot編碼。表1所示為部分零部件的編碼結(jié)果及其對應的屬性圖號。
表1 部分零部件名稱One-hot編碼示例
“同名異號”件按名稱分類共計39種父類,每一父類中都包含兩個及以上的屬性圖號子類。利用SolidWorks API函數(shù)獲取每個屬性圖號對應模型的二維視圖集,以“.JPG”格式保存模型的各個視圖。圖4為“折彎件”父類中屬性圖號為“KF8.607”子類的部分視圖。
圖4 “KF8.607”折彎件的部分二維視圖
通過對企業(yè)常用零部件種類的歸納分析,結(jié)合輪廓系數(shù)法進行綜合對比,在K-means++算法中取K=22。以企業(yè)某批次冷藏車車廂為例進行圖號申請測試,按照式(3)獲取最終聚類中心,如表2。
以“頂壁木骨架”為目標模型xinc為例,在第2簇內(nèi)計算xinc與其他樣本xi的歐式距離d(xinc,xi),計算結(jié)果如表3。
由表3可知,對“頂壁木骨架”恰好存在唯一的歷史參考樣本x2與xinc使得d(xinc,x2)=0,故將樣本x2的屬性圖號“KF6.712”賦予“頂壁木骨架”。同理,遍歷每簇中的xinc并按照2.2節(jié)所述為每個需要申請圖號的零部件進行分配屬性圖號,直到全部xinc匹配完成后停止。
表3 KNN算法中歐式距離d(xinc ,xi)的計算結(jié)果
對“同名異號”件以“折彎件”父類為例,借助Tensorflow對其6種子類模型視圖集進行訓練,其中,訓練集(Train):驗證集(Val)=8:2。以經(jīng)典CNN模型作為對比并采用SGD優(yōu)化器。兩種模型均進行歸一化,圖像處理為224×224大小,單次訓練圖像數(shù)batchsize=16,訓練次數(shù)epoch=30。繪制兩種模型的Accuracy及Loss曲線,如圖5。
圖5 兩種神經(jīng)網(wǎng)絡(luò)模型的預測準確率與Loss曲線
經(jīng)典CNN模型每次訓練時長45 s,而MobileNet每次的訓練時長約為34 s,后者相較于前者的訓練效率提高20%~30%。對驗證集繪制Heatmap圖反映測試結(jié)果,從圖6可以看出MobileNet模型相比于經(jīng)典CNN模型具有較高的正確率。
圖6 兩種神經(jīng)網(wǎng)絡(luò)模型的Heatmap
基于Visual Studio 2012與PyCharm 2021編譯平臺,通過對SolidWorks 2020進行二次開發(fā),使用VB.NET及Python混合編程完成系統(tǒng)的搭建。讀取SolidWorks裝配體進行圖號批量申請,審核檢查界面如圖7a,并在圖7b修改完成后在圖7c批量分配流水號,最后將完整圖號對應保存寫入SolidWorks模型屬性,關(guān)閉UI界面。
若在本次使用中產(chǎn)生了新的“同名異號”件,后臺程序則對新模型進行歸類,根據(jù)本次使用記錄添加新子類并獲取其三維模型的二維視圖集,重新對該父類模型下的屬性圖號子類進行CNN訓練,生成新的訓練結(jié)果,以供下一次調(diào)用。
從正確率及申請耗時對系統(tǒng)進行評估,對企業(yè)20個冷藏車的訂單批次進行測試,利用程序自動篩出標準件、借用件,統(tǒng)計系統(tǒng)申請耗時及圖號正確率,并與人工申請耗時對比,繪制如圖8。
圖8 人機圖號申請耗時及系統(tǒng)申請正確率
在使用系統(tǒng)申請圖號時,綜合程序運行時間、人工修改檢查時間及圖號寫入模型屬性所需的總時間,總耗時平均在10~15 min,而人工申請圖號的耗時平均在1 h。同時,系統(tǒng)圖號申請的正確率均在95%以上,在誤差率可接受范圍內(nèi)可節(jié)省80%以上的時間,效率可提高5~6倍。
申請結(jié)果之所以存在誤差,原因之一是一個批次訂單中可能需要設(shè)計若干個全新的零部件,這使得圖號在分配時無法保證100%的正確率。除此之外,從圖6中可以發(fā)現(xiàn),如果“同名異號”件之中存在少數(shù)三維模型相似度很高的情況,MobileNet卷積神經(jīng)網(wǎng)絡(luò)模型也并不能達到100%的預測正確率。
同時,針對導致誤差的原因,本文探索性地提出兩點以提高圖號申請的準確率:首先,規(guī)范設(shè)計人員的圖紙名稱命名方式以保證算法匹配的準確率。其次,針對“同名異號”件也考慮其他更為準確、快速且適合的三維模型相似性識別方法。除本文使用的基于多視圖的識別思想外,基于體素或點云的三維模型識別方法也能夠準確地進行三維模型的匹配,但同時也需要考量識別耗時,以求達到正確率與耗時之間的良好平衡。
本文針對制造型企業(yè)設(shè)計過程中存在的圖號申請耗時多、效率低的問題設(shè)計了一種智能圖號批量申請系統(tǒng)?;跈C器學習的思想充分利用歷史圖號申請記錄對當下的圖號申請進行決策,將K-means++、KNN和MVCNN等算法結(jié)合實際需求進行融合和改進,在保證正確率的同時大大縮減了圖號申請的耗時,提高了產(chǎn)品設(shè)計的效率。