蘇 偉,秦緒國,王 薇,李 強(qiáng),劉文伶
(1.北京航天長征飛行器研究所,北京,100076;2.火箭軍裝備部駐北京地區(qū)第一軍代表室,北京,100076)
飛行器氣動設(shè)計的一個重要環(huán)節(jié)是對飛行器在不同飛行條件下的流場進(jìn)行預(yù)示,并對流場進(jìn)行快速分析。流場分析首先需要準(zhǔn)確檢測出流場中存在的典型流場結(jié)構(gòu),這些流場結(jié)構(gòu)會對氣動特性產(chǎn)生較大的影響,例如氣流分離、激波邊界層干擾等流場結(jié)構(gòu),會導(dǎo)致飛行器阻力增加、力矩非線性增強(qiáng)或者局部加熱嚴(yán)重等問題,因此,在氣動布局設(shè)計和氣動外形優(yōu)化時,應(yīng)通過外形參數(shù)調(diào)整盡量避免出現(xiàn)這些流動特征,以提升飛行器的性能指標(biāo)。此外,在邊界轉(zhuǎn)捩、氣動光學(xué)、氣動噪聲等氣動問題的研究中,需要對局部流場結(jié)構(gòu)進(jìn)行分析,總結(jié)流動參數(shù)不均勻分布、非定常脈動等規(guī)律,為環(huán)境評估提供依據(jù)。
當(dāng)前CFD計算數(shù)據(jù)的流場結(jié)構(gòu)分析工作主要依靠設(shè)計人員手動完成,需要借助流場后處理軟件對計算流場進(jìn)行處理并獲得流場圖像,然后人為判斷流場結(jié)構(gòu)的位置和大小。因此在對大量的數(shù)據(jù)進(jìn)行分析時,該方法存在效率低的問題,因此,需要發(fā)展自動化的流場結(jié)構(gòu)檢測方法。
通常的流場結(jié)構(gòu)檢測依據(jù)的是基于物理規(guī)律形成的判別準(zhǔn)則。流場由大量定義于空間流場離散點上的流場參數(shù)組成,空間中不同位置的不同流場參數(shù)相互之間存在非線性依賴關(guān)系,即流場結(jié)構(gòu)同時具有局部性和全局性特征。對于如渦、激波邊界層干擾這類復(fù)雜結(jié)構(gòu),具有高維度高度非線性的特點,建立準(zhǔn)確有效的判別準(zhǔn)則非常困難。人工智能是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué),不僅在圖像處理等領(lǐng)域得到了廣泛的應(yīng)用[1-2],并且在流體力學(xué)中也得到越來越多的研究[3-6]。由于人工智能技術(shù)在處理高維度非線性復(fù)雜問題上的能力和效率具有巨大的優(yōu)勢,通過人工智能方法對復(fù)雜流場結(jié)構(gòu)特征進(jìn)行學(xué)習(xí),并應(yīng)用于流場結(jié)構(gòu)的自動檢測,是流場分析效率提升的途徑之一。
針對飛行器氣動設(shè)計中現(xiàn)有的流場結(jié)構(gòu)分析手段效率低的問題,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的流場結(jié)構(gòu)自動檢測的方法,并進(jìn)一步嘗試?yán)媒鹱炙Y(jié)構(gòu)方法對待檢測流場進(jìn)行預(yù)處理,以期訓(xùn)練后的模型可以用于大范圍流場結(jié)構(gòu)的快速準(zhǔn)確檢測。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是由多個卷積層和池化層構(gòu)成的特征抽取器[7],結(jié)構(gòu)見圖1。在卷積神經(jīng)網(wǎng)絡(luò)的卷積層中,一個神經(jīng)元只與部分鄰層神經(jīng)元連接。在CNN 的一個卷積層中,通常包含若干個特征平面(Feature Map),每個特征平面由一些按照矩形規(guī)則排列的神經(jīng)元組成,同一特征平面的神經(jīng)元共享權(quán)值,這里共享的權(quán)值就是卷積核(Kernel)[8]。卷積核一般以隨機(jī)小數(shù)矩陣的形式初始化,在網(wǎng)絡(luò)的訓(xùn)練過程中卷積核將學(xué)習(xí)得到合理的權(quán)值。共享權(quán)值(卷積核)帶來的直接好處是減少網(wǎng)絡(luò)各層之間的連接,同時又降低了過擬合的風(fēng)險。池化(Pooling)也叫作下采樣,通常有均值子采樣(Mean Pooling)和最大值子采樣(Max Pooling)兩種形式。子采樣可以看作一種特殊的卷積過程。卷積和池化大大簡化了模型復(fù)雜度,減少了模型的參數(shù)。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意Fig.1 The schematic of convolutional neural networks
典型的神經(jīng)元結(jié)構(gòu)如圖2所示。
圖2 典型的神經(jīng)元結(jié)構(gòu)[9]Fig.2 The structure of a typical neuron
神經(jīng)元的輸入和輸出之間的關(guān)系可以表示為
式中xj(j= 1,2,…,n)為神經(jīng)元的輸入;λji為神經(jīng)元j到神經(jīng)元i的權(quán)值;θi為偏置值;f(?)為激勵函數(shù)或傳遞函數(shù),通常為閾值函數(shù)、Sigmoid 函數(shù)、tanh 雙曲正切函數(shù)。
本文采用卷積神經(jīng)網(wǎng)絡(luò)自主學(xué)習(xí)不同流場結(jié)構(gòu)特征,創(chuàng)新性地使用金字塔結(jié)構(gòu)方法對大范圍流場進(jìn)行預(yù)處理,解決訓(xùn)練與預(yù)測的流動特征不匹配問題,從而更加準(zhǔn)確地從大范圍的流場數(shù)據(jù)中快速自動檢測出包含典型流場結(jié)構(gòu)的區(qū)域并確定其類別。該方法用機(jī)器學(xué)習(xí)取代了以往人工提取流場特征的過程,使流場結(jié)構(gòu)檢測的難度大大降低,其實現(xiàn)途徑與圖像檢測方法類似,步驟如圖3所示。
圖3 流場結(jié)構(gòu)檢測算法流程示意Fig.3 Flow chart of flow field structure detection algorithm
a)根據(jù)需要選擇并構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)。根據(jù)計算需求從常用的網(wǎng)絡(luò)模型中選擇合適的網(wǎng)絡(luò)結(jié)構(gòu),常用 的 網(wǎng) 絡(luò) 模 型 有LeNet 模 型[9]、AlexNet 模 型[10]、ResNet 模型[11]等。網(wǎng)絡(luò)的輸入通道個數(shù)需要與流場參數(shù)的個數(shù)保持一致。
b)流場數(shù)據(jù)集的構(gòu)建。根據(jù)需要檢測的流場結(jié)構(gòu)類型進(jìn)行構(gòu)建。采用計算仿真獲得足夠數(shù)量的流場數(shù)據(jù)并從中采樣。樣本包含兩類:一類是正樣本,即包含了該類型流場結(jié)構(gòu)的數(shù)據(jù);另一類是負(fù)樣本,即不包含該類型流場結(jié)構(gòu)的數(shù)據(jù)。
c)為了能夠在不增加樣本數(shù)量的前提下盡量提高網(wǎng)絡(luò)的泛化能力,采用交叉驗證(Cross-validation)技術(shù)[12],將樣本集分為訓(xùn)練集和驗證集兩個集合。訓(xùn)練集用來訓(xùn)練網(wǎng)絡(luò)參數(shù),在驗證集上計算模型的預(yù)測誤差用于模型驗證。常用的交叉驗證方式是k-fold交叉驗證方法,該方法是將樣本集分為k個大小相等但不相交的集合S,每次從S中選取不同的集合作為驗證集,剩余的k-1個集合作為訓(xùn)練集,這樣一共進(jìn)行k次,然后將得到的k個預(yù)測誤差取平均值即為神經(jīng)網(wǎng)絡(luò)的無偏預(yù)測誤差估計。
d)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)?;谝延械挠?xùn)練樣本,首先對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行微調(diào),然后采用監(jiān)督學(xué)習(xí)策略開展卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,優(yōu)化確定權(quán)值,基于驗證集對檢測正確率進(jìn)行判斷,如不能滿足要求,則重新進(jìn)行新一輪訓(xùn)練,直至驗證集上的正確率滿足要求。
e)流場結(jié)構(gòu)檢測。利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),遍歷需要檢測的流場測試數(shù)據(jù),開展不同區(qū)域的流場結(jié)構(gòu)檢測任務(wù)。在檢測過程中,存在需要檢測的流場結(jié)構(gòu)尺度可能與樣本存在較大差異的問題,表現(xiàn)為訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)對流場數(shù)據(jù)的分辨率與待檢測流場的分辨率不匹配。針對該問題,采用金字塔方法對待檢測流場數(shù)據(jù)進(jìn)行預(yù)處理。金字塔數(shù)據(jù)結(jié)構(gòu)分為兩種:高斯金字塔和拉普拉斯金字塔[13]。其中高斯金字塔結(jié)構(gòu)相對簡單,底層為原始流場,通過高斯濾波和1/2采樣依次向上得到不同層級數(shù)據(jù)。在進(jìn)行流場數(shù)據(jù)處理后,以訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)輸入作為檢測窗口,對不同金字塔結(jié)構(gòu)中不同層級的數(shù)據(jù)進(jìn)行掃描,標(biāo)記每層數(shù)據(jù)上的潛在區(qū)域,保存區(qū)域左上角的坐標(biāo)和尺寸。所有金字塔中的數(shù)據(jù)處理完成后,將保存的所有區(qū)域反向映射到最底層的原始流場數(shù)據(jù)中,最后將所有重疊的潛在區(qū)域進(jìn)行融合,得到最終檢測結(jié)果。
漩渦是流場中最主要的結(jié)構(gòu)形式之一,特別是分離渦,對飛行器局部流場和氣動特性產(chǎn)生非常大的影響,也是氣動設(shè)計關(guān)注的重點。以二維流場中的渦結(jié)構(gòu)檢測為例,對上文提出的基于卷積神經(jīng)網(wǎng)絡(luò)的流場結(jié)構(gòu)檢測方法進(jìn)行驗證。
為了提升模型在結(jié)構(gòu)實際檢測中的準(zhǔn)確性,構(gòu)建的訓(xùn)練數(shù)據(jù)集應(yīng)該保證結(jié)構(gòu)特征的多樣性和代表性。在二維流動的情況下,點渦模型用一個點來表示渦旋,計算中可對渦旋強(qiáng)度等自由控制,描述了渦旋的大部分行為規(guī)律。故二維渦結(jié)構(gòu)的訓(xùn)練樣本采用點渦模型計算生成,計算公式如下:
式中vφ為誘導(dǎo)速度;Γ為渦強(qiáng);r為當(dāng)前位置到渦核的距離。
通過隨機(jī)選取不同來流速度方向、點渦位置和渦強(qiáng),共生成樣本(正樣本)1 500個,每個樣本的網(wǎng)格數(shù)量均為32×32,包含流場參數(shù)為u、v,如圖4 所示,同時生成不包含點渦的流場樣本(負(fù)樣本)500個。
圖4 樣本數(shù)據(jù)示意Fig.4 Ⅰllustration of the sample set
基于TensorFlow 平臺搭建所需的卷積神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)結(jié)構(gòu)采用了經(jīng)典的LeNet[7]網(wǎng)絡(luò),其包含:卷積層3 個,池化層2 個,全連接層2 個。為適應(yīng)樣本網(wǎng)格數(shù)量,將輸入層的大小調(diào)整為32×32,通道數(shù)為2。
采用k-fold交叉驗證方法對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,k取為10,即選取樣本數(shù)據(jù)集中的1 800 個樣本為訓(xùn)練集,剩余200個樣本為驗證集。經(jīng)過訓(xùn)練,網(wǎng)絡(luò)在驗證集上的檢測準(zhǔn)確率達(dá)到99.6%。
在模型離線訓(xùn)練完成后,針對大量的實時二維大范圍流場,即可實現(xiàn)實時的渦結(jié)構(gòu)在線檢測,快速準(zhǔn)確標(biāo)定出渦結(jié)構(gòu)的位置及大小。該流場從繞平板流動尾流場中截取部分區(qū)域得到,如圖5所示。
圖5 計算模型Fig.5 The computional model
平板繞流的來流馬赫數(shù)為0.1,攻角為0°,采用數(shù)值求解N-S 方程方法得到。在N-S 方程求解過程中,采用LU-SGS 時間推進(jìn),空間離散格式采用Roe格式,湍流模型采用S-A模型,采用多重網(wǎng)格加速收斂。網(wǎng)格數(shù)量為193×513。
計算得到的某時刻的待檢測流場如圖6 所示。從圖6 中可見,渦結(jié)構(gòu)主要集中在流場左右兩側(cè)區(qū)域。
圖6 待檢測區(qū)域流場Fig.6 Flow field region to be detected
建立3 層金字塔數(shù)據(jù)結(jié)構(gòu),以網(wǎng)格大小32×32 為檢測窗口依次對不同層級的待檢測區(qū)域進(jìn)行檢測。檢測方法為沿流向和法向兩個方向依次滑動掃描,檢測結(jié)果如圖6中方框所示。結(jié)果基本涵蓋了渦結(jié)構(gòu)的大部分區(qū)域,完成了模型對渦結(jié)構(gòu)位置和大小進(jìn)行準(zhǔn)確檢測的預(yù)期目標(biāo),表明該方法是有效的。
本文針對CFD計算數(shù)據(jù)流場結(jié)構(gòu)自動檢測問題進(jìn)行了研究,利用神經(jīng)網(wǎng)絡(luò)髙維度非線性數(shù)據(jù)分析能力,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的流場結(jié)構(gòu)檢測方法。
該方法采用深度學(xué)習(xí)和交叉驗證方法對網(wǎng)絡(luò)進(jìn)行了訓(xùn)練和驗證,提高了有限樣本條件下的檢測正確率。
采用金字塔結(jié)構(gòu)方法對待檢測流場進(jìn)行處理,解決了神經(jīng)網(wǎng)絡(luò)輸入流場和待檢測流場尺度不匹配的問題。在此基礎(chǔ)上進(jìn)行窗口式掃描,可檢測流場中設(shè)計人員關(guān)心的流場結(jié)構(gòu)。
為驗證方法的有效性,采用該方法對二維流場中的渦結(jié)構(gòu)進(jìn)行了檢測,取得了較高的正確率,表明該方法是有效的。
該方法可以進(jìn)一步拓展應(yīng)用到三維分離渦、激波邊界層干擾等復(fù)雜流場結(jié)構(gòu)的檢測和識別中。