CN114202454A - 图优化方法、系统、计算机程序产品以及存储介质 - Google Patents
图优化方法、系统、计算机程序产品以及存储介质 Download PDFInfo
- Publication number
- CN114202454A CN114202454A CN202111281891.9A CN202111281891A CN114202454A CN 114202454 A CN114202454 A CN 114202454A CN 202111281891 A CN202111281891 A CN 202111281891A CN 114202454 A CN114202454 A CN 114202454A
- Authority
- CN
- China
- Prior art keywords
- vertex data
- reprojection error
- graph
- memory space
- graph optimization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明的实施例提供了一种图优化方法、系统、计算机程序产品以及存储介质。方法包括:获取图的顶点数据,接收用户输入的用于计算重投影误差的目标函数,其中顶点数据包括相机位姿信息;采用并行计算的方式执行以下操作中的一个或多个:基于当前获取的顶点数据以及目标函数,计算重投影误差及重投影误差关于顶点数据的雅可比矩阵;基于重投影误差及雅可比矩阵,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及基于增量更新顶点数据用以重建所述图。上述技术方案极大地缩短了图优化过程中的运算求解时间,提高了工业生产效率,使众多基于图优化的重建算法具备了实时计算的可能。
Description
技术领域
本发明涉及计算机技术领域,更具体地涉及一种图优化方法、一种图优化系统、一种计算机程序产品以及一种存储介质。
背景技术
图优化技术把一个常规的优化问题以图(Graph)的形式来表述。图是由顶点和边组成的结构,例如其可以是地图、路线图、人脸图等。具体例如,线路图中的特征点以及人脸图中的关键点等都可以看作图的顶点。每个顶点之间可以根据不同的规则进行连线以获得拓扑图。图优化可以认为是对这些拓扑图中的顶点数据以及采集这些图所利用的相机的位姿信息等参数进行误差分析并优化的过程。图优化技术在三维(3D)视觉、同步定位与建图(SLAM)的后端优化等领域有着广泛的应用。其应用范围包括但不限于例如大规模地图重建、高精度地图重建等。
现有的图优化技术的框架都是基于中央处理器(CPU)设计的,依赖CPU的计算能力对海量数据进行串行处理,以执行图优化。这一过程所消耗的时间较长,速度较慢。
发明内容
考虑到上述问题而提出了本发明。根据本发明的一个方面,提供了一种图优化方法,包括:获取图的顶点数据,接收用户输入的用于计算重投影误差的目标函数;采用并行计算的方式执行以下操作中的一个或多个:基于当前获取的顶点数据以及目标函数,计算重投影误差及重投影误差关于顶点数据的雅可比矩阵;基于重投影误差及雅可比矩阵,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及基于增量更新顶点数据用以重建所述图。
示例性地,计算重投影误差及重投影误差关于顶点数据的雅可比矩阵利用并行加速的数学算子实现,图优化方法还包括:根据单个数学算子所需要的内存空间M0,开辟N1倍于内存空间M0的内存空间M1以生成动态内存池,并且生成N1个多线程句柄;其中,每次数学算子申请内存空间,都从动态内存池为该数学算子分配内存空间并且为该数学算子分配一个多线程句柄,每次数学算子销毁时,将为该数学算子分配的内存空间归还动态内存池同时归还为该数学算子分配的多线程句柄;对于当又一数学算子申请内存空间时动态内存池没有空闲空间的情况,重新申请N2倍于内存空间M0的内存空间M2,以扩大动态内存池,并且再次生成N2个多线程句柄,从扩大后的动态内存池中为该又一数学算子分配内存空间并且为该又一数学算子分配一个多线程句柄。
示例性地,从动态内存池为该数学算子分配内存空间包括:为该数学算子的运算结果分配内存空间,其中,为每个运算结果所分配的内存空间与和该运算结果表示同一物理参数的运算结果的内存空间相邻。
示例性地,数学算子包括正向传播自动微分算子;计算重投影误差及重投影误差关于顶点数据的雅可比矩阵,包括:基于当前获取的顶点数据以及目标函数,利用自动微分算子计算重投影误差关于顶点数据的雅可比矩阵。
示例性地,采用并行计算的方式执行基于重投影误差及雅可比矩阵,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量,包括:采用并行计算的方式执行以下操作中的一个或二者:基于重投影误差及雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b;其中,线性方程的解Δx表示增量,λ表示相机搜索半径,I表示单位矩阵;基于参数矩阵H和常数向量b求解线性方程(H+λI)Δx=b,以确定增量Δx。
示例性地,基于重投影误差及雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b,包括:开辟共享内存;开启多个线程块,其中,每个线程块包括多个线程,每个线程用于将重投影误差和雅克比矩阵的相关数据存储到共享内存并从共享内存获取相关数据进行计算,以获得并存储参数矩阵H和常数向量b。
示例性地,基于重投影误差及雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b,包括:基于重投影误差r及雅可比矩阵J,利用如下公式确定参数矩阵H和常数向量b:H=JTJ和b=-JTr,其中,r表示重投影误差,J表示雅克比矩阵。
示例性地,并行计算的方式采用并行指令集来实现。
示例性地,并行计算的方式利用通用图形处理器来实现。
根据本发明的另一方面,提供了一种图优化系统,包括处理器和存储器,其中,存储器中存储有计算机程序指令,计算机程序指令被处理器运行时用于执行如上所述的图优化方法。
示例性地,处理器包括中央处理器和通用图形处理器,其中,中央处理器用于获取图的顶点数据,接收用户输入的用于计算重投影误差的目标函数,其中顶点数据包括相机位姿信息;通用图形处理器用于采用并行计算的方式执行以下操作中的一个或多个:基于当前获取的顶点数据以及目标函数,计算重投影误差及重投影误差关于顶点数据的雅可比矩阵;基于重投影误差及雅可比矩阵,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及基于增量更新顶点数据,以重建图。
示例性地,图优化系统还包括相机,用于采集特征点图像并输出给处理器,其中顶点数据包括特征点图像。
根据本发明的又一方面,提供了一种计算机程序产品,包括程序指令,程序指令在运行时用于执行如上所述的图优化方法。
根据本发明的再一方面,提供了一种存储介质,在存储介质上存储了程序指令,程序指令在运行时用于执行如上所述的图优化方法。
在上述技术方案中,针对同一类型的数据的相同计算,可以同时并行运算以加速其计算过程。极大地缩短了图优化过程中的运算求解时间,提高了工业生产效率,使众多基于图优化的重建算法具备了实时计算的可能。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出了用于实现根据本发明实施例的图优化方法和装置的示例电子设备的示意性框图;
图2示出了根据本发明一个实施例的图优化方法的示意性流程图;
图3示出了根据本发明一个实施例的计算重投影误差及重投影误差关于顶点数据的雅可比矩阵所涉及的加法计算的示意图;
图4示出了根据本发明一个实施例的生成以及动态分配内存池的示意性流程图;
图5示出了根据本发明一个实施例的多个线程并行计算参数矩阵和常数向量的示意图;
图6示出了根据本发明的一个实施例的图优化装置的示意性框图;以及
图7示出了根据本发明实施例的图优化系统的示意性框图。
具体实施方式
近年来,基于人工智能的计算机视觉、深度学习、机器学习、图像处理、图像识别等技术研究取得了重要进展。人工智能(Artificial Intelligence,AI)是研究、开发用于模拟、延伸人的智能的理论、方法、技术及应用系统的新兴科学技术。人工智能学科是一门综合性学科,涉及芯片、大数据、云计算、物联网、分布式存储、深度学习、机器学习、神经网络等诸多技术种类。计算机视觉作为人工智能的一个重要分支,具体是让机器识别世界,计算机视觉技术通常包括人脸识别、活体检测、指纹识别与防伪验证、生物特征识别、人脸检测、行人检测、目标检测、行人识别、图像处理、图像识别、图像语义理解、图像检索、文字识别、视频处理、视频内容识别、行为识别、三维重建、虚拟现实、增强现实、同步定位与地图构建(SLAM)、计算摄影、机器人导航与定位等技术。随着人工智能技术的研究和进步,该项技术在众多领域展开了应用,例如安防、城市管理、交通管理、楼宇管理、园区管理、人脸通行、人脸考勤、物流管理、仓储管理、机器人、智能营销、计算摄影、手机影像、云服务、智能家居、穿戴设备、无人驾驶、自动驾驶、智能医疗、人脸支付、人脸解锁、指纹解锁、人证核验、智慧屏、智能电视、摄像机、移动互联网、网络直播、美颜、美妆、医疗美容、智能测温等领域。
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
首先,参照图1来描述用于实现根据本发明实施例的图优化方法和装置的示例电子设备100。
如图1所示,电子设备100包括一个或多个处理器102、一个或多个存储装置104。可选地,电子设备100还可以包括输入装置106、输出装置108和图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,电子设备也可以具有其他组件和结构。
处理器102可以采用微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)中的至少一种硬件形式来实现。处理器102也可以是CPU、图形处理器(GPU)、专用的集成电路(ASIC)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元中的一种或几种的组合,并且可以控制电子设备100中的其它组件以执行期望的功能。
存储装置104可以包括一个或多个计算机程序产品。计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行该程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
输入装置106可以是用户用来输入信息的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
输出装置108可以向外部(例如用户)输出各种信息(例如图像和/或声音),并且可以包括显示器、扬声器等中的一个或多个。可选地,输入装置106和输出装置108可以集成在一起,采用同一交互装置(例如触摸屏)实现。
图像采集装置110可以采集图像(包括静态图像和视频帧),并且将采集的图像存储在存储装置104中以供其它组件使用。图像采集装置110可以是单独的相机、移动终端中的摄像头或抓拍机中的图像传感器。应当理解,图像采集装置110仅是示例,电子设备100可以不包括图像采集装置110。在这种情况下,可以利用其他图像采集装置采集图像,并将所采集的图像发送给电子设备100。
示例性地,用于实现根据本发明实施例的图优化方法和装置的示例电子设备可以在诸如机器人或远程服务器等的设备上实现。
在图优化的过程中存在对图的大量的顶点数据等进行同样的数学运算的操作,且这些运算过程是相互独立的。换言之,进行数学运算后得到运算结果之间没有依赖性。由于巨大的计算量,现有的串行计算方式可能导致运算速度极为缓慢,严重影响了图优化效率。基于上述技术问题,本申请提出了一种新的图优化方法,对图优化中的顶点数据等进行并行运算,以提高图优化的效率。
下面将参考图2描述根据本发明实施例的图优化方法。图2示出了根据本发明一个实施例的图优化方法200的示意性流程图。该图优化方法200可用于高精地图重建、快速三维重建、大规模地图重建等场景。
如图2所示,方法200包括以下步骤。
步骤S210,获取图的顶点数据,并且接收用户输入的目标函数。
示例性地,可以将相机拍摄的某个物体上的各个角点等感兴趣点、相机所在的位置点等称为特征点。图的顶点包括这些直接采集的特征点以及根据这些特征点利用三角化技术等计算的特征点。视特征点不同,图的顶点数据可以包括特征点坐标和相机位姿信息等。特征点坐标是指特征点图像上的特征点在世界坐标系中的位置坐标。世界坐标系可以是任一基准坐标系,例如直角坐标系。相机位姿信息中可以包括相机位置信息,即相机在世界坐标系中的位置坐标;其还可以包括相机在世界坐标系下的旋转角度等姿态信息。可以理解,特征点坐标和相机位置坐标均为三维空间下的位置坐标。对于直接采集的特征点,可以通过使用光学相机、激光雷达、惯性加速度计等传感器采集并获取图的顶点数据。对于计算获得的特征点,可以基于直接采集的特征点进行相关计算从而获得图的顶点数据。用户输入的目标函数用于计算重投影误差,以确定使重投影误差最小的顶点数据。可以理解,该顶点数据可以是目标函数的一阶导数零点。将图的顶点数据与用户输入的目标函数共同输入到同一计算模型中。示例性地,用户可以利用如图1所示的输入装置106输入目标函数。目标函数可以表示一种或多种运算法则,基于该目标函数可以对顶点数据中的各个参数进行计算,以获得优化的图。用户还可以根据需要对图优化的目标函数进行自定义。
示例性地,可以采用并行计算的方式执行步骤S220至步骤S240中的一个或多个。其中,并行计算可以将复杂计算分解成若干个部分,将每一个部分交给独立的计算资源同时进行计算,即同时利用计算资源解决计算问题。在以下步骤中,存在大量彼此独立的计算过程,利用并行计算的方式,能够有效提高计算效率,加快图优化速度。
步骤S220,基于当前获取的顶点数据以及目标函数,计算重投影误差r及重投影误差关于顶点数据的雅可比矩阵J。
示例性地,重投影误差r可以表示所获取的图的顶点数据和对应的估计的顶点数据之间的误差,例如,当前获取的特征点坐标和对应的估计的特征点位置坐标之间的差。可以理解,在图优化过程中涉及大量的特征点坐标和相机位姿信息,针对这些大量数据的计算是彼此独立的。根据本发明的实施例,对该大量数据进行一次数学运算可以将其中成千上万的元素并行地进行同样的数学运算。图3示出了根据本发明一个实施例的计算重投影误差及重投影误差关于顶点数据的雅可比矩阵所涉及的加法计算的示意图。如图3所示,对所有x和y分别根据链式求导法则针对特征点坐标中的参数,例如α、β等一一求导并获得每个x和y对应的导数,再对所获得的x和y的导数一一对应地执行加法运算。最终将进行加法运算所获得的所有导数和均作为矩阵元素,以构建重投影误差关于顶点数据的雅可比矩阵J。
步骤S230,基于重投影误差r及雅可比矩阵J,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量Δx。
在此步骤中,也涉及到大量的、类似的独立计算。例如,所有的重投影误差r可以分别对特征点坐标、相机位置坐标和相机姿态数据中的全部或部分进行求导。在一个实施例中,特征点坐标用分别表示横坐标、纵坐标、竖坐标的三个参数表示,相机位置坐标也用分别表示横坐标、纵坐标、竖坐标的三个参数表示,相机姿态数据也分别用三个参数表示,例如相机分别关于世界坐标系的横坐标、纵坐标和竖坐标的旋转角度,则对于一个重投影误差r1,其将对9个参数进行求导运算。而实际上,在此步骤中,重投影误差本身就存在大量数据。基于此,此步骤也可以采用并行计算的方式来提速,从而使图优化提速。
可以理解,当前获取的顶点数据加上增量Δx可以获得使重投影误差最小的顶点数据,即理想的顶点数据。由此,基于重投影误差r和雅克比矩阵J获得增量Δx后,即可基于该增量Δx更新顶点数据,进而获得更理想的图。
步骤S240,基于增量Δx更新顶点数据,以重建图。
本领域普通技术人员可以理解,与步骤S220和步骤S230类似的,在此步骤中也存在大量的独立计算,由此也可以以并行计算的方式执行该步骤。
基于增量Δx可以更新调整相机的位置信息、旋转角度等位姿信息和/或特征点的位置信息等。可以基于调整了相机位姿信息和/或特征点坐标,重建图。
可以理解,上述过程可以多次重复进行,直至将增量Δx优化到满足用户需求或到达预设条件为止。由此,获得优化后的图。
在上述技术方案中,针对同一类型的数据的相同计算,可以同时并行运算以加速其计算过程。极大地缩短了图优化过程中的运算求解时间,提高了工业生产效率,使众多基于图优化的重建算法具备了实时计算的可能。
示例性地,上述并行计算的方式可以采用并行指令集(Neon)来实现。并行指令集可以在CPU上实现其并行计算功能。并行指令集进行并行计算时可以执行循环的向量化并行指令操作。例如将循环的向量中的元素个数设置为5,即5个操作数为一组。则针对这一组操作数执行一次并行计算。可以理解,上述操作数个数仅为了说明原理,在实际并行计算过程中,至少对成千上万个操作数进行分组计算操作。
由此根据并行指令集所利用的CPU的算力合理设置循环的向量,可以保证每次进行并行计算的操作数的数量最大化,同时还实现了对操作数的并行计算,进而提升图优化速度。
替代地,上述并行计算方式还可以采用通用图形处理器(GPGPU)实现。GPGPU具有强大的并行处理能力,其在实现数据级并行技术且针对数据的运算量远大于数据调度和传输的需要时,在性能上远远超越了CPU。利用GPGPU来处理图优化过程中的并行运算,能够完美利用其专用硬件加速器的功能,极大地缩短了图优化时间。下面以采用GPGPU实现并行计算为例来详细描述本发明的实施例。
示例性地,计算重投影误差r及重投影误差关于顶点数据的雅可比矩阵J可以利用并行加速的数学算子实现。根据本发明一个实施例,可以利用动态内存池来存储上述数学算子。图4示出了根据本发明一个实施例的生成以及动态分配内存池的示意性流程图。其中,并行加速可以是基于例如GPGPU实现的并行硬件加速。
如图4所示,生成以及动态分配内存池可以通过以下步骤实现。
步骤S221,根据单个数学算子所需要的内存空间M0,开辟N1倍于内存空间M0的内存空间M1以生成动态内存池,并且生成N1个多线程句柄。
再次参见图3,对于一个加法算子,将x与对应的y相加获得的加和以及将x的导数值与对应的y的导数值对应相加获得的加和所需的所有内存空间可以视为加法算子执行一次数学运算获得的运算结果所需要的内存空间M0。在图3中,即最下面框中所示出数据所占用的内存空间即内存空间M0。根据数学算子执行一次数学运算获得的运算结果所需要的内存空间M0进行初始化。初始化的过程可以具体包括开辟出一块内存空间大小为前述内存空间M0的数倍的内存空间M1,例如,N1倍,其中N1为大于1的正整数。可以将开辟出的内存空间视为动态内存池。同时可以生成对应的N1个多线程句柄,由此能够启动与数学算子对应数目的多个多线程。每个多线程用于对应的数学算子对其操作数执行相应的运算,例如图3中所示的加法运算。
可以理解,动态内存池意味着内存空间是动态变化的,每次新的数学算子申请内存空间可以直接从该内存空间池中为其分配内存空间,同时为此数学算子分配一个多线程句柄。
步骤S222,对于当又一数学算子申请内存空间时,前述动态内存池没有空闲空间的情况,重新申请N2倍于内存空间M0的内存空间M2,以扩大动态内存池,并且再次生成N2个多线程句柄。其中N2也为大于1的整数。从扩大后的动态内存池中为该又一数学算子分配内存空间并且为该又一数学算子分配一个多线程句柄。
在一个具体实施例中,若一个新的数学算子在申请内存空间时,动态内存池中没有空闲空间,此时将会重新申请一块内存空间大小是内存空间M0的数倍的内存空间,以扩大动态内存池的内存空间。同时再次生成对应数目的多线程句柄以用于后续申请内存空间的数学算子。
如前所述,每次数学算子申请内存空间,都从当前的动态内存池为该数学算子分配内存空间并且为该数学算子分配一个多线程句柄。每次数学算子销毁时,将为该数学算子分配的内存空间归还动态内存池同时归还为该数学算子分配的多线程句柄。可以将数学算子销毁的过程视为释放内存空间,即清除内存空间缓存的过程。
可以理解,上述生成动态内存池以及多线程句柄的操作,可以在CPU完成。但是该动态内存池以及多个线程可以位于GPGPU。
上述过程基于动态内存池实现,为数学算子分别对应分配一个多线程句柄。在该方案中,多线程句柄可以使相互独立的数学算子计算过程并行执行,进一步缩短整个计算过程的执行时间。此外,动态内存池可以对内存空间进行合理分配。并且由于数学算子所需要的内存空间的波动较小,动态内存池可以减少内存碎片问题。
可以理解,从动态内存池为该数学算子分配内存空间可以包括为该数学算子所涉及的运算结果分配内存空间。该运算结果可以是如图3所示的对x和y的加和,以及对x和y的导数值相加得到的加和。其中,为每个运算结果所分配的内存空间与和该运算结果表示同一物理参数的运算结果的内存空间相邻。可以理解,动态内存池中的内存空间是连续的。具体例如,可以在GPGPU上开启多个线程,每个线程用于处理数学算子的一次计算操作。如图3所示,对于操作数x和y的加和操作以及二者导数的加和操作,将操作数x和y的加和对应存储到内存空间中。其中x0+y0、x1+y1、x2+y2......均按顺序相邻存储。同时根据链式求导法则计算每个x和y的导数,并将所有导数的加和也一一对应地更新到内存空间,均按顺序相邻存储。在整个计算过程中,参数加和的计算都是各自并行执行的,被并行加速。
针对数学算子所涉及的表示同一物理参数的运算结果都被相邻存储在连续的内存空间中,使得对相应数学算子的数学运算可以更顺利地并行执行,提升了图优化的效率。
以采用GPGPU实现并行计算为例,可以将数据分别存储到CPU与GPGPU两部分中。其中,用户与图优化系统进行的数据交互,例如向图优化系统中增加图优化的顶点数据以及输入目标函数,发生在CPU部分,同时这些数据将被自动更新到GPGPU的存储空间中。当用户与图优化系统交互结束,GPGPU可以立即开始对用户定义的图优化问题进行求解。上述动态内存池可以设置于GPGPU中。当GPGPU针对图优化问题求解获得符合预设条件的迭代结果时,可以将该迭代结果写回CPU中,并将控制权重新归还用户。
示例性地,上述数学算子包括正向传播自动微分算子,其可以表示为图3和图5中的FwdAdVector。正向传播自动微分算子可以对操作数进行自动求导计算。其中,正向传播意味着由前往后依次进行计算。在图优化的过程中,涉及到大量的求导运算,这些求导运算可以利用正向传播自动微分算子来实现。
在一个具体实施例中,步骤S220计算重投影误差关于顶点数据的雅可比矩阵还可以包括基于当前获取的顶点数据以及目标函数,利用自动微分算子计算重投影误差关于顶点数据的雅可比矩阵J。再次参考图3,在该实施例中可以基于当前获取的顶点数据以及目标函数利用正向传播自动微分算子计算出每个x和y对应的导数,将这些导数一一对应相加,以获得导数和。每个导数和均可作为一个元素来构建雅可比矩阵J。
利用正向传播自动微分算子实现并行计算可以完全向用户隐藏求导过程且灵活性强,减少了人工推导目标函数对自变量的导数计算公式,减少了用户工作量,提升了用户的使用体验。特别地,同类型数据内存连续的正向传播自动微分算子在进行大规模前向传播的自动微分时可以较好的利用并行指令集或并行硬件架构特性加速其计算过程。
根据本发明的一个实施例,采用并行计算的方式执行步骤S230基于重投影误差及雅可比矩阵,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量,包括:采用并行计算的方式执行以下步骤S231和/或步骤S232。
步骤S231,基于重投影误差及雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b,其中,线性方程的解Δx表示使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量,λ表示相机搜索半径,I表示单位矩阵。
示例性地,将重投影误差和雅可比矩阵输入到稀疏线性方程构造器中,该构造器基于这两个输入输出以例如压缩行存储(CRS)格式存储的线性方程(H+λI)Δx=b的参数矩阵H以及常数向量b。其中Δx表示使重投影误差r最小的顶点数据相对于当前获取的顶点数据的增量。可以理解,重投影误差r最小时,获取的对应的顶点数据是最准确的,即为理想的顶点数据。λ表示相机搜索半径。I表示单位矩阵。
步骤S232,基于参数矩阵H和常数向量b求解线性方程(H+λI)Δx=b,以确定增量Δx。
示例性地,将稀疏线性方程构造器输出的参数矩阵H和常数向量b输出至稀疏线性方程求解器中。该求解器可以根据用户的需求选择使用共轭梯度法或正交三角形分解法(QR分解法)等方法,cuSparse、cuSolver等工具求解线性方程(H+λI)Δx=b。由于λ和I均可以视为已知数,因此在向求解器输入参数矩阵H和常数向量b后可以求解出唯一的未知数增量Δx。
上述实施例中,利用线性方程来确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量,由此,使得其中大量的计算能够采用并行的方式进行,提高了图优化的效率。
示例性地,步骤S231基于重投影误差及雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b可以包括:首先,开辟共享内存;然后,开启多个线程块,其中,每个线程块包括多个线程。每个线程用于将重投影误差r和雅克比矩阵J的相关数据存储到共享内存并从共享内存获取相关数据进行计算,以获得并存储参数矩阵H和常数向量b。图5示出了根据本发明一个实施例的多个线程并行计算参数矩阵和常数向量的示意图。在该实施例中,仍以利用GPGPU进行并行运算为例,如图5所示,在GPGPU上开启多个线程块,每个线程块可以包含例如32*n个线程,其中n表示每个参数块待求导量的个数。对于特征点坐标用分别表示横坐标、纵坐标、竖坐标的三个参数表示,相机位置坐标也用分别表示横坐标、纵坐标、竖坐标的三个参数表示,相机姿态数据也分别用相机分别关于世界坐标系的横坐标、纵坐标、竖坐标的旋转角度三个参数表示的情况,n等于9。该实施例中的雅可比矩阵可以不直接以稠密矩阵的形式存储,而是以数学算子自身的设计结构存储。将数学算子的操作数作为输入直接输入到稀疏线性方程构造器中,稀疏线性方程构造器在执行方程构建的开始阶段首先在GPGPU上开辟出一块共享内存(Shared Memory)并且开启多个线程块。该共享内存用于缓存频繁访问的数据,以提升计算速度。线程块内的每个线程将雅克比矩阵中的导数存储至共享内存中,即图5的①。然后根据数学公式,每个线程从共享内存中取出需要的数据进行计算,计算过程示出为图5中的②。最终将计算结果存储至参数矩阵H和常数向量b的对应存储位置中,该过程示出为图5中的③。
上述方案中,以数学算子的操作数为输入直接构造稀疏线性方程的参数矩阵及常数向量,该参数矩阵及常数向量可以被直接送入后续稀疏线性方程求解器进行线性方程的求解。由此可以通过直接访问共享内存的方式实现数据的共享,可以保证多个进程直接快速、可靠的通讯并进行数据交换,提高了数据传输的效率。
在一个具体实施例中,步骤S231可以通过以下公式实现:H=JTJ,b=-JTr。其中,和J分别为前文所述的重投影误差以及重投影误差关于顶点数据的雅可比矩阵J,JT表示J的转置。
上述算法简单易实现,且计算量较小,可以进一步加快图优化中数据计算速度,提高图优化效率。
根据本发明的第二方面,提供了一种图优化装置。图6示出了根据本发明的一个实施例的图优化装置600的示意性框图。
如图所示,装置600包括信息获取模块610以及并行计算模块620。所述各个模块可以分别执行上文中所述的图优化方法的各个步骤/功能。以下仅对该装置600的各个部件的主要功能进行描述,而省略以上已经描述过的细节内容。
信息获取模块610用于获取图的顶点数据,接收用户输入的目标函数,其中顶点数据包括相机位姿信息。信息获取模块610可以由图1所示的电子设备中的输入装置106和/或图像采集装置110来实现。
并行计算模块620用于采用并行计算的方式执行以下操作中的一个或多个:基于当前获取的顶点数据以及目标函数,计算重投影误差r及重投影误差关于顶点数据的雅可比矩阵J;基于重投影误差r及雅可比矩阵J,确定使所述重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及基于增量更新顶点数据,以重建图。并行计算模块620可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
根据本发明的第三方面,还提供了一种图优化系统。图7示出了根据本发明实施例的图优化系统700的示意性框图。如图7所示,该系统700包括处理器710和存储器720。
存储器720中存储有计算机程序指令,计算机程序指令被处理器运行时用于执行如上所述的图优化方法。
处理器710用于运行存储器720中存储的计算机程序指令,以执行根据本发明实施例的图优化方法200的相应步骤,并且用于根据本发明实施例的图优化装置600中的信息获取模块610以及并行计算模块620。
示例性地,处理器710包括CPU和GPGPU。其中,CPU用于获取图的顶点数据,接收用户输入的目标函数,其中顶点数据包括相机位姿信息。GPGPU用于采用并行计算的方式执行以下操作中的一个或多个:基于当前获取的顶点数据以及目标函数,计算重投影误差r及重投影误差关于顶点数据的雅可比矩阵J;基于重投影误差r及雅可比矩阵J,确定使重投影误差最小的顶点数据相对于当前获取的顶点数据的增量Δx;以及基于增量Δx更新顶点数据,以重建图。
示例性地,图优化系统还包括相机,用于采集特征点图像并输出给处理器710。如上所述,特征点图像即为特征点所代表的物体的图像。例如,图优化系统可以包括机器人,机器人上可以设置有相机。随着机器人在待建图场景内运动,其上携载的相机可以采集场景内的各个特征点处的特征点图像,用于重建图。
根据本发明的第四方面,还提供了一种计算机程序产品,包括程序指令。程序指令在运行时用于执行如上所述的图优化方法。
根据本发明的第五方面,还提供了一种存储介质,该存储介质上存储了程序指令。程序指令在运行时用于执行如上所述的图优化方法。
本领域普通技术人员通过阅读上述有关图优化方法的相关描述可以理解图优化装置、图优化系统、计算机程序产品和存储介质的具体细节以及有益效果,为了简洁在此不再赘述。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的图优化方法的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种图优化方法,其特征在于,包括:
获取图的顶点数据,接收用户输入的用于计算重投影误差的目标函数;
采用并行计算的方式执行以下操作中的一个或多个:
基于当前获取的顶点数据以及所述目标函数,计算所述重投影误差及所述重投影误差关于顶点数据的雅可比矩阵;
基于所述重投影误差及所述雅可比矩阵,确定使所述重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及
基于所述增量更新所述顶点数据用以重建所述图。
2.如权利要求1所述的图优化方法,其中,所述计算重投影误差及所述重投影误差关于所述顶点数据的雅可比矩阵利用并行加速的数学算子实现,
所述图优化方法还包括:
根据单个数学算子所需要的内存空间M0,开辟N1倍于所述内存空间M0的内存空间M1以生成动态内存池,并且生成N1个多线程句柄;其中,每次数学算子申请内存空间,都从所述动态内存池为该数学算子分配内存空间并且为该数学算子分配一个多线程句柄,每次数学算子销毁时,将为该数学算子分配的内存空间归还所述动态内存池同时归还为该数学算子分配的多线程句柄;
对于当又一数学算子申请内存空间时所述动态内存池没有空闲空间的情况,重新申请N2倍于所述内存空间M0的内存空间M2,以扩大所述动态内存池,并且再次生成N2个多线程句柄,从扩大后的动态内存池中为该又一数学算子分配内存空间并且为该又一数学算子分配一个多线程句柄。
3.如权利要求2所述的图优化方法,其中,所述从所述动态内存池为该数学算子分配内存空间包括:
为该数学算子的运算结果分配内存空间,其中,为每个运算结果所分配的内存空间与和该运算结果表示同一物理参数的运算结果的内存空间相邻。
4.如权利要求2或3所述的图优化方法,其中,所述数学算子包括正向传播自动微分算子;
所述计算重投影误差及所述重投影误差关于顶点数据的雅可比矩阵,包括:
基于当前获取的顶点数据以及所述目标函数,利用所述自动微分算子计算所述重投影误差关于顶点数据的雅可比矩阵。
5.如权利要求1至4任一项所述的图优化方法,其中,采用并行计算的方式执行所述基于所述重投影误差及所述雅可比矩阵,确定使所述重投影误差最小的顶点数据相对于当前获取的顶点数据的增量,包括:采用并行计算的方式执行以下操作中的一个或二者:
基于所述重投影误差及所述雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b;其中,所述线性方程的解Δx表示所述增量,λ表示相机搜索半径,I表示单位矩阵;
基于所述参数矩阵H和所述常数向量b求解所述线性方程(H+λI)Δx=b,以确定所述增量Δx。
6.如权利要求5所述的图优化方法,其中,所述基于所述重投影误差及所述雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b,包括:
开辟共享内存;
开启多个线程块,其中,每个线程块包括多个线程,每个线程用于将所述重投影误差和所述雅克比矩阵的相关数据存储到所述共享内存并从所述共享内存获取所述相关数据进行计算,以获得并存储所述参数矩阵H和所述常数向量b。
7.如权利要求5或6所述的图优化方法,其中,所述基于所述重投影误差及所述雅可比矩阵,确定线性方程(H+λI)Δx=b的参数矩阵H和常数向量b,包括:
基于所述重投影误差及所述雅可比矩阵,利用如下公式确定所述参数矩阵H和所述常数向量b:
H=JTJ和b=-JTr,其中,r表示所述重投影误差,J表示所述雅克比矩阵。
8.如权利要求1至7任一项所述的图优化方法,其中,所述并行计算的方式采用并行指令集来实现。
9.如权利要求1至7任一项所述的图优化方法,其中,所述并行计算的方式利用通用图形处理器来实现。
10.一种图优化系统,包括处理器和存储器,其中,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时用于执行如权利要求1至9任一项所述的图优化方法。
11.如权利要求10所述的图优化系统,其中,所述处理器包括中央处理器和通用图形处理器,其中,
所述中央处理器用于获取图的顶点数据,接收用户输入的用于计算重投影误差的目标函数,其中所述顶点数据包括相机位姿信息;
所述通用图形处理器用于采用并行计算的方式执行以下操作中的一个或多个:
基于当前获取的顶点数据以及所述目标函数,计算所述重投影误差及所述重投影误差关于顶点数据的雅可比矩阵;
基于所述重投影误差及所述雅可比矩阵,确定使所述重投影误差最小的顶点数据相对于当前获取的顶点数据的增量;以及
基于所述增量更新所述顶点数据,以重建所述图。
12.如权利要求10或11所述的图优化系统,其中,所述图优化系统还包括相机,用于采集特征点图像并输出给所述处理器,其中所述顶点数据包括所述特征点图像上的特征点位置。
13.一种计算机程序产品,包括程序指令,所述程序指令在运行时用于执行如权利要求1至9任一项所述的图优化方法。
14.一种存储介质,在所述存储介质上存储了程序指令,所述程序指令在运行时用于执行如权利要求1至9任一项所述的图优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111281891.9A CN114202454A (zh) | 2021-11-01 | 2021-11-01 | 图优化方法、系统、计算机程序产品以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111281891.9A CN114202454A (zh) | 2021-11-01 | 2021-11-01 | 图优化方法、系统、计算机程序产品以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114202454A true CN114202454A (zh) | 2022-03-18 |
Family
ID=80646657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111281891.9A Pending CN114202454A (zh) | 2021-11-01 | 2021-11-01 | 图优化方法、系统、计算机程序产品以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114202454A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117237181A (zh) * | 2023-11-08 | 2023-12-15 | 深圳市其域创新科技有限公司 | 基于自动微分的光束平差计算方法、装置、设备及介质 |
CN117724850A (zh) * | 2024-02-06 | 2024-03-19 | 天津先进技术研究院 | 野外预通行路径可行性评估方法、系统、设备及介质 |
-
2021
- 2021-11-01 CN CN202111281891.9A patent/CN114202454A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117237181A (zh) * | 2023-11-08 | 2023-12-15 | 深圳市其域创新科技有限公司 | 基于自动微分的光束平差计算方法、装置、设备及介质 |
CN117237181B (zh) * | 2023-11-08 | 2024-03-29 | 深圳市其域创新科技有限公司 | 基于自动微分的光束平差计算方法、装置、设备及介质 |
CN117724850A (zh) * | 2024-02-06 | 2024-03-19 | 天津先进技术研究院 | 野外预通行路径可行性评估方法、系统、设备及介质 |
CN117724850B (zh) * | 2024-02-06 | 2024-04-19 | 天津先进技术研究院 | 野外预通行路径可行性评估方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113362382B (zh) | 三维重建方法和三维重建装置 | |
JP7485482B2 (ja) | コンピュータビジョンシステム | |
CN112862874B (zh) | 点云数据匹配方法、装置、电子设备及计算机存储介质 | |
Panek et al. | Meshloc: Mesh-based visual localization | |
JP2021527877A (ja) | 3次元人体姿勢情報の検出方法および装置、電子機器、記憶媒体 | |
CN113034652A (zh) | 虚拟形象驱动方法、装置、设备及存储介质 | |
CN114202454A (zh) | 图优化方法、系统、计算机程序产品以及存储介质 | |
CN111368656A (zh) | 一种视频内容描述方法和视频内容描述装置 | |
CN111340190A (zh) | 构建网络结构的方法与装置、及图像生成方法与装置 | |
Ayuso et al. | GPU‐based acceleration of bio‐inspired motion estimation model | |
EP4290459A1 (en) | Augmented reality method and related device thereof | |
CN115222896B (zh) | 三维重建方法、装置、电子设备及计算机可读存储介质 | |
CN112258565A (zh) | 图像处理方法以及装置 | |
CN115690382A (zh) | 深度学习模型的训练方法、生成全景图的方法和装置 | |
Feng et al. | Point cloud registration algorithm based on the grey wolf optimizer | |
CN115375836A (zh) | 基于多元置信度滤波的点云融合三维重建方法和系统 | |
CN113762331A (zh) | 关系型自蒸馏方法、装置和系统及存储介质 | |
CN116912817A (zh) | 三维场景模型拆分方法、装置、电子设备和存储介质 | |
US20220398283A1 (en) | Method for fast and better tree search for reinforcement learning | |
CN116079727A (zh) | 基于3d人体姿态估计的人形机器人动作模仿方法及装置 | |
CN116012244A (zh) | 基于图像多尺度信息的图像降噪方法和电子设备 | |
CN115829835A (zh) | 图像处理方法、电子设备、存储介质及计算机程序产品 | |
Lozano et al. | Simultaneous and fast 3D tracking of multiple faces in video by GPU-based stream processing | |
Garrett et al. | Gpu-accelerated descriptor extraction process for 3d registration in augmented reality | |
Bass et al. | Machine learning in problems involved in processing satellite images |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |