基于FPGA和OpenCL硬件加速的运动物品识别系统

2019-01-25 12:00
传感器世界 2018年11期
关键词:开发板传送带编程

江汉大学,湖北武汉 430056

一、引言

1、研究背景及意义

此系统的开发是为了应对现在日益庞大的数据处理量需求,加速数据处理效率。从最初的单核CPU,发展到后来的多核CPU,虽然处理速率有了显著的增强,但功耗较大,且从软硬件协同的角度上来看,在并行操作过程中,调整比较困难,再发展到如今利用CPU、GPU、DSP和FPGA来互相搭配,实现多内核运算,大大降低了功耗,而不足之处在于其算法逻辑的设计是一道不可避免的难题[1]。

2012年11月,Altera公司公开展示一款基于FPGA的OpenCL SDK,这种开放式标准可以让开发者在编程实现过程中用C/C++语言来代替传统的硬件编程语言,这样无需再深入思考FPGA底层的HDL语言设计,大大简化编程实现过程,将更多的时间放在并行加速的优化设计上[2]。FPGA和OpenCL结合的优势如下:

(1)比较于CPU,GPU等处理器,具有大幅度提高性能,功耗低的优势;

(2)基于C的编程环境,具有灵活的可编程性和并行执行能力;

(3)降低在提取线程级并行处理操作在FPGA中实现以提高性能时的难度;

(4)设计过程中,OpenCL将相应的高级描述转化为流水线,可移植性强。

2、OpenCL简介

OpenCL(Open Computer Language)是一种开放性的语言标准,能够为异构平台提供编写程序的框架[3]。最早于2008年由苹果公司提出,希望能够为软硬件的协同设计提供更多的方式。OpenCL支持基于C/C++的编程环境的代码开发,并且可以很好地应用于CPU、GPU、DSP和FPGA系统中,除此之外,支持相应的API,并通过PCI-E协议实现硬件与主机的数据交互。

(1)OpenCL架构及其模型分析

OpenCL架构由平台模型、执行模型、内存模型、编程模型四个模型组成[4]。平台模型架构主要由一个主机和多个OpenCL计算设备构成,每个设备由一个或多个计算单元组成,每个计算单元又包含多个处理元件。所有通过OpenCL执行的操作都是由主机发出,控制处理元件完成相应计算工作,再反馈给主机。执行模型的核心工作在于操作相应的kernels的运行。通过定义索引,赋予全局以及局部ID来不断切割任务,创建相应工作组。内存模型是通过私有内存、本地内存、常量内存以及全局内存来完成内存空间的管理操作[5]。最后,编程模型是建立在OpenCL提供了基于任务分割以及数据分割的并行运算机制上,在运算过程中,每一个空间节点和内存中实例的对象相对应,将算法不断细化、切割,且每个线程相互之间保持独立[6]。开发者只需要按照需求定义并行运算数据量,具体操作交由OpenCL实现分配。

(2)OpenCL在FPGA上的实现

FPGA可以根据用户需求制定特定的硬件设计模块,具有优良的并行能力[7]。往往在一块FPGA系统中,存在着上百万的逻辑单元,通过这些逻辑电路实现对应的逻辑功能。除此之外,还具有上千的DSP模块,用来实现算法加速等功能[8]。

Alter的OpenCL SDK支持异构平台的并行开发环境,并不像传统开发需要在固定的处理器上完成,而是将程序转化为FPGA上的硬件模块,将其作为FPGA的配置数据的形式下输出。在操作过程中,PC会将写入这些数据的FPGA进行内核处理。从上文的阐述不难看出开发者在编程过程中可以在不具备硬件设计基础的情况下得到FPGA的配置数据,用C语言完成中间的设计操作。编译器编译文件过程如图1所示。

接下来,本文将介绍基于FPGA与OpenCL所设计的一套高速传送带上的物品分类统计系统,将从系统原理、结构功能、软硬件实现以及测试数据及其分析进行阐述。

二、系统介绍

在现代工业领域,传送带被广泛运用于各类商品的包装、检测等工作中。传统的传送带应用一般处于低速状态,物体运动速度很低,配合人工辅助操作来实现,因此这种方法的效率较低,处理速度较慢,且需要人工的参与,逐渐变得不太适合于现今这种物流量大、效率需求高的实际生产需求。而如果加快传送带速度,人工辅助操作就不能与高速运动下的物体相适应,人眼甚至不能捕捉到物体准确的信息,更无法对其进行判断与操作。如果计算机和机器可以代替人工操作,便可以实现在高速传送带上的实际化操作,从而有效地完成各种实际应用,满足提高效率的需求。为了保证高速识别,本文基于FPGA和OpenCL技术设计了一款高速传送带的运动物品识别系统,将传统识别的传送带速度由0.5m/s提升至2.5m/s。

1、系统设计

本文所设计的系统由五部分组成:用于捕获图像数据的500万像素的高速工业相机;用于匹配处理图像数据的UP2开发板;用于支持FPGA和OpenCL进行硬件加速的C5P开发板;用于显示结果并进行语音播报的QT显示界面;专门定制的3m×1m×0.5m的高速传送带,如图2所示。

物品在高速传送带上经过工业相机时,被相机捕获相应图像数据,以. jpg的格式传给UP2。UP2进行图像的处理和匹配,在处理过程中先通过OpenCV进行物体特征识别,物体特征包括形状、大小、纹理等标志位,同时,UP2将部分数据通过PCI-E协议传送给C5P,C5P对获得的图像数据交由硬件加速模块进行硬件加速处理,再将处理后的数据返还给UP2,当检测到正确的样本,特征标志位改变,UP2就将数据通过HDMI转VGA通道和AUX交互给扬声器进行语音播报,并将匹配的结果显示在QT界面上。

2、系统功能

系统功能如图3所示,其主要功能有以下几个方面:

(1)采集信息:本系统使用500万像素高速工业相机捕获样本在传送带上的图像信息;

(2)硬件加速处理图像数据:结合OpenCL与FPGA对来自UP2的图像数据进行硬件加速处理;

(3)高速识别:本系统借助OpenCV实现了实时物体特征识别。通过OpenCV,选取扩展的LBP特征,结合Adaboosting算法进行样本检测以及分类器的训练,然后通过实验测试分析不同分类器样本库大小和正负样本质量对实验结果的直接影响,最终通过实验比较选取最好的样本库;

(4)基于QT Creater结果显示:QT提供了信号槽机制,可以很好地降低耦合,提升代码的复用性,所以选用其作为显示界面。上面增设五个功能按钮,分别为预览、计数、开始、停止以及语音播报的功能。同时QT的开源环境以及可移植性强的特点也方便于后期的跨平台开发[9]。

三、硬件实现

硬件设计如图4所示,主要包括UP2嵌入式开发板、C5P开发板、扬声器以及显示屏四个模块。

(1)硬件模块

SDRAM芯片采用LVCMOS信号标准,可以进行数据的存储提取。

C5P开发板有2个七段数码显示管,七段数码管的每个引脚(共阳模式)均连接到 Cyclone V FPGA,还有4个由FPGA直接控制的LED。每一个LED都由Cyclone V FPGA 独立驱动,驱动相关的引脚至高电平或低电平来打开或关闭LED。FPGA输出低电压的时候,对应的字码段点亮,反之则熄灭,输出的低电平信号可作为后期输出给机械臂的控制信号。

PCI-E接口进行UP2和C5P开发板间的通信。PCI-E系统是由FPGA系统和PC系统两个主要组件组成。FPGA系统基于Avalon-MM Cyclone V Hard IP for PCI Express 和 Modular SGDMA 开发。PC端的应用软件是Terasic基于Intel PCI-E内核模式驱动开发的。

(2)FPGA结合OpenCL的硬件加速模块

FPGA具有实现宏函数的嵌入式阵列以及实现普通功能的逻辑阵列,具有很强的并行运算能力[6],但实现操作过程中往往不可避免地需要使用比较繁琐的HDL语言,而OpenCL就为其提供了一种开放式标准,用纯C语言来代替HDL,这样大大简化了编程实现过程。C环境下OpenCV的一些识别算法程序,例如积分图像算法,在需要计算多个区域的直方图的时候,可以用来提高统计图像子区域像素的效率。这种算法在图像模糊、边缘提取、对象检测的时候可以极大地降低计算量,所以在OpenCV识别过程中会被反复调用执行。我们将这类算法通过OpenCL将其转化为FPGA上的硬件模块,将这些硬件模块进行并行运算,从而加速图像数据处理。具体实现操作如下:利用Quartus工程编译最终用于配制FPGA的.sof文件,将.sof文件转化为.jic文件,通过JTAG端口借助串行Flash引导功能将.jic文件烧写到EPCQ器件中进行编程固化。

四、软件实现

由于传送带上的货物检测主要以边缘、线段为主,所以采取LBP特征进行分类,并通过Adaboosting算法来训练分类器,进行样本的检测以及可视化分析。Adaboosting算法是一种迭代算法,其核心思想通过不断改变权值,最终按照权值将弱分类器组合为一个最强分类器,其原理就不再赘述[10]。识别流程如图5所示。

五、测试数据及分析

能否快速正确识别物体是整个系统能够正常运行的关键。为测试物体框架的实时性和准确性,构建以下测试框架。首先测试系统实时性,把样本A、B、C与其他物体放在传送带上,改变传送带速度,记录系统是否正确检测到相应样本,数据如表1所示;其次测试系统识别准确性,将各种各样的负样本放在传送带上,记录系统误判比,如表2所示。

对图表进行处置分析,可知物体识别准确性与负样本数目、传送带速度有关。当负样本数目足够时,在通过OpenCL加速后系统可以在比较理想的识别率的基础上对处于2.5m/s的高速传送带上的物品进行识别以及分类,该系统符合设计初衷。

表1 物体识别实时性测试

表2 物体识别准确性测试表

六、总结

本文介绍了OpenCL的并行运算架构,研究了并行计算的模型,以及其在FPGA上的实现方式,最后基于FPGA与OpenCL的硬件加速设计了一套在高速传送带上的商品分类识别系统,并对测试结果进行了分析,系统的准确性达到了预期的目标。该系统进一步的完善在于,FPGA开发板会将PCI-E传来的图片数据处理后在FPGA开发板上进行LED和数码管的显示,将显示信号作为控制信号,搭配相应的机械臂,控制机械臂抓取移动商品,实现在高速传送带上对商品的分类统计工作。

猜你喜欢
开发板传送带编程
编程,是一种态度
浅探传送带模型的分析策略
元征X-431实测:奔驰发动机编程
编程小能手
基于STM32H7的FDCAN通信系统设计与实现∗
纺织机上诞生的编程
传送带模型中摩擦力的判断
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
物体在传送带上的运动剖析