陸 凱,李迎光,劉 旭,鄧天池
(1.南京航空航天大學機電學院,南京 210016;2.南京工業大學機械與動力工程學院,南京 210009)
框、粱、壁板和接頭等飛機結構件通常由數控加工的方式進行制造,加工質量和效率將直接影響整機性能和生產研制周期。傳統的數控加工工藝決策以人工交互模式為主,由于飛機結構件結構復雜且加工精度要求高,工藝決策時需手動提取幾何形狀信息構造加工區域,不僅重復工作量大、效率低,而且極易出錯。加工特征是具有特定加工工程語義的幾何形狀,將加工特征與加工區域構造規則關聯,便可通過加工特征識別技術從零件中自動提取加工特征信息,進而實現加工區域自動構造。典型的特征識別方法主要有基于圖的特征識別方法[1]和基于痕跡的特征識別方法[2]。
基于圖的特征識別首先將零件表示成圖,然后將圖分解為特征子圖,并利用子圖同構算法將特征子圖和預定義特征進行匹配。Joshi等[3]首次提出了基于AAG圖的特征識別方法,通過子圖匹配能夠高效地識別孤立的特征。然而當多個加工特征相互耦合或相交時,這些加工特征對應的特征子圖不再擁有完整的拓撲邊界,導致從AAG分解出的特征子圖會缺失了部分節點和邊,造成分解出的特征子圖和模板特征不匹配,這使得相交特征的識別成為了一個難題。對此,虛鏈接技術得到了大量的研究和發展[4–8],其核心思想是根據不同特征相交模式制定特定規則,從而重新建立缺失節點和特征子圖之間的鏈接關系,恢復特征子圖缺失的節點。然而由于復雜零件相交特征的模式十分龐雜,無法事先完全定義,因此復雜零件相交特征的識別仍然是一個難題[9]。
基于痕跡的特征識別方法首先定義特征的痕跡,痕跡是一種可以用于推理從而反求出完整特征的線索,且不會因為特征相交而被破壞,常見的痕跡有幾何線索[10]和非幾何線索[11]兩種;然后根據痕跡的定義規則構建痕跡生成器,進而從零件模型提取出所有可能的特征痕跡;最后基于幾何推理對痕跡進行補全,得到完整的加工特征。Vandenbrande和Requicha[12]首次提出了基于痕跡的特征識別方法,能夠補全槽、孔等加工特征,但存在痕跡冗余的問題。Gao等[13]以最小條件子圖(MCSG)作為痕跡,并通過圖分解生成所有的MCSG,每個生成的MCSG都對應了一個加工特征,從而避免了痕跡冗余。程少杰等[14]基于“層”定義槽腔特征的痕跡,并利用分層槽腔特征相交的特點,建立幾何推理規則補全“層”痕跡,得到完整的槽腔特征。Wang等[15]按特征相交改變拓撲方式定義了四類相交特征,并基于特征面搜索規則生成并補全相交特征痕跡。基于痕跡的特征識別方法極大地提升了相交特征識別能力,但由于痕跡的生成和補全算法依賴預先定義的特征相交模式來制定幾何推理規則,因而仍難以解決復雜零件的特征相交問題。
對于飛機結構件等復雜零件而言,不同加工特征相交的方式是任意的,因而特征相交的模式幾乎是無限的。因此上述方法雖然能在一定程度上識別特定的相交特征,但由于需要預先定義特征相交的模式,難以解決復雜零件的特征相交問題。針對上述情況,本文提出了一種數據驅動的加工特征識別方法,不采用預先定義相交特征模式的思路,而是從歷史工藝數據中自適應地學習特征識別規則,來實現對復雜零件相交特征的識別。
本文將加工特征識別問題轉化為圖學習問題,進而通過構建圖神經網絡模型從歷史工藝數據中學習出特征識別規則。所提方法是一種通用的加工特征識別方法,適用于框、粱、壁板等多種類型的飛機結構件的特征識別。方法的流程如圖1所示,主要包括4個步驟:
Step1:零件模型的屬性圖表示。
通過將零件模型表示為屬性圖,加工特征識別問題則轉化為圖分解的問題。
Step2:基于圖神經網絡的加工特征分離。
建立圖神經網絡模型GNNsplit將零件屬性圖分解為孤立特征子圖和相交特征子圖,其中孤立特征子圖直接作為特征識別的結果,而相交特征子圖則要進一步識別。
Step3:基于圖神經網絡的特征痕跡生成。
建立圖神經網絡模型GNNhint將Step2得到的相交特征子圖分解為一系列痕跡特征子圖,每個痕跡特征子圖對應了一個加工特征的痕跡。
Step4:基于神經網絡的特征痕跡補全。
建立神經網絡模型NNfxi對Step3得到的痕跡特征子圖進行痕跡補全,從而得到完整的加工特征子圖。
屬性圖G的定義為:G=(V,E,H),其中V是圖中節點的集合,E是圖中邊的集合,反映了節點之間的連接關系,H={h1,h2, …,hn},H∈(F×n),表示屬性矩陣,它的列向量hi表示第i個節點vi的屬性向量,vi∈V,F是節點屬性的維度,n是節點的數量。在計算機存儲中,通常使用鄰接矩陣A∈(n×n)存儲V和E的關系,第i行j列的矩陣元素Aij為:

圖1 總體流程Fig.1 Workflow of the proposed method

其中(vi,vj)表示節點vi和vj的連接關系。通過鄰接矩陣A和屬性矩陣H,就可以唯一地構建屬性圖。
對于一個零件模型而言,零件上所有的面組成了節點的集合V,所有的邊組成了邊的集合E,鄰接矩陣A則由零件上面–面連接關系確定,如圖2所示,黃、綠、紫3種顏色節點對應了3個筋頂特征,橙色節點對應了一個槽腔特征,該槽腔特征由兩層的內型特征組成。而屬性矩陣H則由零件模型中所有面的屬性向量組成,每個屬性向量存儲了一個面的幾何和拓撲信息,如面的法向量、面類型等,典型的面屬性如表1所示。
當零件模型表示為屬性圖之后,零件中的加工特征則對應了屬性圖的子圖,稱為加工特征子圖。圖2 (b)的屬性圖包含了5個加工特征子圖,分別為{r1,r2,r3},{r4},{r5,r6,r7}, {s1,s2,s3,s4,i1,i2}, {i1,i2,s5,s6,s7,s8},如圖3所示。加工特征子圖按特征是否相交來劃分,可以分為孤立特征子圖和相交特征子圖。其中孤立特征子圖由一個加工特征子圖組成,其拓撲結構不會受到其他加工特征的影響,因而擁有完整的拓撲邊界,如{r1,r2,r3}, {r4}, {r5,r6,r7};而相交特征子圖由兩個以上的加工特征子圖相交而成,如{s1,s2,s3,s4,i1,i2}∪{i1,i2,s5,s6,s7,s8},∪表示求并集,i1,i2是公共節點。存在公共節點是特征相交的主要原因,這往往導致加工特征子圖失去完整的拓撲邊界。
基于圖的加工特征識別主要思路為:把屬性圖分解為一個個加工特征子圖。以識別圖3的加工子圖為例,通過合理地刪除圖2(b)屬性圖中的一些邊,可以很容易地從屬性圖分解出圖3的①②③三個加工特征子圖,但無法直接得到圖3中④和⑤兩個加工特征子圖,因為④和⑤都需要節點i1和i2,而通過刪除邊的方式最多只能保證④⑤中的一個加工特征子圖得到節點i1和i2,另一個加工特征子圖將缺失i1和i2兩個節點,本文稱這種缺失節點的加工特征子圖為痕跡特征子圖,它以子圖的形式保留了原來完整加工特征存在的幾何線索,該線索可以用來補全痕跡特征子圖中缺失的節點,從而得到完整的加工特征子圖。

表1 典型的面屬性Table 1 Typical face attributes

圖2 零件模型的屬性圖表示Fig.2 Part model representation based on attributed graph

