當前位置:
首頁 > 最新 > 基於深度神經網路的點雲孔洞修補演算法的並行化研究

基於深度神經網路的點雲孔洞修補演算法的並行化研究

認知計算研究部簡介

作為中科聞歌的基礎研究部門,認知計算研究部依託於中科聞歌多年來積累的媒體大數據、高性能雲計算平台以及高素質技術人才,致力於將認知計算技術應用到廣泛的業務場景中並推動前沿技術發展。我們的研究方向包括但不限於自然語言處理、計算機視覺、認知心理學、數據挖掘等。

該篇文章是「AI研究前沿」系列的第一篇,我們希望通過技術文章的形式與各路AI研究者交流,共同進步。同時,認知計算研究部也招募計算機相關專業實習生,詳情可點擊「實習要求」,期待與您的會面。

隨著逆向工程和深度學習的快速發展,採用深度學習的方法解決逆向工程中的相關問題,成為現今一個重要的研究方向,而點雲孔洞修補作為逆向工程中三維重建領域的一個重要分支,具有較高的研究價值。在方法層面,近年來,深度學習在圖像識別、目標分類等方面均有較好的應用前景,採用神經網路對圖像進行處理時,圖像識別的準確率高,運行過程相對簡單,成為各領域廣泛關注的一個研究熱點。為了以最快的速度求解數字龐大且過程複雜的計算問題,我們採用了並行計算技術對演算法進行優化,由此可大大節省計算時間,提高計算效率。

本次分享的主要話題為基於深度神經網路的點雲孔洞修補演算法的並行化研究。該方法主要借鑒現有並行計算技術中的多核CPU加速和GPU加速,對逆向工程中三維重建領域的點雲孔洞修補演算法進行並行優化。該研究針對點雲模型中的散亂點雲數據,採用八叉樹的數據結構對點雲數據完成從整體到局部的分層運算,使用CNN卷積神經網路提取點雲模型的孔洞特徵,獲得純凈的孔洞區域,利用多邊形平面內填充點增加的方法完成多邊形孔洞區域的填充,提出了一種基於八叉樹結構的CNN卷積神經網路在點雲孔洞修補中應用的方法,並針對提出的演算法中存在的熱點部分,採用OpenMP和CUDA的方法分別進行並行優化。通過實驗分析比較,採用深度神經網路的點雲孔洞修補演算法可很好地修補點雲模型表面殘缺的孔洞區域,使用基於OpenMP和CUDA的並行計算技術進行演算法優化,可明顯提高演算法的性能。

三維重建的流程

三維重建過程主要分為點雲數據採集、經過深度圖像增強、數據融合、表面生成等步驟,其中點雲計算主要用於計算世界坐標系與圖像像素坐標系之間的轉換關係,及相應的平移向量與旋轉矩陣之間的相關運算。點雲配准根據圖像輸入條件與重建輸出需求可分為:粗糙配准、精細配准與全局配准等。

並行計算技術

並行計算中的並行演算法是一些可同時執行的諸多進程的集合,這些進程相互作用和協調動作從而達到給定問題的解。設計策略主要有:並行演算法設計、劃分設計技術、分治設計技術三種,包括任務劃分、通信劃分、任務組合和處理器映射幾步。編程環境有分布傳遞並行編程、共享存儲並行編程等。

1

基於CPU加速的OpenMP並行方法

OpenMP是一種用於共享內存並行系統的多處理器程序設計的一套指導性編譯處理方案,集編譯器指令與相應庫函數於一體,可跨平台移植,提供多種程序設計語言介面,有效支持共享的同步、負載均衡等分配的任務,簡單易用,開發效率較高。

2

基於GPU加速的CUDA並行方法

CUDA是NVIDIA開發的一個廣泛應用的並行計算框架,對硬體和軟體均有較好的支持,採用Graphics Processing計算,內部採用並行的計算操作實現。CUDA程序採用非同步的方式實現,分為主機端和設備端,用於將數據拷貝到顯存,顯存將拷貝的數據傳送到設備端,設備端執行完程序後再將執行結果反饋給主機端,這樣在主機端和設備端切換,完成程序的編譯。GPU上的thread包含三個層次,依次為Grid、Block、Thread,一個Grid中包含多個Block,同一個Block內部包含多個Thread。

點雲孔洞修補並行演算法流程

針對基於八叉樹結構的CNN卷積神經網路的點雲孔洞修補演算法進行並行優化,其中演算法流程如下圖所示,該演算法的耗時部分主要出現在點雲數據中心點的選取、八叉樹數據結構的初始化、CNN卷積神經網路的卷積和池化及再標記等步驟,該過程均涉及到相關的矩陣運算,演算法的運行過程比較複雜。因此採用OpenMP和CUDA的並行策略分別進行優化。

1

基於OpenMP的點雲孔洞修補演算法

採用基於多核CPU加速的OpenMP並行技術對點雲孔洞修補演算法進行並行優化時,主要針對演算法中基函數的中心點選取、八叉樹數據結構初始化、CNN卷積神經網路卷積操作、CNN卷積神經網路池化操作、CNN卷積神經網路全連接操作等進行並行優化,具體流程如圖所示。

2

基於CUDA的點雲孔洞修補算

基於GPU加速的CUDA編程模型具有強大的浮點運算能力,當運算的計算量較大時,GPU的多線程、少延遲等優點更明顯。主要採用CUDA編程模型對局部二次曲面計算模塊進行並行優化,演算法具體實現過程如下所示。

部分實驗結果

圖(a)為實驗所用原圖,圖(b)為常用點雲孔洞修補演算法修補效果圖,圖(c)為採用八叉樹數據結構的CNN卷積神經網路的點雲孔洞修補演算法修補效果圖。

(基於OpenMP優化的運行時間對比圖)

(基於OpenMP優化的加速比對比圖)

(基於CUDA優化的加速比對比圖)

採用OpenMP和CUDA的方法並行優化後演算法的運行時間和加速比均有明顯地提升,不同的點雲模型隨著線程數增多,演算法的運行時間呈遞減的趨勢。當線程數相同時,點雲模型包含的點雲數據越多,演算法的平均運行時間下降的趨勢更明顯。此外,當線程數不同時,各點雲模型的運行加速比相異,線程數越多,演算法的加速比越高,同一點雲模型,線程數越多,演算法的加速比越高,其中基於OpenMP的並行加速比最高可達4.85,基於CUDA的並行加速比最高可達6.44。

作者簡介

郝艷妮,碩士,中科聞歌認知計算研究部。

研究方向為:深度學習、並行計算與高性能處理。

>>了解更多中科聞歌的消息,請閱讀:

GIF


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 聞歌大數據 的精彩文章:

TAG:聞歌大數據 |