基于异构视觉计算模块的动态可重构系统
2021-04-09孙建国贺子天李思照
孙建国,贺子天,李思照
(哈尔滨工程大学 计算机科学与技术学院,黑龙江 哈尔滨 150001)
0 引言
动态可重构视觉计算系统是面向环境动态视觉感知、大规模图形绘制等视觉信息处理和应用的动态可重构的高效能智能计算机系统,是由计算特性不同的多类计算资源通过高速互联总线构成的异构计算机系统,其在体系结构上强调计算、通信和存储之间的均衡,在能力方面强调性能和功耗之间的均衡,在实际运用中强调根据应用选择合适的计算特性以达到时效和能效的联合优化。动态可重构视觉计算系统应具有计算架构可重构、规模可伸缩、资源高度协同等能力,能在特定体积、功耗和重量等因素的约束下,以高性能且高效能的方式完成海量数据处理、传输、显示以及导航平台实时控制等任务。
异构计算被视为继单核、多核之后处理器的第三个时代,它将有效解决能耗、可扩展性等问题,成为高性能和分布式计算领域的一种重要新兴模式。当前异构计算系统主要有以下2种架构:CPU+GPU及CPU+FPGA。
GPU异构系统主要采用CPU+GPU架构,将CPU和GPU各自优点结合起来,GPU处理数据密集型的并行任务,CPU进行复杂的逻辑事务处理,从而充分发挥CPU和GPU各自优势,最大限度地利用异构系统的处理能力,降低计算成本和能耗。基于CPU+FPGA的异构计算系统可以加速多种计算密集型任务,在此计算模式下,采用传统并行计算方式实现粗粒度的任务并行,直接通过FPGA上的硬件逻辑实现细粒度的任务并行,硬件可编程性通过改变硬件逻辑来适应底层的计算问题,从而使CPU+FPGA的异构计算系统在性能、功耗、体积和成本等方面和传统计算机相比获得显著提升,具有灵活性高、功能适用性强等优势。
国内研究人员已针对GPU、FPGA等器件开展领域优化、异构编程、高速互联等研究,但面向高效能的异构计算技术研究还有待深入开展。国防科技大学的严明等人[1]开展了面向领域应用的异构多核SoC系统结构设计与优化技术研究,结合粗粒度可重构体系结构与应用定制指令集处理器,对可重构异构计算系统的定制设计方法开展研究,设计了一款异构多核SoC芯片。武汉大学的肖汉等人[2]基于CPU+GPU异构计算技术开展了面向影像匹配方面的若干问题研究,提出了异构群核架构的影像处理协同解决方案。哈尔滨工程大学的邓臻等人[3]基于DSP和FPGA的多处理器信号处理平台,研究了声纳多波束相干测深算法的高效实现方法。大连海事大学的孟凡志等人[4]基于DSP和FPGA器件开展了雷达目标检测与信息处理系统研究工作,通过软件优化手段提高了雷达目标自动检测和录取处理的速度和精度。哈尔滨工业大学的王鹤澎等人[5]对新型硬件处理器基于数据密集型计算的研究进行了综述,概述了新型硬件处理器的特点,对新型处理器的FPGA和GPU等硬件进行了性能分析。
因此,根据上述研究中所遇到的问题,本文针对嵌入式视觉计算平台异构计算资源的多样性,提出一种异构融合的嵌入式可重配置视觉计算架构,实现对嵌入式计算平台多样化视觉应用的全覆盖支撑;同时,为满足复杂地形地貌的地形信息,提出一种面向大规模场景的全景视图拼接方法。通过加入全局上下文信息解决图像配准中存在的特征点误匹配问题,进而根据融合线两侧像素点灰度插值计算动态融合区域并进行渐入渐出的加权融合,从而有效提高全景视图拼接的性能。
1 动态可重构视觉计算硬件架构设计
1.1 硬件架构设计
为满足信息处理高性能、高可靠和低功耗等需求,将动态可重构视觉计算架构分为3部分:可重构数据通道及控制模块、高性能并行视觉计算模块和动态可重构加速模块。以此构建的多级异构融合高效能分布式计算系统,由基于CPU、GPU、NPU和多种型号的FPGA定制加速节点连接组成,其架构如图 1所示。
图1 动态可重构视觉计算架构Fig.1 Dynamic reconfigurable visual computing architecture
1.2 架构层次及功能分析
不同的视觉计算应用软件进入控制单元之后,根据软件的要求将划分后的任务逐块送到数据通道中执行,数据通道再根据所输入的数据依照控制单元的要求来进行配置计算单元阵列。由于不同应用软件的任务划分不同,数据通道会将任务根据相应重配置信息传入到异构视觉计算单元当中,同时为解决GPU及NPU计算能力不足,利用大规模FPGA进行加速控制,以弥补性能缺陷,构建系统级与单元级的动态可重构加速堆栈结构[6]。
可重构加速堆栈是要使超大规模数据能够借助CPU、GPU、NPU以及FPGA等非常简单地来评估、开发、部署和应用加速。此平台支持open stack,可以方便地进行计算资源的配置和管理,可有效地利用此平台来处理嵌入视觉、机器学习等工作负载。此结构可以方便地根据输入的应用软件来进行各个计算单元之间的配置,例如在目标识别方面常用的人工智能计算框架是Caffe,可利用Caffe来开发库,包括用于神经网络、矩阵乘法等,这样系统将和Caffe进行集成,会很快根据相应的库文件来确定使用系统中的哪些计算节点,从而实现系统级上的可重构[7]。
此外,各计算单元通过高速传输总线连接到外部可伸缩的以太互联网络以及高带宽低延迟非压缩视频协议转换传输接口,使异构分布式计算系统具备规模可伸缩特性和视频无损远距离传输能力,实现整机之间的异构分布式融合。在以太网互联之外,多个异构计算节点还通过高速串行总线交换设施进行局部互联,在轻量级通信协议栈的支持下实现各个计算节点之间高带宽、低延时的数据传输,从而达到模块级的异构分布式融合。最后,通过使用集成了计算节点的FPGA器件,进一步缩短CPU、GPU、NPU与加速计算资源之间的距离,降低通信开销,实现单元级的异构融合[7]。
1.3 动态可重构视觉计算架构工作原理
GPU、NPU等视觉图像处理节点和FPGA定制加速节点作为异构分布式系统的加速计算资源,分别承担高速图像处理(如目标识别、图像融合等)和智能化加速计算任务,通过CPU来调度GPU、NPU和FPGA的运行。这种堆栈式架构可以使FPGA加速模块和GPU及NPU计算模块通过总线进行紧耦合,从而提高数据带宽和执行效率[8]。
视觉计算所具备的动态可重构性的流程如图2所示,假设初始状态所有部件均未入栈。
(1)当视觉计算应用是路径规划和避障检测等时,算法使用一些相对简单的图像处理技术即可,但需要用到大量的并行计算,因此设计在此平台的加速堆栈中,需要GPU进栈来处理图像大数据[9],为了满足实时的需求,还需要FPGA的高度并行计算能力来对图像处理进行加速,此时FPGA进入加速堆栈,图2(a)表示在图像处理时所需要进行可重构的计算平台。
(2)当运行计算量需求较大的应用时(如近地目标识别),会涉及到大量的卷积神经网络运算,此时,GPU以其强大的计算能力和较低的功耗拥有较优的卷积神经网络计算效能,因此在平台中对卷积神经网络的计算仅需要配置NPU运算即可。由于上一个应用中GPU和FPGA已经在加速堆栈中,所以控制单元需要发出信号,由CPU控制GPU和FPGA出栈,并使NPU进栈,这样就完成动态重配置的过程,以完成近地目标识别等应用的显示成像,动态配置过程如图 2(b)所示。
(3)当使用三维地图成像及导航应用时,不仅需要大量的卷积神经网络计算,同时为达到成像的实时性,还需要对计算进行加速,因此在配置过程当中需要使用GPU来完成卷积神经网络计算,同时还需要FPGA来进行加速。由于上一个应用中,NPU已经在栈内,因此只需要将FPGA入栈的控制信号传入到加速堆栈即可,配置过程如图 2(c)所示,从而完成整个系统的动态可重构过程。
(a) 路径规划、避障检测等应用的重构计算架构
在此计算架构下,所使用的加速堆栈技术可有效地对整机进行系统级和单元级动态可重构,由于使用的就是堆栈结构,每次重新配置时需要经历出栈-进栈的过程,因此这种结构的可扩展性非常强,添加或删减部件都不会影响整体架构设计方案。同时,由于智能计算节点和FPGA节点均使用相同的高速串行总线接口进行互联,因此在接口兼容的情况下,二者可以实现无缝替换。此外,若单系统性能不能满足应用需求,还可通过以太网互联进行系统规模的扩容,在资源管理和任务调度中间件的配合之下,实现更高性能的异构分布式处理[10]。
2 基于动态可重构系统的视觉计算算法
2.1 实现特征检测的Harris角点检测算法
角点包含了物体的重要特征信息,表现为灰度值突变的像素点或物体轮廓边缘线的相交点,是图像的一个重要局部特征。角点的优点包括算法适应性强、过程简单和结果稳定等,检测到的角点精度和稳定性直接影响了后续的特征匹配等任务[11]。
Harris角点检测原理是利用一个固定大小的窗口在图像中移动,计算灰度变化,若该变化大于给定的阈值,则可判定为角点[12]。
对于图像I(x,y)以及一个固定大小的窗口w(x,y),当w(x,y)在点(x,y)处平移(Δx,Δy)时产生的灰度变化G(x,y)为[13]:
(1)
利用泰勒公式展开可得:
[I(x+Δx,y+Δy)-I(x,y)]≈I(x,y)+ΔxIx+ΔyIy,
(2)
式中,Ix,Iy分别是图像I(x,y)在(x,y)方向上的梯度,所以有[14]:
(3)
令矩阵:
(4)
定义角点响应函数R为:
R(T)=det(T)-c·tr(T),
(5)
式中,det(T)为矩阵的行列式;tr(T)为矩阵的迹;c为可调参数,取值范围0.04~0.15[15]。
2.2 实现特征匹配的NCC算法
(6)
由数学知识可知,cosθ的值越接近于1,说明2个向量越相似。将这一原理推广到二维图像中可得出:
(7)
式中,
(8)
(9)
NCC设置以特征点(x1i,y1i)和(x2j,y2j)为中心,长为2m+1,宽为2n+1的2个可移动窗口,分别计算亮度均值和方差,NCC(p1i,p2j) 的取值范围为[-1,1]。
2.3 图像融合算法
图像融合算法是指对多个图像源的像素值进行加权差值以期得到唯一的目标像素值,从而合成一幅新的图像[18-19]。
双三次差值[20]又称立方卷积差值。它利用拟合公式对待插值点周围的若干个点的图像数据进行处理,进而求出插值点数据。双三次插值公式如下:
式中,F(i,j)表示源图像(i,j)处的像素灰度值。
最常用的拟合基函数为:
(11)
3 结束语
本文提出了一种面向异构计算模块的可配置视觉计算与通信设计方法,针对异构处理器及视觉计算模块因其数据处理效能偏低、整体协同工作能力不足、通信带宽利用率不足等问题,提出一种基于CPU+GPU+NPU的视觉计算作为基础处理模块、高性能FPGA作为可配置视频传输加速模块的系统数据协同通信技术,实现异构视觉处理计算模块的高效计算能力,以及多模块之间通信效率的提升,为视觉计算平台整体架构设计及系统通信效能提供有效的优化手段。