圖3 加工特征子圖Fig.3 Subgraphs corresponding to machining features
本文屬性圖的分解過程分為了兩個階段:第一階段,只從屬性圖分解出孤立特征子圖,而保證剩下的相交特征子圖的完整性,實現孤立特征子圖和相交特征子圖分離。第二階段,再從相交特征子圖分解出痕跡特征子圖,以此作為完整特征留下的幾何線索對痕跡特征子圖缺失的節點進行補全,得到完整的加工特征子圖。
加工特征分離的主要任務是將屬性圖分解為孤立特征子圖和相交特征子圖,如圖4所示。圖4(a)是零件屬性圖,其中黃、綠、藍3類節點對應了3個孤立特征子圖,橙色節點對應了一個相交特征子圖,圖上的邊被分為“1”和“0”兩種類別,“1”號表示需要打斷的邊,“0”號表示需要保留的邊。圖4(b)是打斷“1”號類型邊之后的分離結果,實現了加工特征分離。
因此,通過對邊進行打斷/保留二分類即可實現加工特征分離。然而傳統基于凸邊打斷規則的圖分解算法無法滿足分離孤立特征和相交特征的要求,因為相交特征子圖的內部存在凸邊,打斷其內部的凸邊破壞了相交特征子圖的完整性。本文建立了基于圖神經網絡的邊二分類模型(GNNsplit),使用帶有邊分類標簽的樣本數據進行訓練,從而學出特征分離所需的邊打斷/保留的分類規則。GNNsplit模型由聚集層、表示層以及密集層組成,模型的輸入為組成零件屬性圖的鄰接矩陣A和屬性矩陣H。屬性矩陣H首先輸入到GNNsplit模型,在聚集層根據鄰接矩陣A讓每個節點聚集其鄰居節點的屬性,在表示層使用聚集后的節點屬性來表示邊的屬性,最后在密集層將邊的屬性向量映射到邊的二分類別。GNNsplit模型的結構如圖5所示。
3.1 聚集層
聚集層的主要任務是實現鄰居節點屬性的聚集,屬性聚集是學習屬性圖中拓撲信息的重要方式。通常一個圖神經網絡模型通常會構建2~3個聚集層從而充分學習拓撲信息。對于每一個聚集層,屬性圖上的每個節點都會吸收其鄰居節點的屬性一次,以聚集節點v的鄰居屬性為例:

式中,k表示第k個聚集層,即第k次屬性聚集。是節點v的鄰居聚集向量,它聚集了節點v的鄰居屬性,N(v)是節點v的鄰居節點的集合表示鄰居節點u經過k–1次聚集后的屬性向量,特別地,當k=1時,=hu是初始輸入的屬性向量,hu∈H,HF×n。AGG是聚集函數,決定了節點v聚集鄰居節點屬性的方式,本文使用了注意力聚集函數來實現自適應聚集,即,它使用注意力系數決定每個鄰居屬性所占的比例,并且在模型的訓練迭代中不斷更新注意力系數[16]。注意力系數計算方式如下:

圖4 加工特征分離Fig.4 Separation of machining features

圖5 圖神經網絡模型結構Fig.5 Architecture of the graph neural network

式中, || 表示向量拼接,u∈N(v)是節點v的鄰居節點,aT∈1×2F是可學習的參數向量,W∈F'×F是可學習的參數矩陣,用于對輸入向量做線性變換,Whv∈F'×1,Whu∈F'×1,F'是線性變換后屬性維度。然后利用softmax函數對所有鄰居的注意力系數evu做規范化處理:

其中,αvu是規范化的注意力系數,決定了多少比例吸收鄰居u屬性,αvu的值在0~1之間,且∑u∈N(v)αvu=1。
將式(4)實現的注意力聚集函數帶入式(2):

式中,σ是激活函數,是第k個聚集層的節點v對該節點鄰居u進行規范化的注意力系數,Wk是聚集層k的參數矩陣,是節點u在k–1層的屬性向量。
式(5)只聚集一次鄰居節點的屬性向量,稱為單頭部聚集。有時候為了更好的學習效果,常使用多頭部聚集,即每層對每個節點聚集鄰居節點的屬性多次,進而得到多組鄰居聚集向量,最后將這些向量拼接起來作為該節點在當前聚集層最終的鄰居聚集向量,如式(6)所示,nheads表示頭部的數量,∪是拼接符號。在實際任務中,聚集層頭部的數量以及每個頭部使用的單元數都作為超參數經過試驗和經驗確定。

拼接式(6)得到鄰居聚集向量和上一層的聚集向量,得到節點v當前層的聚集向量,如式(7)所示。

最后,將最后一個聚集層聚集出的節點v聚集向量記作將所有節點聚集向量組成的聚集屬性矩陣記作H',H'∈F'×n。

除了上述基于多頭部的注意力聚集方式外,還有一些其他優秀的聚集方式或聚集模型可供選擇,如Geniepath[17],GraphSAGE[18]。在 實際應用中,可以通過多次嘗試來選擇適合實際任務的聚集方式。
3.2 表示層
表示層的功能是使用節點的聚集屬性矩陣H'得到邊的特征矩陣He={he1,he2, …,hem},He∈F'×m,m是屬性圖邊的個數,hei是第i條邊特征向量,hei∈F'×1。假設第i條邊ei連接的兩個節點為u,v,則:

引入表示向量ci=[0, …, 1, …, 1,…0]T,ci∈n×1,n是節點數量。ci有兩個位置的值為1,分別對應了邊ei連接的兩個節點u和v。則式(10)可改寫為:

令表示矩陣C={c1,c2, …,cm},則邊的特征矩陣He計算方式如下:

