论文部分内容阅读
随着信息技术的快速发展和计算机视觉技术的成熟,基于视觉的手势识别应用逐渐成为人工智能(Artificial Intelligence,AI)领域的一个重要研究方向。手势作为一种十分自然的语义表达方式,在人机交互(Human Computer Interaction,HCI)中发挥着重要的作用。但是,复杂的手势结构和多变的环境增加了手势识别的难度,导致识别率低下。卷积神经网络(Convolutional neural network,CNN)改善了传统识别方法存在的需要手工选取特征的问题,目前在视频监控、人机交互、大数据分析等领域得到了广泛的应用。这些领域对算法实现的实时性要求也越来越高,这使得研究如何使用FPGA对CNN算法进行加速显得尤为重要。因此,本文结合手势识别技术,对卷积神经网络在ZC706平台的嵌入式实现进行研究,具体工作如下:(1)针对复杂的手势结构、光照、背景和环境等因素会影响识别的精确性且人工选取特征难以适应手势多变性的问题,给出了一种结合肤色模型和卷积神经网络的手势识别方案。对不同背景下的手势图像,首先选择合适的肤色模型分割出手势区域,然后采用形态学操作、滤波、连通域标记等算法对手势区域进行提取和重建。最后结合深度学习的卷积神经网络方法,构建了基于手势灰度图像的网络模型。实验结果表明,CNN能够高效地进行特征学习,该网络在自建数据集和Massey数据集下对手势的平均识别率都达到98%以上。(2)与手势识别系统的PC实现相比,嵌入式实现具有更灵活、应用更广泛的优势。考虑到手势识别系统的实时性要求,并且CNN的计算模式适合于硬件加速,给出了一种基于FPGA的CNN加速器设计方案。Xilinx提供的Vivado HLS开发环境能够把可综合的高级编程语言C/C++转换成RTL级实现,从而缩短开发周期。因此,本文基于ZC706开发平台,在HLS环境下采用流水线优化、循环展开、存储优化、定点量化等方法实现了用于手势识别的7层CNN加速器。实验结果表明,CNN加速器的实现频率为200MHz,在ZC706上实现了22.04GMACS的峰值性能和16.76GOP/s/W的能效比,该实现比Core i5 2450M CPU下的Matlab实现快126倍,比NVidia GTX 840M GPU实现速度快10倍,与GPU相比,功耗降低了12倍。(3)针对在嵌入式平台运行手势识别算法实时性差的问题,结合ZC706平台FPGA+ARM的架构,采用软硬件协同的方式进行原型系统的设计与实现。该系统在ARM端实现摄像头的视频采集和手势分割,FPGA端实现基于卷积神经网络的手势识别算法的硬件加速、图像传输以及HDMI高清显示,探索了一种便捷、低成本、低功耗的手势识别嵌入式解决方案。