湯文琳,謝 凱,文 暢,賀建飚
(1.長(zhǎng)江大學(xué) 電子信息學(xué)院,湖北 荊州 434023;2.長(zhǎng)江大學(xué) 電工電子國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心,湖北 荊州 434023;3.長(zhǎng)江大學(xué) 西部研究院,新疆 克拉瑪依 834000;4.長(zhǎng)江大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,湖北 荊州 434023;5.中南大學(xué) 計(jì)算機(jī)學(xué)院,長(zhǎng)沙 410083)
三維可視化技術(shù)在計(jì)算機(jī)圖形學(xué)的發(fā)展過(guò)程中起重要作用,是對(duì)數(shù)據(jù)對(duì)象進(jìn)行多方位呈現(xiàn)和分析的有效方法,已經(jīng)滲透到醫(yī)學(xué)[1-2]、海洋[3]、地質(zhì)[4]、油氣勘探等領(lǐng)域。三維可視化技術(shù)中的體繪制算法[5-6]已應(yīng)用在地質(zhì)勘探方面,能夠清晰地描繪地質(zhì)體內(nèi)部層次細(xì)節(jié)信息和特征,為相關(guān)研究人員提供數(shù)據(jù)支持。
目前,三維可視化技術(shù)的發(fā)展面臨諸多問(wèn)題:一方面,傳統(tǒng)體繪制算法復(fù)雜度較高,需要較大的內(nèi)存空間,對(duì)計(jì)算機(jī)硬件的要求較高;另一方面,對(duì)于一定規(guī)模的體數(shù)據(jù)而言,傳統(tǒng)算法的計(jì)算速度較慢,在進(jìn)行交互顯示時(shí)容易出現(xiàn)畫(huà)面延時(shí)、波動(dòng)卡頓等問(wèn)題。因此很多三維可視化方案均存在一定局限性。
為此,研究人員提出了諸多相關(guān)的優(yōu)化方案。文獻(xiàn)[7-8]提出基于硬件方面的體繪制算法,并在傳統(tǒng)光線(xiàn)投射算法和三維紋理映射算法的基礎(chǔ)上使用硬件設(shè)備提高渲染性能。文獻(xiàn)[9]針對(duì)海量點(diǎn)云數(shù)據(jù)索引時(shí)間過(guò)長(zhǎng)且內(nèi)存占用過(guò)大的問(wèn)題,提出使用八叉樹(shù)(Octre,OCT)重新組織數(shù)據(jù)并分塊保存,但八叉樹(shù)最小葉節(jié)點(diǎn)的確定較困難。文獻(xiàn)[10]針對(duì)大量的地理空間數(shù)據(jù),使用并行框架構(gòu)建R 樹(shù)及其變體,以減少索引更新的時(shí)間,但R 樹(shù)本身結(jié)構(gòu)導(dǎo)致存在部分?jǐn)?shù)據(jù)節(jié)點(diǎn)空間的重疊浪費(fèi)問(wèn)題。文獻(xiàn)[11]考慮構(gòu)造R 樹(shù)的最小外接矩形框的影響,采用動(dòng)態(tài)K-means 聚類(lèi)算法,在R 樹(shù)的基礎(chǔ)上對(duì)結(jié)構(gòu)進(jìn)行優(yōu)化,從而提高算法的檢索速度。文獻(xiàn)[12]將數(shù)據(jù)按照時(shí)空周期劃分,結(jié)合動(dòng)態(tài)K 值的聚類(lèi)算法構(gòu)建希爾伯特R 樹(shù)(Hilbert R-Tree,HRT)結(jié)構(gòu),通過(guò)聚類(lèi)和空間填充曲線(xiàn)在一定程度上降低節(jié)點(diǎn)之間的覆蓋交疊,能很好地支持海量時(shí)空特征數(shù)據(jù)的索引。
除了從數(shù)據(jù)結(jié)構(gòu)的角度解決快速可視化的問(wèn)題,還有一些方案從預(yù)測(cè)視點(diǎn)的運(yùn)動(dòng)軌跡角度出發(fā),結(jié)合調(diào)度加載算法解決當(dāng)數(shù)據(jù)規(guī)模較大時(shí)出現(xiàn)的顯示卡頓問(wèn)題。文獻(xiàn)[13]基于拉格朗日插值算法預(yù)測(cè)視點(diǎn)的運(yùn)動(dòng)軌跡,通過(guò)設(shè)置不同的插值步長(zhǎng)決定最終預(yù)測(cè)的正確率和渲染效果,但其預(yù)測(cè)誤差會(huì)隨著階次增加而增大。文獻(xiàn)[14]在視點(diǎn)運(yùn)動(dòng)的預(yù)測(cè)上應(yīng)用堆疊的長(zhǎng)短時(shí)記憶(Long Short Term Memory,LSTM)網(wǎng)絡(luò),相比傳統(tǒng)的估算方法預(yù)測(cè)精度有所提升。文獻(xiàn)[15-16]基于深度學(xué)習(xí)模型對(duì)相關(guān)時(shí)間軌跡數(shù)據(jù)進(jìn)行預(yù)測(cè),得到較好的預(yù)測(cè)效果。文獻(xiàn)[17-18]基于可見(jiàn)性判斷的角度,通過(guò)結(jié)合視錐體裁剪算法加速繪制大規(guī)模數(shù)據(jù),提高交互性能。文獻(xiàn)[19-20]除了在數(shù)據(jù)結(jié)構(gòu)上直接改善索引效率,還結(jié)合了動(dòng)態(tài)調(diào)度的思想來(lái)提高數(shù)據(jù)加載速度。
本文提出一種面向海量地震數(shù)據(jù)的快速三維可視化方法,在HRT 結(jié)構(gòu)的基礎(chǔ)上使用深度聚類(lèi)優(yōu)化結(jié)構(gòu),改善因空間數(shù)據(jù)分布不均造成的節(jié)點(diǎn)重疊問(wèn)題,以提高索引查詢(xún)效率。通過(guò)時(shí)序卷積模型提前預(yù)測(cè)下一視點(diǎn)位置,動(dòng)態(tài)劃分可視區(qū)域,并提前將潛在區(qū)域的數(shù)據(jù)加載到內(nèi)存中,避免因集中加載引起畫(huà)面卡頓。此外,在不影響圖像質(zhì)量的前提下提前剔除不必要的節(jié)點(diǎn),避免系統(tǒng)資源浪費(fèi),從而加快渲染速度。
本文可視化算法的總體框架結(jié)構(gòu)如圖1 所示,主要分為3 個(gè)模塊,包括建立高效的數(shù)據(jù)索引結(jié)構(gòu)(a)、視點(diǎn)運(yùn)動(dòng)軌跡的預(yù)測(cè)(b)以及體數(shù)據(jù)的調(diào)度加載(c)。
圖1 本文算法的總體框架Fig.1 Gerneral framework of algorithm in this paper
由圖1 可知,本文算法首先讀取地震數(shù)據(jù)文件,將原地震數(shù)據(jù)格式映射到空間的三維結(jié)構(gòu)中,并根據(jù)計(jì)算機(jī)內(nèi)存劃分最小邊界立方體(Minimum Bounding Cube,MBC)數(shù)據(jù)塊,在提取數(shù)據(jù)特征時(shí)利用變分深度嵌入聚類(lèi)(Variational Deep Embedding Clustering,VDEC)完成聚類(lèi)操作,將聚類(lèi)之后的數(shù)據(jù)子塊的中心點(diǎn)經(jīng)過(guò)Hilbert 曲線(xiàn)進(jìn)行降維轉(zhuǎn)換,然后根據(jù)節(jié)點(diǎn)生成時(shí)間和內(nèi)存重組R 樹(shù)的結(jié)構(gòu)。當(dāng)數(shù)據(jù)進(jìn)入下一模塊時(shí),確定當(dāng)前視點(diǎn)位置坐標(biāo),此過(guò)程有兩條分支:一是使用視錐體模型對(duì)當(dāng)前視點(diǎn)位置對(duì)應(yīng)的可見(jiàn)空間數(shù)據(jù)進(jìn)行剔除并渲染顯示;二是根據(jù)當(dāng)前視點(diǎn)位置利用時(shí)序卷積網(wǎng)絡(luò)模型預(yù)測(cè)未來(lái)視點(diǎn)的位置,通過(guò)比較視點(diǎn)動(dòng)態(tài)劃分模型,應(yīng)用雙層視錐體裁剪算法得到預(yù)測(cè)視點(diǎn)所涉及到的數(shù)據(jù)范圍,對(duì)潛在數(shù)據(jù)進(jìn)行加載渲染,并根據(jù)索引結(jié)構(gòu)確定新的視點(diǎn)坐標(biāo),繪制下一幀圖像。
針對(duì)因數(shù)據(jù)規(guī)模的擴(kuò)大導(dǎo)致的索引結(jié)構(gòu)復(fù)雜、效率過(guò)低等問(wèn)題,僅靠改進(jìn)硬件遠(yuǎn)遠(yuǎn)不夠,還需改進(jìn)算法的軟件,才能高效解決海量地震數(shù)據(jù)的快速三維可視化問(wèn)題。
本文算法的索引模塊采用HRT 結(jié)構(gòu),其思想是采用Hilbert 空間填充曲線(xiàn),將無(wú)序數(shù)據(jù)按照特定方式連接,令曲線(xiàn)穿過(guò)高維空間中的數(shù)據(jù),對(duì)數(shù)據(jù)的位置坐標(biāo)進(jìn)行編碼排序,將高維空間的數(shù)據(jù)拉直轉(zhuǎn)換成一維空間的數(shù)據(jù),然后用最小邊界矩形將相鄰元素框住,節(jié)點(diǎn)越往上,框住空間越大,從而形成HRT結(jié)構(gòu)。
雖然HRT 結(jié)構(gòu)有相對(duì)較高的存儲(chǔ)利用率,但由于其被應(yīng)用在大型體數(shù)據(jù)時(shí),若數(shù)據(jù)分布不均,則容易出現(xiàn)節(jié)點(diǎn)空間重疊問(wèn)題,即空間上數(shù)據(jù)對(duì)象相近,但經(jīng)過(guò)空間曲線(xiàn)轉(zhuǎn)換后的數(shù)據(jù)碼值所屬節(jié)點(diǎn)空間不相鄰。對(duì)于大規(guī)模的數(shù)據(jù)集,可以通過(guò)合理的聚類(lèi)算法將空間特征相似的數(shù)據(jù)聚集在一起,避免后續(xù)碼值轉(zhuǎn)換后數(shù)據(jù)錯(cuò)分的情況發(fā)生,以此來(lái)提高結(jié)構(gòu)的空間利用率,實(shí)現(xiàn)快速索引。
為優(yōu)化索引技術(shù),本文使用變分深度嵌入聚類(lèi)VDEC 算法,相比傳統(tǒng)的聚類(lèi)算法而言,VDEC 算法使用變分自編碼器VAE[21],采用無(wú)監(jiān)督的算法反映輸入數(shù)據(jù)分布的本質(zhì)特征,并通過(guò)深度嵌入聚類(lèi)(Deep Embedding Clustering,DEC)[22]學(xué)習(xí)數(shù)據(jù)潛在隱變量空間的特征表示和聚類(lèi)分配,以迭代優(yōu)化目標(biāo),提升聚類(lèi)性能。
變分自編碼器VAE 主要通過(guò)無(wú)監(jiān)督算法將隱變量空間的數(shù)據(jù)特征重構(gòu)輸出。VAE 的網(wǎng)絡(luò)結(jié)構(gòu)包括編碼器和解碼器。包含地震特征的數(shù)據(jù)集經(jīng)過(guò)隱變量分布p(z)生成隱變量空間表示z,再通過(guò)p(x|z)重構(gòu)生成其中編碼器和解碼器的權(quán)重和偏差模型分別表示為φ、θ。根據(jù)貝葉斯公式可以得到p(z|x),其表達(dá)式如式(1)所示:
由于后驗(yàn)分布計(jì)算困難,因此通過(guò)引入近似后驗(yàn)分布qφ(z|x)逼近真實(shí)的后驗(yàn)分布p(z|x)。KL 散度定義為:
采用證據(jù)下界ELBO 為變分自編器的損失函數(shù),其表達(dá)式如下:
設(shè)z服從正態(tài)分布:
變分自編碼網(wǎng)絡(luò)VAE 在隱藏層輸出的參數(shù)有2 個(gè)維度,即均值μ和方差σ2:
從近似后驗(yàn)分布qφ(z|x)重采樣得到z:
將采樣得到的z輸入至生成模型pθ(x|z)中,生成新的取qφ(z|x)與先驗(yàn)分布p(z)之間的KL 散度作為編碼模型的損失:
對(duì)于生成模型,定義解碼器的重構(gòu)誤差為其損失:
取經(jīng)過(guò)訓(xùn)練后的自編碼器編碼部分作為學(xué)習(xí)到的信息特征z,比較其與聚類(lèi)中心的相似度,其中相似度及目標(biāo)分布的定義如下:
其中:j為隱變量空間的維度。
另外定義目標(biāo)變量P與相似度變量Q的損失函數(shù)的表達(dá)式如下:
根據(jù)特征表示信息特征z與聚類(lèi)中心之間的相似度表達(dá)式(9)得到數(shù)據(jù)x的聚類(lèi)標(biāo)簽,如式(12)所示:
用梯度下降法迭代優(yōu)化總體的目標(biāo)函數(shù),表達(dá)式如式(13)所示:
其中:α為權(quán)重參數(shù)。
變分深度嵌入聚類(lèi)融合HRT 樹(shù)(下文簡(jiǎn)稱(chēng)為VDEC-HRT)的具體算法如下:
算法1VDEC-HRT 算法
少量數(shù)據(jù)可以直接加載到內(nèi)存顯示,但當(dāng)數(shù)據(jù)規(guī)模增大時(shí),則需要將數(shù)據(jù)分塊動(dòng)態(tài)地加載和釋放,在動(dòng)態(tài)掉隊(duì)加載之前根據(jù)視點(diǎn)運(yùn)動(dòng)軌跡,提前將數(shù)據(jù)加載到內(nèi)存等待渲染,以避免大規(guī)模數(shù)據(jù)集中載入引起渲染畫(huà)面延遲和卡頓。
本文視點(diǎn)預(yù)測(cè)模塊根據(jù)持續(xù)變化的視點(diǎn)位置和視角預(yù)測(cè)未來(lái)視點(diǎn)的預(yù)期位置,并采用時(shí)間序列卷積網(wǎng)絡(luò)(Temporal Convolutional Network,TCN)[23]進(jìn)行輔助。TCN 網(wǎng)絡(luò)相比RNN 等網(wǎng)絡(luò),具有并行性高、梯度穩(wěn)定、感受野靈敏等特點(diǎn)。
本文數(shù)據(jù)集中的每個(gè)點(diǎn)代表不同時(shí)刻連續(xù)運(yùn)動(dòng)軌跡的視點(diǎn)坐標(biāo),Tc時(shí)刻的坐標(biāo)為pc(uc,vc,wc),其中u、v、w代表不同方向的維度。將當(dāng)前時(shí)刻以及之前時(shí)刻的坐標(biāo)序列X=(p1,p2,…,pc)作為模型的輸入,令卷積核F=(f1,f2,…,fk),其中k為卷積核的大小。將當(dāng)前以及歷史時(shí)刻的坐標(biāo)點(diǎn)構(gòu)成的坐標(biāo)序列X=(p1,p2,…,pc)輸入如圖2 所示的因果卷積結(jié)構(gòu),該結(jié)構(gòu)為單向的時(shí)間約束結(jié)構(gòu),即當(dāng)前時(shí)刻c的卷積操作僅在歷史時(shí)刻c-1及之前的信息上。pc處的因果卷積輸出為:
圖2 因果卷積結(jié)構(gòu)Fig.2 Structure of causal convolution
之后將pc處的因果卷積輸出F(Pc)輸入如圖3所示的膨脹卷積結(jié)構(gòu)中,其中d為空洞系數(shù)。
圖3 膨脹卷積結(jié)構(gòu)Fig.3 Structure of expansion convolution
經(jīng)過(guò)膨脹結(jié)構(gòu)的輸出公式為:
使用正則化規(guī)范隱藏層的輸入,并在正則化之后引入Relu 函數(shù):
在經(jīng)過(guò)圖2 和圖3 的結(jié)構(gòu)之后,引入Dropout 函數(shù)簡(jiǎn)化網(wǎng)絡(luò),從而避免過(guò)擬合:
為獲得長(zhǎng)時(shí)間序列信息,且由于加上膨脹卷積后,網(wǎng)絡(luò)模型加深會(huì)影響其穩(wěn)定性,因此本文在網(wǎng)絡(luò)結(jié)構(gòu)中加入恒等映射,以增加網(wǎng)絡(luò)穩(wěn)定度,最終輸出結(jié)果為:
將每2 個(gè)因果膨脹卷積基礎(chǔ)層、歸一化線(xiàn)性單元塊與恒等映射一起作為一個(gè)殘差模塊,令網(wǎng)絡(luò)模型以跨層方式傳遞信息。整體時(shí)序卷積網(wǎng)絡(luò)的結(jié)構(gòu)如圖4 所示。
圖4 時(shí)序卷積網(wǎng)絡(luò)的結(jié)構(gòu)Fig.4 Structure of sequential convolutional network
最后輸出結(jié)果的表達(dá)式如式(19)所示:
時(shí)序卷積網(wǎng)絡(luò)模型可以選擇是否由殘差模塊堆疊起深度網(wǎng)絡(luò),且前一個(gè)殘差模塊的輸出可以作為下一個(gè)殘差模塊的輸入,以此加深網(wǎng)絡(luò)層數(shù),提取本質(zhì)特征。輸出特征在最后使用全連接層,并添加LeakyRelu 修正線(xiàn)性單元,輸出預(yù)測(cè)視點(diǎn)的坐標(biāo)位置。
隨著數(shù)據(jù)量的增大,在加載過(guò)程中需繪制的對(duì)象數(shù)量也不斷增加??梢?jiàn)性判斷方法在不影響渲染質(zhì)量的前提下,在加載大規(guī)模數(shù)據(jù)時(shí)能夠減少系統(tǒng)負(fù)荷,加快圖像渲染的速度。其中,視錐體裁剪方法是可見(jiàn)性判斷方法之一,其操作開(kāi)銷(xiāo)相對(duì)較小,且易于修改,能夠快速準(zhǔn)確地加載圖形對(duì)象。
將原數(shù)據(jù)等量劃分成最小邊界立方體子塊,之后用VDEC-HRT 算法對(duì)原本的地震數(shù)據(jù)結(jié)構(gòu)進(jìn)行重組,這部分的數(shù)據(jù)調(diào)度加載利用視錐體對(duì)每個(gè)MBC 子塊進(jìn)行空間位置關(guān)系判斷,并在繪制階段將不在范圍內(nèi)的節(jié)點(diǎn)裁剪,從而縮短結(jié)構(gòu)中對(duì)象遍歷的時(shí)間,提高渲染速度。
本文采用的雙層視錐體裁剪算法的具體流程如下:
步驟1采用粗裁剪算法,將視錐體簡(jiǎn)化為圓錐體,判斷圓錐體和空間對(duì)象的位置關(guān)系,減少整體判斷次數(shù)以提高裁剪效率。粗裁剪算法流程如下:
1)將視錐體六面體簡(jiǎn)化為一個(gè)簡(jiǎn)易圓錐,其剖面圖如圖5 所示,其中A 為某一MBC 塊的中心坐標(biāo),C 為視軸上某點(diǎn),AC 垂直于圓錐面于點(diǎn)B,d為MBC塊中心到任意頂點(diǎn)的距離。從視點(diǎn)位置作最小圓錐包含視錐體,使用簡(jiǎn)易圓錐檢查其與最小邊界立方體MBC 之間的位置關(guān)系。
圖5 MBC 塊與簡(jiǎn)易圓錐的位置剖面圖Fig.5 Position profile of MBC block and simple cone
2)如果某一MBC 塊的中 心A(x,y,z)?cone 不在圓錐內(nèi)部,且AB ≥d,則判斷MBC 塊在圓錐的外部,對(duì)該MBC 塊進(jìn)行裁剪,算法結(jié)束,否則繼續(xù)。
步驟2精細(xì)裁剪算法在粗裁剪的基礎(chǔ)上進(jìn)一步使用標(biāo)準(zhǔn)視錐體截棱錐對(duì)空間對(duì)象進(jìn)行精細(xì)裁剪,提高裁剪的精確性。
使用標(biāo)準(zhǔn)視錐體進(jìn)行裁剪時(shí),先使用數(shù)據(jù)的MBC 塊對(duì)視錐體的6 個(gè)平面(即圖6 中六面體的上、下、左、右、近、遠(yuǎn)平面)依次判斷空間位置。
圖6 視錐體示意圖Fig.6 Schematic diagram of visual cone
精細(xì)裁剪算法的總體思想:當(dāng)MBC 塊位于視錐體某一平面方程的外部時(shí),即為不可見(jiàn),則裁掉該物體對(duì)象;當(dāng)MBC 塊在上述過(guò)程并未被裁剪,則說(shuō)明其與視錐體的位置關(guān)系為包含或相交,具體來(lái)說(shuō)為下面2 種情況:
1)位置關(guān)系為包含。當(dāng)MBC 塊處于6 個(gè)平面內(nèi),說(shuō)明空間對(duì)象位于視點(diǎn)區(qū)域內(nèi),則將空間對(duì)象直接送入GPU 繪制管線(xiàn)中并進(jìn)行渲染顯示。
2)位置關(guān)系為相交。當(dāng)截錐體某一平面的內(nèi)側(cè)包含MBC 的一部分,且該平面外側(cè)也包含一部分,說(shuō)明空間對(duì)象與視錐體是相交關(guān)系,則繼續(xù)對(duì)下層物體進(jìn)行判斷,依次遍歷完所有的空間對(duì)象。
具體來(lái)說(shuō),視點(diǎn)位置位于世界坐標(biāo)系的零點(diǎn),首先將視錐體模型沿Z軸正向放置,使用設(shè)定的投影矩陣轉(zhuǎn)換頂點(diǎn),進(jìn)而得到截錐體對(duì)應(yīng)的6 個(gè)平面方程。然后找出MBC 塊的頂點(diǎn)n點(diǎn)和p點(diǎn),p點(diǎn)是距離平面最近的頂點(diǎn),n點(diǎn)是最遠(yuǎn)對(duì)角線(xiàn)的頂點(diǎn)(距離p最遠(yuǎn)的頂點(diǎn)):設(shè) 2 個(gè)頂點(diǎn)的坐標(biāo)分別為p(xmin,ymin,zmin),n(xmax,ymax,zmax),視錐體的6 個(gè)平面方程為ax+by+cz+d=0,將n、p分別帶入6 個(gè)平面方程中,若axmin+bymin+czmin+d>0,則可以判斷該MBC塊離平面最近的頂點(diǎn)在平面外側(cè),則此MBC 塊在平面外側(cè),對(duì)該MBC塊進(jìn)行裁剪。同理,若p(xmin,ymin,zmin)在平面內(nèi)側(cè),n(xmax,ymax,zmax)在平面外側(cè),說(shuō)明MBC 塊與視錐體相交。如果p點(diǎn)和n點(diǎn)都在視錐體平面方程的內(nèi)側(cè),則說(shuō)明MBC 塊在平面內(nèi)側(cè),直接將該MBC 塊的數(shù)據(jù)送入繪制管道渲染顯示。
將視點(diǎn)移動(dòng)過(guò)程看作如圖7所示的視點(diǎn)動(dòng)態(tài)模型,移動(dòng)過(guò)程將整個(gè)數(shù)據(jù)對(duì)象范圍劃分為當(dāng)前可見(jiàn)區(qū)域、潛在預(yù)加載區(qū)域以及釋放卸載區(qū)域。在經(jīng)過(guò)時(shí)序卷積模型預(yù)測(cè)得到下一視點(diǎn)坐標(biāo)之后,通過(guò)比較視點(diǎn)劃分的區(qū)域,結(jié)合視錐體模型進(jìn)行卸載和加載渲染。具體來(lái)說(shuō),當(dāng)視點(diǎn)處于A 位置時(shí),圖7 中的1、2 部分即為當(dāng)前可見(jiàn)區(qū)域,對(duì)其進(jìn)行渲染顯示,潛在預(yù)加載區(qū)域則是劃分為預(yù)測(cè)下一視點(diǎn)B的可見(jiàn)區(qū)域,即圖7的2、3部分。當(dāng)視點(diǎn)移動(dòng)到B 時(shí)需要提前將該區(qū)域的數(shù)據(jù)標(biāo)記為可見(jiàn)數(shù)據(jù),并載入到內(nèi)存等待渲染,便于用戶(hù)在持續(xù)瀏覽時(shí)直接對(duì)數(shù)據(jù)對(duì)象進(jìn)行讀取顯示,避免交互時(shí)出現(xiàn)畫(huà)面卡滯的現(xiàn)象。另外當(dāng)視點(diǎn)由A 運(yùn)動(dòng)到B 時(shí),將區(qū)域1標(biāo)記為釋放卸載域以減少系統(tǒng)負(fù)荷。
圖7 視點(diǎn)動(dòng)態(tài)模型示意圖Fig.7 Schematic diagram of viewpoint dynamic model
體數(shù)據(jù)調(diào)度加載的流程如圖8 所示。首先,根據(jù)當(dāng)前視點(diǎn)坐標(biāo)并結(jié)合視點(diǎn)動(dòng)態(tài)劃分模型,通過(guò)約束條件構(gòu)建視錐體,獲取當(dāng)前視點(diǎn)范圍內(nèi)必須繪制的數(shù)據(jù)塊,將當(dāng)前可見(jiàn)的數(shù)據(jù)塊送入GPU 渲染管線(xiàn)。其次,若視點(diǎn)持續(xù)進(jìn)行勻速規(guī)則運(yùn)動(dòng),則通過(guò)算法預(yù)測(cè)下一視點(diǎn)坐標(biāo),根據(jù)預(yù)測(cè)的坐標(biāo)并結(jié)合視點(diǎn)動(dòng)態(tài)區(qū)域模型獲取潛在預(yù)加載區(qū)域的數(shù)據(jù)塊,通過(guò)視錐體裁剪潛在區(qū)域范圍內(nèi)的必要繪制數(shù)據(jù),并將其載入內(nèi)存等待顯示。最后,釋放卸載區(qū)域的數(shù)據(jù),開(kāi)始下一幀的繪制。
圖8 體數(shù)據(jù)調(diào)度加載流程Fig.8 Procedure of volume data scheduling loading
實(shí)驗(yàn)中用到的硬件設(shè)備為Dell G5-5500,處理器為Intel Core i7-10750H,芯片類(lèi)型為GeForce RTX 2060,CPU 主頻2.60 GHz,內(nèi)存16 GB。應(yīng)用程序使用Visual Studio 2015+PyCharm2019+QT5.7 進(jìn)行代碼編寫(xiě)。
實(shí)驗(yàn)所用的數(shù)據(jù)為我國(guó)某油田部分的地震工區(qū)數(shù)據(jù),并以SEG-Y 格式進(jìn)行存儲(chǔ)。數(shù)據(jù)分為3 組,數(shù)據(jù)集A 為469.7 MB,數(shù)據(jù)集B(體數(shù)據(jù)分布較均勻)為3 348.5 MB,數(shù)據(jù)集C(數(shù)據(jù)量較大且較分散)為14 643.4 MB,地震數(shù)據(jù)信息中包含埋藏深度、范圍、厚度、伸展趨勢(shì)等信息。
本文分別針對(duì)索引結(jié)構(gòu)、視點(diǎn)預(yù)測(cè)以及體數(shù)據(jù)調(diào)度加載模塊進(jìn)行對(duì)比評(píng)估,以證明本文方法的有效性。
5.2.1 數(shù)據(jù)結(jié)構(gòu)的索引效率
為評(píng)估VDEC 模型聚類(lèi)的有效性,本文在MNIST 手寫(xiě)數(shù)據(jù)集[24]上對(duì)其進(jìn)行驗(yàn)證,首先采用K-means 算法初始化簇中心,使用編碼器預(yù)訓(xùn)練,其中優(yōu)化器采用Adam 優(yōu)化器得到模型最佳參數(shù),將學(xué)習(xí)率設(shè)置0.002,每訓(xùn)練10 個(gè)epoch 更新一次參數(shù),輸出維度設(shè)置為10,訓(xùn)練200 次,并根據(jù)encode 編碼層返回的均值和方差構(gòu)建隱藏特征空間z。用TSNE降維方法將采樣的小部分z映射到二維空間,并進(jìn)行可視化,其潛在空間中的數(shù)據(jù)聚集分布如圖9 所示,可以看出數(shù)據(jù)的聚類(lèi)效果較好,這說(shuō)明潛在特征表示適合聚類(lèi)。
圖9 VDEC 潛在空間的數(shù)據(jù)聚類(lèi)分布Fig.9 Data clustering distribution of VDEC potential space
此外,本文選擇聚類(lèi)準(zhǔn)確率(Accuracy,ACC)、標(biāo)準(zhǔn)互化信息(Normalized Mutual Information,NMI)以及調(diào)整蘭德指數(shù)(Adjusted Rand Index,ARI)作為聚類(lèi)指標(biāo)[25],這3 類(lèi)指標(biāo)的值均是越靠近1,表明聚類(lèi)效果越好。在MNIST 數(shù)據(jù)集上用不同算法測(cè)試聚類(lèi)效果,結(jié)果如表1 所示。根據(jù)實(shí)驗(yàn)結(jié)果,本文算法在3 個(gè)評(píng)價(jià)指標(biāo)上依次比K-means 算法提高了44.79%、44.44%、59.78%,相比AE 和DEC 算法,其聚類(lèi)效果也有一定提升。這說(shuō)明本文算法相對(duì)于傳統(tǒng)聚類(lèi)算法的效果更好,能夠?yàn)镠RT 樹(shù)的建樹(shù)過(guò)程奠定良好的結(jié)構(gòu)基礎(chǔ),避免數(shù)據(jù)節(jié)點(diǎn)在建樹(shù)過(guò)程中出現(xiàn)空間重疊問(wèn)題,進(jìn)而提高索引的效率。
表1 不同算法在MNIST 數(shù)據(jù)集上的結(jié)果對(duì)比Table 1 Comparison of results of different algorithms under MNIST dataset
本文通過(guò)與其他索引結(jié)構(gòu)算法的查詢(xún)效率進(jìn)行對(duì)比,評(píng)估本文算法整體的數(shù)據(jù)結(jié)構(gòu)索引效果。具體來(lái)說(shuō),為證明數(shù)據(jù)量大小的差異對(duì)索引結(jié)果的影響,對(duì)A 組數(shù)據(jù)分別取2%、4%、6%的數(shù)據(jù)量比率,同理B、C 兩組也取2%、4%、6%比率的數(shù)據(jù),并比較OCT、HRT、基于K 均值算法的HRT(KHRT)、變分深度嵌入聚類(lèi)下的HRT(Variational Deep Embedding Clustering-HRT,VDEC-HRT)等結(jié)構(gòu)查詢(xún)數(shù)據(jù)塊算法的查詢(xún)時(shí)間,結(jié)果如圖10 所示。
圖10 不同結(jié)構(gòu)查詢(xún)數(shù)據(jù)塊算法的查詢(xún)時(shí)間對(duì)比Fig.10 Comparison of query time of different structure query data block algorithms
由圖10 可以看到,對(duì)于A 組數(shù)據(jù)而言,本文算法(VDEC-HRT)相比OCT、HRT 和KHRT 算法的查詢(xún)時(shí)間有所減少,但差距不明顯。對(duì)于B 組數(shù)據(jù),與OCT 算法相比,本文VDEC-HRT 索引數(shù)據(jù)塊的時(shí)間減少了65.05%~66.96%,與HRT 算法相比,本文算法索引時(shí)間減少了63.10%~66.01%,與KHRT 相比減少了42.27%~51.74%。對(duì)于查詢(xún)C組數(shù)據(jù)子塊,與OCT、HRT和KHRT算法對(duì)比,本文算法的時(shí)間分別減少了67.69%~72.22%,64.14%~66.37%,54.10%~55.89%。所以即使對(duì)于規(guī)模較大的數(shù)據(jù),本文算法能通過(guò)改進(jìn)聚類(lèi)使數(shù)據(jù)節(jié)點(diǎn)空間減少重疊,從而有效減少頻繁訪(fǎng)問(wèn)的次數(shù),提高查詢(xún)索引的效率。
5.2.2 對(duì)視點(diǎn)預(yù)測(cè)的評(píng)估
為評(píng)估預(yù)測(cè)算法的準(zhǔn)確率,本文與拉格朗日插值、堆疊LSTM 算法進(jìn)行對(duì)比,分別在時(shí)長(zhǎng)1 min、5 min、10 min下預(yù)測(cè)數(shù)據(jù)塊的準(zhǔn)確率,結(jié)果如表2所示。由表2可知,本文算法的精度相比拉格朗日插值、堆疊LSTM算法分別提高了12.08%~22.70%,2.24%~4.34%。雖然隨著時(shí)長(zhǎng)和數(shù)據(jù)集的增大,預(yù)測(cè)的正確率有所下降,但本文算法相對(duì)于另外2種算法的預(yù)測(cè)正確率仍然有一定提升。
表2 不同算法在不同時(shí)長(zhǎng)下預(yù)測(cè)數(shù)據(jù)塊的準(zhǔn)確率對(duì)比Table 2 Comparison of accuracy of algorithm prediction data blocks in different time periods %
此外,本文取35 frame/s左右的平均幀率預(yù)測(cè)采樣部分位置坐標(biāo)的X和Y分量,對(duì)比使用TCN和LSTM網(wǎng)絡(luò)預(yù)測(cè)位置坐標(biāo)的效果,TCN 網(wǎng)絡(luò)的參數(shù)設(shè)置nb_filters=64,kernel_size=3,殘差塊中使用relu 激活函數(shù),時(shí)間步長(zhǎng)選取20。迭代20次后得到的擬合結(jié)果如圖11所示。在本文坐標(biāo)數(shù)據(jù)集中,TCN、LSTM 網(wǎng)絡(luò)的預(yù)測(cè)精度分別為97.68%、96.92%。由圖11 可以看出,TCN 網(wǎng)絡(luò)在X、Y坐標(biāo)分量上的預(yù)測(cè)精度比LSTM 網(wǎng)絡(luò)稍好,說(shuō)明其在本文預(yù)測(cè)視點(diǎn)的任務(wù)中是有效的,有利于后續(xù)數(shù)據(jù)調(diào)度加載的準(zhǔn)確性。
圖11 不同網(wǎng)絡(luò)的擬合結(jié)果對(duì)比曲線(xiàn)Fig.11 Comparison curve of fitting results of different networks
為測(cè)試步長(zhǎng)對(duì)預(yù)測(cè)結(jié)果的影響,在平均幀率不變的情況下,分別設(shè)置步長(zhǎng)為10、20、30,并隨機(jī)改變攝像機(jī)的位置和方位,使視點(diǎn)保持勻速運(yùn)動(dòng)持續(xù)10 min,同時(shí)為了避免不同平均幀率實(shí)驗(yàn)的干擾,本文選擇24、48 和96 frame/s 的平均幀率進(jìn)行非同步長(zhǎng)計(jì)算和對(duì)比預(yù)測(cè)錯(cuò)誤率,結(jié)果如圖12 所示。
圖12 不同步長(zhǎng)對(duì)預(yù)測(cè)準(zhǔn)確率的影響Fig.12 Influence of asynchronous length on prediction accuracy
由圖12 可知,誤差會(huì)隨著步長(zhǎng)增加而增大,但步長(zhǎng)越小,預(yù)測(cè)精度相對(duì)越低,因此可以通過(guò)調(diào)節(jié)步長(zhǎng)參數(shù)來(lái)達(dá)到提高預(yù)測(cè)準(zhǔn)確性的目的。
5.2.3 對(duì)數(shù)據(jù)加載渲染的評(píng)估
為測(cè)試本文算法的穩(wěn)定性,選擇60 幀采樣點(diǎn)作為X軸分量,分別在A、B、C 數(shù)據(jù)集上比較無(wú)預(yù)測(cè)算法(即在本文算法基礎(chǔ)上去除視點(diǎn)運(yùn)動(dòng)軌跡預(yù)測(cè)模塊的算法)與本文算法的幀率,結(jié)果如圖13 所示。由圖13 可知,在A 組數(shù)據(jù)集上,即使數(shù)據(jù)量較小,幀率也能保持在50 frame/s 左右。在B、C 組數(shù)據(jù)集上采用本文算法的幀率,相比無(wú)預(yù)測(cè)算法來(lái)說(shuō),即使在數(shù)據(jù)規(guī)模較大時(shí),幀率仍然相對(duì)較高且較穩(wěn)定,這意味著渲染效果更加穩(wěn)定平滑,能夠避免交互時(shí)產(chǎn)生波動(dòng)。
圖13 不同算法在3 組數(shù)據(jù)集下的幀率對(duì)比Fig.13 Comparison of frame rates of different algorithms under three sets of datasets
5.2.4 對(duì)整體性能的評(píng)估
為整體評(píng)估算法,將本文的VDEC-HRT、OCT、HRT、KHRT 分別與基于TCN 和雙層視錐體裁剪的調(diào)度模型(Scheduling Model Based on TCN and Double-Layer Visual Cone Clipping,TDVSM)算法進(jìn)行組合,并測(cè)試各算法組合的整體交互性能。以B 組數(shù)據(jù)為例,每隔10 片圖像對(duì)地震數(shù)據(jù)進(jìn)行切片,并記錄各算法查詢(xún)切片的時(shí)間,結(jié)果如圖14 所示??梢钥闯觯c其他算法相比,本文算法查詢(xún)切片的時(shí)間明顯減少。
圖14 不同算法查詢(xún)切片的時(shí)間對(duì)比Fig.14 Comparison of query slice time of different algorithms
最后,本文對(duì)系統(tǒng)的整體顯示效果進(jìn)行測(cè)試,系統(tǒng)平臺(tái)設(shè)置有不同顯示模式下的渲染效果,圖15 是體數(shù)據(jù)顯示的藍(lán)白紅模式(彩色效果見(jiàn)《計(jì)算機(jī)工程》官網(wǎng)HTML 版),圖16 是地震數(shù)據(jù)沿不同測(cè)線(xiàn)方向切片顯示效果(彩色效果見(jiàn)《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。在運(yùn)行觀測(cè)實(shí)際的地震數(shù)據(jù)時(shí),由圖15和圖16 可以看出,本文系統(tǒng)平臺(tái)能夠高質(zhì)量地描繪出地震體數(shù)據(jù)的內(nèi)部結(jié)構(gòu)和信息。
圖15 地震體數(shù)據(jù)顯示效果Fig.15 Display effect of seismic body data
圖16 地震數(shù)據(jù)沿不同測(cè)線(xiàn)方向切片的顯示效果Fig.16 Effect of slice display of seismic data along different survey lines
針對(duì)海量地震數(shù)據(jù)體繪制在集中載入時(shí)存在畫(huà)面顯示延遲和卡頓的問(wèn)題,本文提出一種快速三維可視化算法。在HRT 結(jié)構(gòu)的基礎(chǔ)上通過(guò)變分深度聚類(lèi)改善節(jié)點(diǎn)數(shù)據(jù)因分布不均造成的空間重疊問(wèn)題,提高數(shù)據(jù)索引的效率。使用時(shí)序卷積模型預(yù)測(cè)視點(diǎn)的運(yùn)動(dòng)軌跡,并與雙層視錐體裁剪算法相結(jié)合,以更精確地將數(shù)據(jù)提前載入內(nèi)存等待渲染,避免畫(huà)面顯示延遲,提高渲染速度。實(shí)驗(yàn)結(jié)果表明,本文算法相較于OCT、HRT、KHRT 等算法的查詢(xún)時(shí)間均有所減少,且渲染幀率波動(dòng)較為穩(wěn)定平滑,能夠?qū)崿F(xiàn)海量地震數(shù)據(jù)的快速三維可視化。下一步將使用其他類(lèi)型的大規(guī)模數(shù)據(jù)集對(duì)本文算法進(jìn)行測(cè)試,嘗試采用wassterient 距離代替KL 散度,并在視點(diǎn)預(yù)測(cè)模塊中引入注意力機(jī)制,從而提高圖像質(zhì)量。