3.3 密集層
密集層的功能是實現從邊的特征矩陣He到邊的二分類別的映射。密集層通常由1~3層的全連接神經網絡組成,記最后一層輸出為hout={hout1,hout2},邊的分類結果為y={y1,y2},y1+y2=1。


最后使用分類結果y和分類標簽的交叉熵定義損失函數L(y,):

其中是one–hot編碼的邊類別標簽向量,N表示樣本總數。
在上一節中,零件屬性圖被分解為孤立特征子圖和相交特征子圖,為了進一步識別其中的相交特征,使用痕跡特征子圖作為特征的痕跡。
本節的主要任務就是通過圖分解將相交特征子圖分解為一系列痕跡特征子圖,每個痕跡特征子圖對應了唯一的加工特征,如圖6所示。圖6(a)是上一節得到的相交特征子圖,包含了兩個加工特征,分別使用橙、藍兩種顏色節點表示,其中混合顏色節點表示特征相交造成的公共節點,相交特征子圖內部的邊被分為“1”和“0”兩類,其中“1”表示需要打斷的邊,“0”表示需要保留的邊。圖6(b)是打斷類型為“1”的邊之后生成的兩個痕跡特征子圖,可以看出雖然藍色加工特征在打斷過程中失去了公共節點,但仍然保留了完整加工特征存在的部分幾何信息。
痕跡特征子圖的生成過程等價于對相交特征子圖中的邊進行打斷/保留的二分類,本節同樣基于圖神經網絡算法構建了邊二分模型(GNNhint)。模型訓練所需標簽構造方式為:不同孤立特征子圖間的邊設置為“1”表示打斷,相同孤立特征子圖內部的邊設置為“0”表示保留,對于共有節點采取隨機劃分的策略,其邊的打斷和保留取決于該節點劃分給哪個加工特征子圖。
GNNhint的輸入為定義相交特征子圖所需的鄰接子矩陣Asub和屬性子矩陣其中n'表示相交特征子圖所含節點的數量。GNNhint模型的結構與上一節點分離加工特征的圖神經網絡邊二分模型GNNsplit一致,不同之處在于模型架構的超參數不同,如聚集層的層數等。最后根據GNNhint輸出的邊二分結果,利用連通子圖算法得到一系列痕跡特征子圖。
本節根據痕跡特征子圖留下的幾何線索對痕跡進行補全以得到完整的加工特征子圖。顯然痕跡特征子圖中缺失的節點一定屬于其所在的相交特征子圖,因此其補全流程為:遍歷相交特征子圖中的節點,并根據幾何線索判斷每個節點是否屬于當前痕跡特征子圖,如果屬于則將該節點加入到該痕跡特征子圖,如圖7所示。
上述痕跡補全的流程可以看成對相交特征子圖中所有的節點進行分類,類別“1”表示節點屬于該痕跡,類別“0”表示節點不屬于該痕跡。本文基于神經網絡算法建立了節點二分類模型(NNfix),該模型根據痕跡提供的幾何線索判斷相交特征子圖中每個節點與該線索的關系。
NNfix模型是由多個全連接層組成神經網絡。首先將痕跡特征子圖反映的幾何線索編碼為痕跡向量hclue,編碼方式為對痕跡特征子圖中所有節點的屬性向量求平均。接著對于相交特征子圖中的每個節點v,將其屬性向量hv與痕跡向量hclue拼接得到NN模型的輸入向量hin,如式(17)所示。

經過多個全連接層對hin進行多次非線性變換,并記最后一層全連接的輸出為hout,那么類似式(13~16),通過softmax函數可以計算出節點分類結果,并構造出類似的交叉熵損失函數。最后根據節點分類結果即可補全痕跡特征子圖,得到完整的加工特征子圖。
由于不同類型的飛機結構件的工藝數據存在較大差異,因此為了滿足深度學習訓練集和測試集數據獨立同分布假設,需要為不同類型的飛機結構件使用各自的工藝數據分別訓練數據驅動模型,從而保證數據的同源性。本文使用框類零件驗證了所提方法識別加工特征的能力。
本文使用航空制造企業8個框類復雜飛機結構件的歷史工藝數據訓練了本文數據驅動模型,并根據實際零件特點設計了1個測試零件用于展示本文方法識別出的加工特征,這9個零件一共包含了2113個加工特征,其中孤立特征938個,相交特征1175個,詳細信息如表2所示,表中相交特征數是指包含在相交特征中的加工特征總數。由于零件模型信息以及加工特征信息保存在CATIA相應文件中,本節首先從CATIA文件中提取并預處理加工特征數據,然后劃分數據集,接著介紹GNNsplit、GNNhint、NNfix3個模型的訓練,最后給出了試驗結果。
(1)數據提取。基于Microsoft VS C++以及CATIA二次開發組件CAA開發了一套數據提取工具,用于自動從CATIA歷史文件中提取零件模型的屬性圖和加工特征。

