基于深度神经网络的点云孔洞修补算法的并行化研究

认知计算研究部简介

作为中科闻歌的基础研究部门,认知计算研究部依托于中科闻歌多年来积累的媒体大数据、高性能云计算平台以及高素质技术人才,致力于将认知计算技术应用到广泛的业务场景中并推动前沿技术发展。我们的研究方向包括但不限于自然语言处理、计算机视觉、认知心理学、数据挖掘等。

该篇文章是“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。

作者简介

郝艳妮,硕士,中科闻歌认知计算研究部。

研究方向为:深度学习、并行计算与高性能处理。

>>了解更多中科闻歌的消息,请阅读:

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180731G1ML5H00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券