圖6 痕跡特征子圖生成過程Fig.6 Generation of hint feature subgraphs

圖7 痕跡特征子圖補全Fig.7 Completion of hint feature subgraph
(2)預處理。根據加工特征自動識別任務和復雜飛機結構件的特點,最終選取了9個屬性共18個維度,如表3所示。在提取完零件的屬性矩陣之后,需要對各個屬性做一些處理,通常為了減小異常樣本數據的影響,提高模型收斂速度,會對數值較大、分布較廣的屬性作歸一化處理。本文使用了線性歸一化方法,讓屬性的值放縮到0到1之間。以對屬性x進行歸一化為例。

式中,xmin和xmax分別對應屬性x在樣本中取到的最小和最大值,xnorm是屬性歸一化后的結果。本文一共對序號為4~9的屬性作了歸一化處理。
(3)數據集劃分。以1~7號零件為訓練集,8號零件為驗證集,9號零件為測試集,則3個模型使用的樣本數量如表4所示。
GNNsplit、GNNhint、NNfix3個模型均基于Tensorflow[19]深度學習框架構建,使用訓練集數據分別訓練了這3個深度學習模型,均使用adam優化器來優化模型可學習的參數矩陣,3個模型結構方面的超參數設置如表5所示。
圖8是GNNsplit、GNNhint和NNfix3個數據驅動模型在訓練集和驗證集上的損失函數收斂曲線,分別訓練 了3200輪、2000輪 和3200輪。表6是3個模型的預測精度,其中測試集上的精度分別達到了97.4%、98.2%和96.5%。需要注意的是,在測試階段GNNhint的輸入是GNNsplit模型預測得到的相交特征子圖分離結果,而NNfix的輸入是GNNsplit模型預測得到的痕跡特征子圖的結果,由于3個模型存在一定的依賴關系,造成測試集的精度相比訓練集有所下降。
根據數據驅動模型預測結果,從9號測試零件屬性圖中分解出所有的加工特征子圖,鑒于篇幅,選擇了其中一個槽腔的識別結果作為顯示,如圖9所示,其中“s”開頭節點表示側面,“b”開頭節點表示底面,“h”開頭節點表示孔的側面,“r”開頭節點表示筋頂面。

表2 歷史工藝數據的詳細信息Table 2 Details of the historical data

表3 試驗選取的屬性選擇Table 3 Selected attributes for test

表4 數據驅動模型樣本數量Table 4 Size of sample sets of data-driven models

表5 模型超參數設置Table 5 Hyper-parameters of models

圖8 數據驅動模型損失函數收斂曲線Fig.8 Convergence of loss function on the proposed data-driven models

表6 數據驅動模型的精度Table 6 Accuracy of the proposed data-driven models
最后通過識別準確率衡量了本文所提算法的識別精度,包含孤立特征識別率(acc1)、相交特征識別率(acc2)和總的加工特征識別率(acc3),分 別 為98.11%、94.62%和96.18%,如表7所示。

式中,correctisolate表示孤立特征識別正確的數量,allisolate表示總的孤立特征數量,correctinteract表示相交特征識別正確的數量,allinteract表示總的相交特征包含的孤立特征總量。

圖9 測試零件的部分特征識別結果Fig.9 Some feature recognition results of test part

表7 測試零件的加工特征識別率Table 7 Correct feature recognition rates of the test part
本文提出了一種數據驅動的飛機結構件加工特征識別方法,從歷史工藝數據中學習特征識別的知識。本文的主要貢獻如下:
(1)提出了數據驅動的加工特征識別研究思路,消除對預先定義特征相交模式的依賴,從歷史數據中自適應學習特征識別規則。
(2)提出了基于圖神經網絡的飛機結構件加工特征識別方法,首先通過特征分離算法得到孤立特征和相交特征,再通過痕跡生成和補全算法進一步將相交特征分解為加工特征的集合,實現相交特征識別。
通過選用典型飛機結構件進行特征識別測試,測試結果表明所提方法具有較高加工特征識別精度,能夠識別飛機結構件復雜相交特征,驗證了方法的有效性。目前該方法無法保證識別結果完全正確,為了保證工藝編程的可靠性仍需要少量的人工校驗。未來將考慮更多的實際零件及歷史工藝數據,以此確定最佳的圖神經網絡結構,并推進所提方法在航空制造企業進行實際應用。