You are on page 1of 67

学术型硕士研究生学位论文

(工学硕士)

基于 FPGA 的卷积神经网络硬件
加速器设计及应用研究

作者姓名 刘彬宇

学 号 7020190221

2022 年 05 月
分类号: 学校代码:10619
UDC: 密级:

西南科技大学硕士学位论文
(工学硕士)

基于 FPGA 的卷积神经网络硬件
加速器设计及应用研究

刘彬宇

学科(专业)或领域名称:信息与通信工程
指导教师姓名、职称:姚远程教授
学生所属培养单位:西南科技大学
论文答辩日期: 2022 年 05 月 13 日
A Thesis Submitted to Southwest University of Science and
Technology for the Degree of Master
(Master of Engineering)

Design and application of convolutional neural


network hardware accelerator based on FPGA

Candidate: Liu Binyu


Supervisor: Yao Yuancheng

May 2022
学 位 论 文独 创 性声 明

本人 郑 重 声 明 : 所呈 交 的 学位 论 文 是我 个人 在 导 师 的 指 导 下 进 行 的 研 宄 工 作

及 取 得 的 研 究 成果 。 尽 我所知 ,
除 了 文 中 特 别 加 以 标 注和 致谢 的 地方外 ,
论文中

不 包含 其他 人 已 经 发表 或 撰 写过 的 研 究 成 果 与我 同 工 作 的 同 志 对 本 研 究所 做


的 任 何贡献 均 己 在 论 文 中 作 了 明 确 的 说 明 , 并表示 了 谢 意 。 本人 依 法享 有 和承 担

由 此 论 文 所产 生 的 权 利 和 责 任 

论 文 作 者签 名
4 日期 :
年 t月
f 

学 位 论 文 版 权 使 用 授权 声 明

本 学 位论 文 作 者 完 全 了 解学 校有 关保存 、 使 用 学 位论文 的 规 定 , 即 :
研 究生

在 西 南 科 技 大学 学 习 和 工 作 期 间 论 文 工 作 的 知 识 产 权单 位 属 于 西 南 科 技大 学 。 

意 授 权西 南 科 技 大 学 保 留 并 向 国 家 有 关 部 门 或 机 构 送交 该 论 文 的 印 刷 本 和 电 子 版

本 , 允 许 该 论 文 被查 阅 和 借 阅 。 同 意 授 权西 南 科 技大学 可 以 将本 学 位 论文 的 全 部

或部 分 内 容编 入 有关 数 据 库 进 行 检索 ,
可 以 采用 影 印 、 缩印 、 扫 描 或 数字 化 等其

他 复 制 手 段 保存和 汇 编 本 学位 论 文 。 保密 论 文在 解 密后 遵 守 此规 定 

论 文 作 者 签名 日 期 :
年 |月

指 导 老师签 名 期 


摘要

摘 要
近年来,随着越来越多的学者、研究员投入人工智能领域,人工智能算法取得了飞
速的发展。作为人工智能算法中极为重要的一部分,神经网络算法也取得了巨大进步:
计算机视觉应用中越来越多的使用卷积神经网络代替传统方法,其在人体行为识别应
用中表现较为显著。但是,为了进一步提高神经网络的性能,神经网络模型的结构设计
越来越复杂、网络层数也越来越多。这导致神经网络算法的计算更加复杂,在功耗要求
严格的场景下难以部署。因此,计算资源丰富、开发部署灵活、功耗更低的 FPGA 成
为实现神经网络算法的一种较为理想的硬件平台。
本文以卷积神经网络为研究对象,以 FPGA 为目标平台,对卷积神经网络硬件加
速方法进行研究,设计硬件加速器并基于加速器设计人体行为识别系统进行加速验证,
具体工作开展如下:
1、首先分析了现有加速方法的特点,结合卷积神经网络的结构特点及计算特点,
从卷积神经网络计算中数据访存、计算两个方面入手,研究设计硬件加速器。针对卷积
神经网络的并行性特点,提出三种并行处理相结合的方式,来展开卷积循环,以减少循
环次数;结合 FPGA 并行计算特点以及资源情况,设计、优化了卷积层、全连接层;利
用流水线处理方式,设计缓冲结构加速流水层;采用并行流水策略提高各模块使用效
率。利用本文提出的方式,结合 Vitis AI 平台最终在 ZCU102 评估板上测得 VGG-16 网
络吞吐量为 615.9GOPS。
2、提出了一种卷积神经网络结合机器学习的人体行为识别方法,采用该方法设计
应用系统,同时验证卷积神经网络加速器的性能。首先提出一种人体姿态估计与姿态
分类结合实现人体行为识别方法,设计两个卷积神经网络模型以自顶向下的方式实现
人体姿态估计,并在 Vitis AI 平台上对网络模型进行量化、测试;利用姿态信息数据构
建数据集,训练 SVM 实现能区分三类人体行为的姿态分类器。然后根据应用系统计算
特点分割计算任务,设计软硬件协同加速系统,利用设计的加速器承担卷积神经网络
计算。最后利用 ZCU102 评估板实现人体行为识别系统,经测试系统稳定时最高能达
到 25FPS 的处理速度,并能正确识别行走、站立、蹲下等姿势。

关键词:FPGA;硬件加速;卷积神经网络;人体行为识别
论文类型:应用研究

I
西南科技大学硕士学位论文

ABSTRACT

In recent years, as more and more scholars and researchers invest in the field of artificial
intelligence, artificial intelligence algorithms have achieved rapid development. As an
extremely important part of artificial intelligence algorithms, neural network algorithms have
also made great progress: more and more convolutional neural networks are used in computer
vision applications instead of traditional methods, and their performance is more significant
in human behavior recognition applications. However, in order to further improve the
performance of the neural network, the structure design of the neural network model is
becoming more and more complex, and the number of network layers is also increasing. This
makes the computation of neural network algorithms more complex and difficult to deploy in
scenarios with strict power consumption requirements. Therefore, FPGA with rich computing
resources, flexible development and deployment, and lower power consumption has become
an ideal hardware platform for implementing neural network algorithms.
Taking convolutional neural network as the research object and FPGA as the target
platform, this paper studies the hardware acceleration method of convolutional neural network,
designs the hardware accelerator, and designs the human behavior recognition system based
on the accelerator for acceleration verification. The specific work is as follows:
1. Firstly, the characteristics of the existing acceleration methods are analyzed. Combined
with the structural characteristics and calculation characteristics of convolutional neural
network, the hardware accelerator is studied and designed from two aspects of data access and
calculation in convolutional neural network calculation. According to the parallel
characteristics of convolution neural network, three parallel processing methods are proposed
to expand the convolution cycle and reduce the number of cycles; Combined with the parallel
computing characteristics and resources of FPGA, the convolution layer and full connection
layer are designed and optimized; Using the pipeline processing method, the buffer structure
is designed to speed up the pipeline layer; Parallel pipelining strategy is adopted to improve
the efficiency of each module. Using the method proposed in this paper, combined with Vitis
AI platform, the VGG-16 network throughput is 615.9GOPS measured on ZCU102 evaluation
board.
2. A human behavior recognition method based on convolutional neural network and
machine learning is proposed. This method is used to design the application system and verify
the performance of convolutional neural network accelerator. Firstly, a method of human

II
ABSTRACT

behavior recognition based on the combination of human posture estimation and posture
classification is proposed. Two convolutional neural network models are designed to realize
human posture estimation in a top-down way, and the network model is quantified and tested
on the vitis AI platform; The data set is constructed by using the pose information data, and
the SVM is trained to realize the pose classifier which can distinguish three kinds of human
behavior. Then, according to the computing characteristics of the application system, divide
the computing tasks, design the software and hardware collaborative acceleration system, and
use the designed accelerator to undertake the convolution neural network calculation. Finally,
the zcu102 evaluation board is used to realize the human behavior recognition system. When
the system is stable, the maximum processing speed can reach 25FPS, and can correctly
recognize walking, standing, squatting and other postures.

Keywords: FPGA; Hardware Acceleration; Convolutional Neural Network; Human Behavior Recognition
TYPE OF THESIS:Application Research

III
西南科技大学硕士学位论文

目 录
1 绪论 ...................................................................................................................................... 1
1.1 课题背景及意义 ........................................................................................................... 1
1.2 国内外研究现状 ........................................................................................................... 2
1.2.1 卷积神经网络硬件加速现状 ............................................................................ 2
1.2.2 人体行为识别方法研究现状 ............................................................................ 4
1.3 本文研究内容及结构 ................................................................................................... 5
1.3.1 研究内容 ............................................................................................................ 5
1.3.2 论文结构 ............................................................................................................ 5
2 卷积神经网络及硬件加速基础 .......................................................................................... 7
2.1 卷积神经网络理论研究 ............................................................................................... 7
2.1.1 卷积神经网络基本模块 .................................................................................... 7
2.1.2 批量归一化 ........................................................................................................ 8
2.1.3 激活函数 ............................................................................................................ 9
2.2 硬件加速技术分析 ..................................................................................................... 11
2.2.1 GPU 加速 .......................................................................................................... 12
2.2.2 FPGA 加速 ........................................................................................................ 13
2.2.3 ASIC 加速 ......................................................................................................... 14
2.3 人体行为识别方法分析 ............................................................................................. 14
2.4 本章小结 ..................................................................................................................... 17
3 卷积神经网络硬件加速器设计 ........................................................................................ 18
3.1 基于 Vitis AI 的硬件加速结构 .................................................................................. 18
3.1.1 Vitis AI 开发环境简介 ..................................................................................... 18
3.1.2 基于 Vitis AI 的硬件加速结构 ....................................................................... 20
3.2 卷积神经网络的 FPGA 加速设计分析 ..................................................................... 21
3.2.1 FPGA 加速难点及限制 .................................................................................... 21
3.2.2 FPGA 加速设计分析 ........................................................................................ 22
3.3 卷积神经网络的 FPGA 加速方法研究 ..................................................................... 24
3.3.1 卷积计算并行加速研究 .................................................................................. 24
3.3.2 并行流水加速结构研究 .................................................................................. 27
3.3.3 缓存结构优化加速研究 .................................................................................. 28
3.4 卷积神经网络的 FPGA 加速设计验证 ..................................................................... 32
3.5 本章小结 ..................................................................................................................... 35

IV
目录

4 基于加速器的人体行为识别研究 .................................................................................... 36
4.1 人体行为识别方法研究 ............................................................................................. 36
4.1.1 人体姿态估计 .................................................................................................. 36
4.1.2 人体姿态分类 .................................................................................................. 40
4.2 人体行为识别系统设计 ............................................................................................. 44
4.2.1 系统总体流程 .................................................................................................. 44
4.2.2 软硬件协同总体设计 ...................................................................................... 44
4.3 系统硬件实现及测试 ................................................................................................. 47
4.3.1 系统环境 .......................................................................................................... 47
4.3.2 系统测试 .......................................................................................................... 48
4.4 本章小结 ..................................................................................................................... 50
5 总结与展望 ........................................................................................................................ 51
5.1 本文总结 ..................................................................................................................... 51
5.2 工作展望 ..................................................................................................................... 52
致 谢 ................................................................................................................................ 53
参考文献 ................................................................................................................................ 54
攻读学位期间取得的研究成果 ............................................................................................ 58

V
1 绪论

1 绪论
1.1 课题背景及意义
近年来,将卷积神经网络(Convolutional Neural Network,CNN)应用于解决计算
机视觉、自然语言处理中的复杂问题成为一种趋势。相关研究表明,增加网络层数是一
种提升卷积神经网络性能的重要方法。例如,2012 年以来,网络规模从 LeNet[1]的 7 层
增加到 AlexNet[2]的 12 层、VGG[3]的 19 层、ResNet 的 50 层[4],从而大幅提升了网络性
能。虽然扩大卷积神经网络的规模能够带来性能上的提升,但随之而来的是权值参数
量和计算量的剧增。例如 12 层的 AlexNet 网络模型内存就超过 200MB,模型参数 6000
万个,模型计算量为 720M。大量的模型参数以及计算量带来的是存储和计算压力,也
让网络模型在实际应用中难以部署,特别是在一些功耗要求低、延时要求低的场景,这
种情况通常都是降低模型效果、性能以满足需求。但是随着智能化程度的提高,更高性
能、更低功耗的需求(如自动驾驶等应用)被提出,这个时候就亟需一个合适的硬件平
台来满足应用需求。
在较长一段时间里,CPU(Central Processing Unit)都是卷积神经网络的主要硬件
计算平台,参与卷积神经网络的训练与推理;后来,GPU(Graphics Processing Unit)
因其强大的并行处理能力,代替 CPU 成为训练、推理卷积神经网络的首选硬件平台。
目前常用的几种框架 Tensorflow、Caffe、Pytorch 都能很好的支持 CPU、GPU。但 CPU
因为自身的硬件结构特点,更多是处理、执行程序指令或者进行各种数据的计算,CPU
在处理卷积神经网络计算方面还是略显不足。GPU 因为内部含有的大量计算核心,能
够很好地完成卷积神经网络的计算,因此也是现在最主要的卷积神经网络硬件平台。
GPU 的高性能计算是基于其较高的功耗上面的,因此在实际应用部署中,GPU 也会受
到很大的限制,更多的时候还是通过集群的方式实现高性能的训练加速,或者被用于
服务器中的推理加速。
ASIC(Application Specific Integrated Circuit)也是目前使用较多的硬件加速平台。
不同于 CPU、GPU 的通用性,ASIC 是一种定制化的硬件平台,往往针对某一具体模
型或功能进行设计。这样 ASIC 能够保证有较高处理性能的同时还能保持较低的功耗。
针对性设计能带来高能效比,也带来了其他问题。一款 ASIC 从设计到验证、制造需要
耗费大量的资金和时间,设计完成后也难以修改。因为其针对性设计,在面对快速发展
的卷积神经网络模型时,很难保证能适应新的网络模型。与此相反的是 FPGA(Field
Programmable Gate Array)。作为近年来比较热门的硬件加速平台,FPGA 因为硬件结构
具备可重构性和低功耗特点,成为越来越多学者、研究员选择的卷积神经网络加速平
台。
相比于 ASIC,FPGA 可以更灵活的进行开发、修改,能更好地适应网络模型的升
级、调整;对比 CPU、GPU,FPGA 有更高的能效比,能够很好的部署在功耗要求严格

1
西南科技大学硕士学位论文

的应用场景下,这是 CPU、GPU 无法比拟的。但是,FPGA 也因为其特殊硬件结构,


没有一套简易的开发流程,需要一定的硬件电路知识作为支撑,所以存在着开发复杂、
耗时较多等问题。为了减轻开发难度,众多 FPGA 设计公式纷纷推出高层次综合工具
(High Level Synthesis,HLS),如 Xilinx 公司最新推出的 Vitis 平台,Intel 的 OpenCL
等等。利用这些平台,开发者可以用 C、C++等语言,更快地搭建自己的硬件平台。
因此,FPGA 是低功耗条件下进行高性能卷积神经网络计算的不错选择;同时也能
满足灵活性,保证能进行网络模型的更新;除此之外,寄存器传输级(Register transfer
level,RTL)的开发能保证资源的有效利用,HLS 开发又能保证更高的开发效率。
同时,随着卷积神经网络性能的不断提升,越来越多的智能化概念如智慧城市、智
能交通、自动驾驶等被提出,并应用卷积神经网络算法进行相关设计。在各种智能化概
念中,很多都跟人息息相关,很多智能化程序面对的就是人。因此,让机器理解人的行
为是其中很重要的一个环节,也越来越多的研究人员利用卷积神经网络算法开展人体
行为识别研究。
基于以上背景,本文将基于 FPGA 设计一种卷积神经网络硬件加速方法,利用 Vitis
实现加速设计;针对人体行为识别任务,提出卷积神经网络结合机器学习实现人体行
为识别,利用硬件加速器完成实例设计并进行验证。

1.2 国内外研究现状
1.2.1 卷积神经网络硬件加速现状
卷积神经网络相关理论最早出现在 Fukushima 的理论中,再到后面有名的 LeNet
用于手写数字的识别。早期因为缺乏数据以及计算能力,所以卷积神经网络的研究热
度一直不高,进展也比较慢。直到 2012 年 AlexNet 的出世,又带动卷积神经网络的研
究热。Alex Krizhevsky 使用 GTX 580 GPU 训练了一个比以往大得多的卷积神经网络,
将 top-5 错误率从 25.8%降到 16.4%。后来越来越多的网络采用 GPU 进行训练,随着
GPU 性能的提升,模型训练速度也得到了提升,同时网络规模也变得越来越大。表 1 -
1 展示了 GPU 加速 AlexNet 训练效果,表 1 - 2 是 GPU 加速 ResNet-50 的效果。从两个
表可以看出改变 GPU 的规模可以加快 GPU 的加速效果,同时调整训练策略也能提高
速度。因为这些工作都是基于 GPU 集群开展的,因此还需考虑 GPU 之间的数据传输。
表 1 - 1 GPU 加速 AlexNet
GPU Top-1
Batch Size Processor Time
Interconnect Accuracy
You et al.[5] 4096 DGX-1 station NVLink 2h19m 58.4%
Pascal GPU x
Jia et al.[6] 64K 100 Gbps 5m 58.8%
1024

2
1 绪论

表 1 - 1(续) GPU 加速 AlexNet


GPU Top-1
Batch Size Processor Time
Interconnect Accuracy
Pascal GPU x
Jia et al.[6] 64K 100Gbps 4m 58.7%
2048
Volta GPU x
Peng etal.[7] 64K 56Gbps 1.5m 58.2%
512

表 1 - 2 GPU 加速 ResNet-50
GPU Top-1
Batch Size Processor Time
Interconnect Accuracy
Goyal et al. Pascal GPU x
8K 56 Gbps 1h 76.3%
[8] 256
Akiba et al. Pascal GPU x
32K 56Gbps 15m 74.9%
[9] 1024
Pascal GPU x
64K 100Gbps 8.7m 76.2%
1024
Jia et al. [6]
Pascal GPU x
64K 100Gbps 6.6m 75.8%
2048
Mikami et al. Volta GPU x
68K 200Gbps 3.7m 75%
[10] 2176
Volta GPU x
Peng etal. [7] 64K 56Gbps 7.3m 75.3%
512
文献[8]是 Facebook 于 2017 年提出的,文献[9]来自日本 Preferred Networks 公司,
文献[10]来自日本的索尼公司,文献[6]由腾讯实现,文献[7]来自商汤科技。类似的大规
模 GPU 集群加速都是来自于大的科技公式,这也与他们的业务方向有关。随着 GPU 硬
件资源的提升,越来越多的个人电脑也可以用以加速训练、推理卷积神经网络。
ASIC 作为针对某一特定应用或功能设计的芯片,针对具体应用进行优化,因此具
有较高的性能,同时相比 GPU 具有更低的功耗。作为国内人工智能芯片独角兽公司,
寒武纪从 2014 年开始,连续发布了 DianNao[11] 、DaDianNao[12] 、ShiDianNao[13] 、
PuDianNao[14]等 NPU,能达到较好的加速效果。国外谷歌作为人工智能巨头公司,也
推出了自己的硬件平台 TPU(Tensor Processing Units)[15]。AlphaGo 就是基于 TPU 来
加速训练,TPU 比 GPU 拥有更高的功耗。另一家巨头,英特尔发布了 Movidius[16]神经
计算棒用以加速 AI。除了这些,IBM 也推出自己的 TrueNorth[17]芯片。综上所述,利用
ASIC 加速卷积神经网络的大多都是一些大的硬件公司或者人工智能相关的巨头。
FPGA 凭借其低功耗、高灵活性、可重部署等特点,成为卷积神经网络部署研究者

3
西南科技大学硕士学位论文

热门选项。近年来,越来越多针对 FPGA 的卷积神经网络加速方法被提出来,并取得


了不错的效果。首先是各大云服务器厂家纷纷采用了 FPGA 服务器,利用这些服务器
加速高性能计算,存储以及 AI 算法等。另外,FPGA 厂家也推出更加简单的 FPGA 开
发工具及流程,使得很多深度学习的研究者也可以很快的利用 FPGA 进行硬件设计。
卷积神经网络中大多计算是卷积计算,常用的卷积算法有空间卷积算法和通用矩
阵乘法算法(GEMM),FFT 算法和 Winograd 算法。如表 1 - 3 所示,为 2019 年前非传
统卷积算法在 FPGA 上的实现总结[18]:
表 1 - 3 非传统卷积算法在 FPGA 上的实现总结[18]
Winograd FFT GEMM
Algorithm
[19] [20] [21] [22] [23] [24] [25] [26]
Stratix-
Virtex7 Arria10 Stratix5 Stratix5 Kintex
FPGA VCU440 ZCU102 V
VX690T GX1150 QPI GXA7 KU060
GSMD5
DSP 2880 2520 3683 1576 224 256 1058 1590
Logic(K) 5541 600 505 246 201 228 150 172
Frequency
200 200 200 303 200 194 200 150
(MHz)
Precision 16bits 16bits FP32 FP16 16bits 16bits 16bits FP16
Network VGG VGG Alexnet VGG Alexnet VGG VGG VGG
Performance
821 3045 46 1382 123 66 360 364.36
(GOP/s)
Power - 23.6 - 44.3 13.2 33.9 25.0 25.0

从表中可以看到,Winograd 算法是快速算法中在 FPGA 上实现最多的,因为它相


比 FFT 预算量更小。
文献[27]都是最近以传统卷积算法实现的 FPGA 加速设计,针对的网络多是 YOLO
V2,Alexnet,LeNet 等网络,并且都取得了不错的效果。设计思路基本都是围绕卷积
运算的 6 层循环展开的,通过并行展开、计算流水线、数据定点化等操作实现加速功
能。以上加速方法均是针对单个特定网络进行设计,同时最终验证都是采用图像检测、
分类等,并未进行实际的应用部署。

1.2.2 人体行为识别方法研究现状
人体行为识别是众多智能化程序中重要的一环,是视频、图像内容理解任务中一
个先行步骤,现阶段已有大量的相关研究工作。从实现方法来看,有两种常用的方法实
现人体行为识别。一种是传统的方法,另一种基于深度学习。其中基于深度学习的方法
又包括:3D 卷积神经网络、双流网络(Tow-stream)、融合 CNN-LSTM 网络以及 2D 卷
积加模块[30]。
文献[31]以空间角度信息为核心来完成识别,用深度传感器提取人体关节点,以提
取到的关节点建立骨骼特征实现人体行为识别;利用直方图提取人体轮廓作为感兴趣
区域,利用空间骨骼特征实现行为识别,能达到 95.33%的识别准确率。

4
1 绪论

文献[32]针对跨视角人体行为识别问题,分别针对 RGB 视频和三维骨骼序列,设


计了可迁移字典学习和视角自适应的卷积神经网络。通过不同网络结构验证,识别准
确率都在 90%以上。
文献[34]利用 3D 卷积神经网络设计人体行为识别应用,提出了 3D CNN,C3D,
I3D,S3D-G 等模型以获得更好的精度。文献[40]采用双流网络进行设计,引进了 LST
M 网络、注意力机制等。文献[45]基于融合 CNN-LSTM 网络进行,提出了 LRCN、GR
NN、C2LSTM 等改进网络。文献[50]利用 2D 卷积加其他时间特征提取模块进行设计,
提出了 TSM、TEA、GSM 等模块。表 1 - 4 展示了 4 种方法中最高的识别精度。
表 1 - 4 基于深度学习的先进算法对比
Methods UCF-101/% HMDB-51/%
3D convolution[38] 96.80 75.90
Two-steam[41] 94.20 69.40
CNN-LSTM[49] 92.80 61.30
2D+Module[50] 94.50 70.07

1.3 本文研究内容及结构
1.3.1 研究内容
本文以卷积神经网络在部署过程中遇到的低功耗、高性能需求为背景,通过分析
卷积神经网络基础结构及计算方式,利用低功耗、灵活性强的 FPGA 从卷积计算硬件
实现方式上来进行优化、设计硬件加速器,并利用实际应用进行验证、测试。本文研究
内容如下:
(1)分析卷积神经网络基础结构、计算方式以及各种卷积神经网络硬件加速技术;
(2)提出一种卷积神经网络的 FPGA 硬件加速方法,并利用 Xilinx 提供的开发工
具,完成卷积神经网络硬件加速设计,并测试验证;
(3)提出一种基于卷积神经网络的自顶向下的人体行为识别方法,利用该方法基
于 ZYNQ 设计应用系统,验证 FPGA 硬件加速器。

1.3.2 论文结构
本文的各章内容安排如下:
第一章,首先介绍本文研究背景和意义;然后分析卷积神经网络硬件加速与人体
行为识别方法的国内外研究现状。
第二章,首先介绍卷积神经网络基本概念,并分析其网络结构及计算特征;随后由
两个加速定律引出三种硬件加速技术,分析各自的特点;最后介绍人体行为识别传统
过程,分析引入卷积神经网络带来的问题及解决思路。
第三章,首先介绍开展本文研究所采用的开发环境及硬件架构;然后分析基于
FPGA 的卷积神经网路硬件加速设计思路及方案;最后针对卷积神经网络的不同层设
计相应的加速结构。

5
西南科技大学硕士学位论文

第四章,首先提出基于卷积神经网络的人体行为识别实现方法;然后利用第三章
设计的卷积神经网络加速器结合硬件平台完成软硬件协同加速设计;最后进行系统的
验证与测试。
第五章,首先总结本文在硬件加速方法与人体行为识别两个方面的工作,叙述本
文取得的效果;最后对未来的发展方向进行展望。

6
2 卷积神经网络及硬件加速基础

2 卷积神经网络及硬件加速基础

随着科学家研究的深入,越来越多的卷积神经网络模型被提出解决图像处理等各
方面的问题,同时也带来了更大的计算需求。本章将介绍卷积神经网络最基础的网络
结构以及计算方式,然后分析现有的加速技术,最后分析本文应用点——人体行为识
别传统方法以及引入卷积神经网络带来的问题。

2.1 卷积神经网络理论研究
2.1.1 卷积神经网络基本模块
卷积神经网络因近年来算力资源的大幅提升,能够更加高效地解决图像识别等领
域的复杂问题。卷积神经网络在处理实际问题上,相较于其他传统算法有着显著的优
势。卷积神经网络模型通常是由各式各样的层组成。卷积层、池化层是其中最重要的两
类计算层。
(1)卷积层
卷积层在卷积神经网络模型中的作用是从输入数据中提取特征。不同特征由权重
分配不同的卷积核提取出来,从而构成输出特征。第𝑙𝑙层中第𝑗𝑗个单元的特征值计算公式
如下:
 
α lj =f  blj +
 ∑α l −1
j ∗ kijl 

(2-1)
 i∈M ij 

其中,𝑀𝑀𝑗𝑗𝑖𝑖 表示该层全部输入特征图,𝑘𝑘𝑖𝑖𝑖𝑖
𝑙𝑙
表示卷积核权值。卷积计算如图 2 - 1 所示。

输入图像α l-1 输出卷积特征图像α l

1 1 1 1 卷积核kl
1 1 1
1 0 0 0 0 1
1 2 2
0 1 1 1 1 1
2 1 2
1 0 0 1

图 2 - 1 卷积层运算
深度、步幅和填充大小影响着输出大小。输出体积的深度控制连接到输入体积相
同区域的层中神经元的数量。步幅控制如何分配宽度和高度周围的深度列。填充提供
对输出体积空间大小的控制。卷积后输出的特征图大小计算公式如式。
W − K + 2P
=N +1 (2-2)
S

7
西南科技大学硕士学位论文

其中𝑁𝑁为输出特征图的大小,𝑊𝑊为输入数据体积大小,𝐾𝐾为卷积核的深度,𝑆𝑆为卷积
操作移动的步幅,𝑃𝑃为填充大小。如图 2 - 2 所示,为输入特征图填充“0”后的卷积运
算。
经过填充后的输入图像
输出特征图
0 0
1 2 2 2 1
0 1 1 1 1 0 卷积核
2 2 1 1 0
0 1 0 0 0 0 0 1
1 1 2 2 1
0 0 1 1 1 0 1 1
1 2 1 2 1
0 1 0 0 1 0
1 0 0 1 0
0 0

图 2 - 2 图像填充后的卷积运算
(2)池化层
池化层在卷积神经网络模型中,主要作用是降低数据的维度,加速模型的训练过
程。池化层的输出特征图计算公式为:
α lj f ( blj + β ij down(α lj−1 , M l ) )
= (2-3)

其中,down(·)表示池化函数,𝑏𝑏𝑗𝑗𝑙𝑙 为偏置,𝛽𝛽𝑗𝑗𝑙𝑙 为乘数残差。

与卷积层相比,池化层极大地减少了机器学习中的连接数,这意味着减少了计算
资源维度,从而避免了机器学习模型训练时会出现过拟合现象,并且池化输出的数据
特征值是平移不变的。如图 2 - 3 所示,显示了池化核为 2*2 大小的三种池化方法的运
行过程。
Max Pooling
9 8
4 4

3 6 1 4 Mean Pooling
5.5 5

4 9 7 8 2.5 2.5

2 2 1 2
0.5 0.2 0.1 0.7

2 4 3 4
0.1 0.2 0.1 0.1 Stochastic-Pooling 3 4
概率矩阵

0.2 0.2 0.1 0.4 4 2


0.2 0.4 0.3 0.2

图 2 - 3 三种不同的池化方式

2.1.2 批量归一化
在机器学习模型的训练中,往往会出现过拟合现象,对机器学习模型的整体性能
带来负面影响的现象。为了减少过度拟合的机会或数量,可以使用多种技术来克服这
种现象。在机器学习中,比较常见的方法是在模型中使用归一化限制模型训练中特征
值的不收敛。而归一化中,批量归一化使用较为广泛。

8
2 卷积神经网络及硬件加速基础

批量归一化(也称为批量规范)是一种用于通过重新居中和重新缩放对层的输入
进行归一化来使人工机器学习更快、更稳定的方法。它由 Sergey Ioffe 和 Christian
Szegedy 在 2015 年提出。模型在训练中通过随机梯度更新参数,导致每层输入的分布
发生变化。模型越深,输入分布的变化就越明显。协变量偏移(Convariate shift)指的是
不同分布的输入值对深度网络学习的影响。产生的微小变化会深刻影响背层,偏差越
大,性能越明显。因此,协变量偏移会对模型训练时进行的反向传播产生负面影响,导
致模型训练时出现梯度发散或消失现象,这就需要训练更多的步骤来消除协变量偏移
对数据不同分布或不同尺度所带来的影响。在模型结构中,引入批量归一化使各层网
络变得相对独立,缓解了训练中梯度发散或消失的现象。
令第𝑙𝑙层的净输入为𝑧𝑧 𝑙𝑙 ,神经元的输出为𝛼𝛼 𝑙𝑙 ,𝛼𝛼 𝑙𝑙 = 𝑓𝑓(𝑧𝑧 𝑙𝑙 ) = 𝑓𝑓(𝑊𝑊𝛼𝛼 𝑙𝑙−1 + 𝑏𝑏)为了减少内
部协变量偏移问题,需要使得输入的分量不一致。复杂度较高的归一化方法需要的算
力较大,并不适合本就需要巨量算力的机器学习算法模型。为了提高归一化效率,通常
使用标准正态分布将输入的每一维都归一化,其公式如下:
l zl − E( zl )
z = (2-4)
var( z l +  )

对于大数据集的实验样本,需要将一个数据集分为多个批量传入进行模型训练。
模型训练常常采用小批量的梯度下降方法。因此𝐸𝐸(𝑧𝑧 𝑙𝑙 )和𝑣𝑣𝑣𝑣𝑣𝑣(𝑧𝑧 𝑙𝑙 )通常使用当前批量实
验样本的均值和方差近似估计。
如 果 每个 批量中所 包含的样 本数量为 𝐾𝐾 个,那么 网络第 𝑙𝑙 层神经元的 净输入

𝑧𝑧 (1,𝑙𝑙) , 𝑧𝑧 (2,𝑙𝑙) , … , 𝑧𝑧 (𝑘𝑘,𝑙𝑙) 的均值和方差为:

1 K ( k ,l )
µl = ∑z
K k =1
(2-5)

1 K ( k ,l )
σ l2 = ∑ ( z − µl )  ( z ( k , l ) − µl )
K k =1
(2-6)

标准归一化会使得输入的取值集中在零附近。当使用的激活函数不恰当时,会减
弱机器学习的非线性性质。为了减少批量归一化对模型的泛化能力带来的负面影响,
可以在式(2-4)的基础上附加上缩放和平移变换,从而改变取值区间,增强模型的泛化
能力。
l zl − E( zl )
=z  γ + β ← BN l) (2-7)
γ ,β ( z
var( z l +  )

其中γ表示缩放的参数向量,β代表平移的参数向量。

2.1.3 激活函数

9
西南科技大学硕士学位论文

模型在训练过程中,应用梯度下降来更新网络的权重。在不施加外力的情况下,机
器学习的输入和输出总是呈线性关系,拟合能力较弱。因此需要对卷积神经网络的结
构进行优化,使网络中神经元的输入和输出呈非线性关系,激活函数的作用就是如此。
目前卷积神经网络中常用的激活函数有如下几种:

表 2 - 1 三种主流激活函数以及导数表达式

函数名 函数表达式 导数表达式

1
Sigmoid f ( x) = ) f ( x) × [1 − f ( x)]
f '( x=
1 + e− x

ex − ex f '( x) =
1 − f ( x) × f ( x)
tanh f ( x) = x
e + ex

0, x < 0 0, x < 0


Re Lu f ( x) =  f '( x) = 
 x, x ≥ 0 1, x ≥ 0

0, x < 0 0, x < 0


Leaky ReLu f ( x) =  f '( x) = 
 x, x ≥ 0 λ , x ≥ 0

Sigmoid 函数,常用于二元分类问题。在一定数量的 epoch 之后,网络要么拒绝学


习,要么学习非常缓慢,因为输入导致输出的变化非常小。Sigmoid 函数主要用于分类
问题。该函数在后续层中更容易饱和,使训练变得困难。计算 Sigmoid 函数的导数非常
简单。

图 2 - 4 Sigmoid 函数
Tanh 函数是拉伸过的 Sigmoid,导数更陡峭。Tanh 比 Sigmoid 激活函数收敛得更
快。

图 2 - 5 Tanh 函数
ReLu 能够更好、更快地训练更深层次的网络。然而,ReLu 在模型训练过程中,存
在“Dying ReLu”现象。即当输入值很小时(零或负数),网络将无法进行反向传播,
机器学习的训练会陷入停滞状态。

10
2 卷积神经网络及硬件加速基础

图 2 - 6 ReLu 函数
Leaky ReLu 在网络未激活时,能有一个很小的非零梯度。即使输入值为负数,Leaky
ReLu 也可以进行反向传播,克服了 ReLu 在训练中会出现的机器学习停滞现象。

图 2 - 7 Leaky ReLu 函数

2.2 硬件加速技术分析
传统的 CPU(Central Processing Unit)结构如图 2 - 8 所示,绿色为计算核心、黄
色是控制单元,紫色、蓝色为各级缓存与橙色一起构成存储单元。CPU 通过运算能力
强大的计算单元来处理各种复杂的运算,而处理运算的速度远高于访问内存的速度,
所以设计了大量的控制单元和存储单元,以满足其强大的通用计算能力。这种结构导
致 CPU 上的指令延时能够大大降低,但是面对一些计算密集型任务就难以实现较大的
吞吐量。因此 CPU 多用来执行指令或通用性计算,而那些简单重复的大计算量任务通
常被分配给其他专门的硬件设备。这种利用专门的硬件来分担 CPU 计算任务的技术就
是硬件加速技术。

图 2 - 8 CPU 结构示意图
对于深度学习这类计算,实时性要求很高,即在此类应用中时间是个关键因素,而
计算负载是固定不变的。为此在一定的计算负载下,为达到实时性可利用增加处理器
数来提高计算速度。同时,因为固定的计算负载是可分布在多个处理器上的,这样增加
了处理器就加快了执行速度,从而达到了加速的目的。在此意义下,1967 年 Amdahl 推
导出了固定负载的加速公式,公式如下所示:

11
西南科技大学硕士学位论文

1
Slatency ( s ) = (2-8)
p
(1 − p ) +
s
其中,𝑆𝑆𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 表示任务的理论加速比,𝑠𝑠是算法中被加速部分的加速倍数,𝑝𝑝表示
被加速部分加速前占用的执行时间比例。通过阿姆达尔定律可以看出,算法加速存在
限制。如下式所示,即使加速部分的加速比𝑠𝑠 → ∞,无法加速的任务部分(决策、I/O 或
其他系统开销)始终是系统瓶颈。

1
lim Slatency ( s ) = (2-9)
s →∞ 1− p

阿姆达尔定律仅适用于固定负载的情况,随着系统处理越来越多,John Gustafson
和 Edwin Barsis 于 1988 年,提出了阿姆达尔定律的补充——古斯塔夫森定律,如下式
所示:
Slatency =1 − p + sp (2-10)

其中,𝑆𝑆𝑙𝑙𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 同样表示任务的理论加速比,𝑠𝑠表示并行性带来的任务延迟加速比,

𝑝𝑝表示收益于改进的部分(在应用改进之前)的总任务延迟百分比。古斯塔夫森定律重
新定义了阿姆达尔定律提出的问题。不是更多的计算资源加速单个任务的执行,而是
允许更多的计算资源在相同的时间内进行更多的计算。
上述两个定律以不同的方式构建了同一件事:为了加速应用程序,对其任务进行
并行化处理。通过在相同的时间内处理更多的数据,或者在更短的时间内处理相同的
数据量达到目的。目前常用于并行化处理以达到加速效果的器件有 GPU、FPGA 以及
ASIC。下面对这几种常用器件的并行加速技术进行分析,并提出本文所采用的加速设
备。

2.2.1 GPU 加速
图 2 - 9 展示了 GPU 的结构。图中绿色方框代表计算单元,黄色的为控制单元,
紫色、蓝色为各级缓存与橙色组成存储单元。与图 2 - 8 的 CPU 结构相比,GPU 只有
少量的缓存结构,因为不需要大量的访问缓存指令;GPU 控制单元更加简单,没有 CPU
那么复杂的控制单元;GPU 拥有大量运算单元,非常适合数据并行的计算任务。

12
2 卷积神经网络及硬件加速基础

图 2 - 9 GPU 结构示意图
图 2 - 10 是 GPU 加速 CPU 的连接示意图。GPU 与 CPU 通过高带宽的 PCIe 总线
相连接,以便数据的流通。CPU 的四个核心能进行复杂的运算与指令调度,但是面对
大量、重复的计算就相形见绌;而 GPU 中含有大量并行重复的计算单元,十分适合进
行重复的计算。因此,CPU 可以将计算密集性任务卸载到 GPU 上进行,CPU 继续保持
高主频执行其他串行指令,这样就达到了加速的效果。

图 2 - 10 基于 CPU+GPU 的硬件加速结构

2.2.2 FPGA 加速
FPGA 是包含可编程硬件结构的电路。与 GPU 或 ASIC 不同,FPGA 芯片内的硬
件不是硬蚀刻的,它往往会根据需要进行重新编程。与 ASIC 相比,这种能力使 FPGA
成为一个出色的选择,ASIC 需要较长的开发时间和大量的设计和构建投资。FPGA 具
有以下特点:
低延迟和高吞吐量性能:FPGA 可通过直接提取视频并进行算法处理,避免经过
CPU 带来延时的方式,来为实时应用(如视频流、转录和动作识别等)提供低延迟或
确定性延迟。因此开发人员可以根据具体应用以及采用的神经网络,从头设计 FPGA 硬
件结构来契合应用程序和网络模型,达到最优的延迟和高吞吐量。
可以克服 I/O 瓶颈:FPGA 通常用于数据必须以低延迟穿越多个不同网络的情况。
I/O 瓶颈是神经网络应用系统性能的最大限制因素之一,而 FPGA 在消除内存缓冲和克
服 I/O 瓶颈方面效果明显。通过加速数据摄取,FPGA 可以加快整个人工智能工作流程。
低能耗:使用 FPGA,开发人员可以根据应用调整硬件,帮助满足能效要求。FPGA

13
西南科技大学硕士学位论文

同样可以提供各种容量,从芯片中提供更高的能源效率。在资源丰富的 FPGA 开发过


程中,开发人员可以按实现不同功能对 FPGA 资源进行合理的分配,从而允许单个
FPGA 并行具有各种功能,减少额外的芯片开销来降低整体系统功耗。

2.2.3 ASIC 加速
ASIC 就是针对特定的应用或需求设计的芯片。因为这种定制性,使得它在处理相
应问题时,能够以最低的功耗达到最高的性能。这种定制性也带来了许多的弊端,例如
只能针对特定的应用或领域,在非定制应用或领域中其表现就较差。不像 GPU 那样,
虽然被称为图形处理器,但凭借其丰富的计算资源也能在其他应用中取得不错的效果。
除此之外,ASIC 开发周期更长,设计难度更大。不适用于个人或小团队的加速需求。
对比 GPU,FPGA 在功耗方面有着巨大的优势,这种优势也使得 FPGA 加速边缘
侧的卷积神经网络应用具有可执行性;ASIC 在边缘侧的卷积神经网络应用可以取得更
好的加速以及功耗表现,但这种专门定制的芯片也存在的针对的应用更少以及开发周
期更长等问题,而 FPGA 可以在保持较高的加速比以及较低的功耗下适用于更多应用。
因此,本文以 FPGA 作为硬件实现平台进行加速研究,同时能利用不同的卷积神经网
络进行测试、验证,并针对边缘侧的任务设计应用。

2.3 人体行为识别方法分析
关于场景中行人的检测与行为分析,大多是通过摄像机采集视野范围内的图像序
列数据进行分析和理解。但由于不同行人的外观和动作姿态等各不相同,拍摄的位置
和视角不同,以及视野环境中光线、天气等外界因素的变化,这些方面都给人体行为分
析的研究带来了巨大的困难和挑战。
近年来该领域的研究取得了许多阶段性的进展,并且形成了比较完整的研究内容,
大致可分为图 2 - 11 中的几部分。第一步就是感兴趣区域的检测,即首先得找到图像中
的目标;然后经过一定的预处理,得到较为干净的感兴趣区域;再利用各种特征提取方
法对分割出来的区域进行特征提取;根据不同的提取方法选择合适的特征描述符,以
便于后续的步骤;其次根据特征描述符特点确定训练方法,将采集到样本投入训练算
法中去,通过学习生成一个最优模型;最后利用生成的模型进行未知样本的预测,实现
人体行为识别。

14
2 卷积神经网络及硬件加速基础

视频数据
运动人体检测 未知数据

目标检测
特征描述符

特征提取
训练、学习

理解、分类 正常行为
动作/行为模型

异常行为

图 2 - 11 行为检测传统研究内容
由于场景内环境复杂多变,通过摄像机获取的图像序列数据量大,难以直接对人
体的行为进行分析。因此,首先需要将运动目标从相对固定不变的场景背景中分离出
来。目标检测的过程就是对视频图像进行分割,检测出场景中感兴趣的运动目标信息,
从而得到有价值的数据为后续行为的理解与识别提供必要的准备。常用的检测算法有
利用前后帧信息检测的帧差法、背景减法、光流法等传统方法。随着算力的提高、神经
网络的发展,基于深度学习的算法也被广泛提出。跟传统方法相比,基于深度学习的方
法适应性更强,对于环境要求更低,能适用于大多环境。
特征提取是整个研究内容中最重要的一个环节之一,要想设计一个人体行为识别
系统,首先要采用各种可能的手段对人体不同行为的性质、本质作各种分析和测量,并
将这些测量值(也即特征)作为后期分类的依据。对于人体行为识别而言,目前的研究中
常常提取的特征主要有外观形状特征(例如人体几何结构方面的特征、颜色、纹理、姿
态等)、运动特征(例如光流信息、位置变化、运动轨迹、运动方向、速度)等。
人体行为检测主要考虑人体姿态问题,因此特征提取主要也是实现人体姿态估计。
有三类常用的人体姿态估计算法。一类是基于特征的人体姿态估计算法,这种方法通
过手动提取人体特征来进行姿态估计。另一种是基于模型的方法,这种方法重点在于
四个方向。分别是:搜索空间、部位外部模型、人体结构模型和推理算法。还有一种就
是深度学习方法。通过网络模型学习,实现人体姿态的映射。
人体姿态估计可以按照应用场景来分成两类。一类是单人姿态估计,另一类是多
人姿态估计。多人姿态估计因为图像中人数以及人的位置的不确定性,实现起来比单
人姿态估计更加困难。多人姿态估计按照检测思路不同又分为自顶向下(top-down)和
自底向上(bottom-up)两种方法。自顶向下的方法首先找出图像中的“人”,然后找到
的部分作为感兴趣区域(Region of interest,ROI)在进行姿态姿态估计;自底向上的方

15
西南科技大学硕士学位论文

法则相反,首先找到图像中可能的关节点,再根据关节点的特征信息进行匹配,配接成
人体骨架。自顶向下的方法准确率高,但由于有两步工作,所以模型速度较慢;而自底
向上的方法相对来说运行速度更快。如表所示,分别列出了经典的单人姿态估计方法、
自顶向下多人姿态估计方法和自底向上多人姿态估计方法[53]。

表 2 - 2 经典单人姿态估计算法模型对比
网络 研究目标
DeepPose 将卷积神经网络应用于人体姿态估计
Efficient Object
使用卷积神经网络预测热图进行人体姿态估计
Localization
CPM 更好地预测被遮挡人体的关节点
Hourglass 让网络能够显式地学习预测目标之间的关系
Multi-Context Attention 更好地解决遮挡问题,提高关节点定位的准确性
通过新的网络结构获取到更多的位置信息,使最终的预测更加准
CPF

CFA 提出新的方法对不同阶段的特征进行特征融合
Soft-gated Skip Connections 提高精度、降低模型参数量
U-Net 经典的语义分割算法
HRNet 提高对小尺度任务的检测效果

表 2 - 3 经典自顶向下的多人姿态估计方法
网络 研究目标
Mask RCNN 在一个网络中同时做目标检测和实例分割
CPN 解决野外场景下的多人姿态估计
RMPE 减少边界框预测时候的各种问题
CFN 解决遮挡情况下的关节点定位不准确的问题
MSPN 级联多个 stage 能够显著提高性能
Simple Baselines 简化网络结构的同时保证性能变化不大

表 2 - 4 经典自底向上的多人姿态估计方法
网络 研究目标
OpenPose 实现对多人的实时检测
Associative Embedding 产生像素级别的预测
PersonLab 可以进行高效的推理,运行时间与场景中人数无关
Objects as Points 实现模型速度和精度最好的权衡
SPM 实现速度和精度更好的权衡
HigherHRNet 提升小尺度人物检测效果

16
2 卷积神经网络及硬件加速基础

相比基于时空体积、基于时空兴趣点(STIP)等传统方法,基于卷积神经网络的深
度学习方法能以更快的速度实现更高的精度。
模板匹配和机器学习人体常用于行为模型的建立。模板匹配将人体动作序列与预
设的模板数据进行匹配,测量两者之间相似度以此识别不同的行为,主要的方法有灰
度相关匹配以及特征相关匹配等;机器学习通过特征提取以及样本训练来学习得到一
个分类器,不需要详细的人体描述就能对未知行为进行准确识别。常用隐马尔科夫模
型(HMM)、动态贝叶斯网络(DBN)、支持向量机(SVM)等。
随着卷积神经网络的广泛应用,人体行为识别算法里也有越来越多的卷积神经网
络。尽管卷积神经网络的引入,能提高人体行为识别的精度,但随之而来的是计算量的
增加以及可能带来的传输带宽的增大。因此本文选择通过 FPGA 加速卷积神经网络的
方式来实现人体行为识别,通过靠近图像采集侧的 FPGA 来实现边缘侧的识别、预警
等,可以有效的降低不必要的数据传输以及存储。

2.4 本章小结
本章首先分析了神经网络算法的两个重要基础结构和它们的计算特点。然后从两
个加速定律引出现在常用的三种加速方式,分析了本文加速平台的选择依据。最后介
绍了人体行为识别的基本方法,分析了引入卷积神经网络带来的问题以及本文的解决
方法。

17
西南科技大学硕士学位论文

3 卷积神经网络硬件加速器设计

针对低功耗场景下的卷积神经网络应用需求,本文提出基于 FPGA 的解决方案。


本章将围绕卷积神经网络特点结合 FPGA 结构特点,完成硬件加速方法研究。本章首
先介绍本文开展加速器设计研究选用的 Vitis AI 开发环境以及结构,然后利用该平台完
成卷积神经网络加速分析、研究设计以及测试验证,以实现 FPGA 对卷积神经网络的
高效加速。

3.1 基于 Vitis AI 的硬件加速结构


3.1.1 Vitis AI 开发环境简介
利用 FPGA 设计加速器的开发方法可分为两类。第一类是高层次综合(HLS)方法
学,它指的是类 C/ System C 的综合方法,包括 OpenCL 方法(适用于英特尔/Xilinx
FPGA)或 Vivado HLS(仅适用于 Xilinx FPGA)。大多数基于 FPGA 的卷积神经网络
硬件加速设计都使用 HLS。这种方法可以加速设计和仿真,并自动生成 Verilog/VHDL
代码。Xilinx ZYNQ 的推出极大地改变了 FPGA 的开发步骤,因为每个 FPGA 都与一
个计算处理单元(ARM)相连。处理系统(PS)和 FPGA 逻辑之间的通信非常方便。
对于 Xilinx Vivado HLS,它提供了一些高级 HLS 工具,如 HLS DNN IPs(Intellectual
Property)、HLS 线性代数和 HLS DSP,使基于 FPGA 加速器的设计更加容易。因此,
越来越多的设计基于 Xilinx FPGA。相反,在英特尔 FPGA 上实现 HLS 仍然是一个挑
战。第二类是传统的寄存器传输级(RTL)设计方法。这种方法的开发周期较长,但可
以充分利用 FPGA 资源而不需要任何冗余,并且在周期级具有更好的时序逻辑控制。
本文采用高层次综合的方式,利用 Vivado HLS(Vitis)平台与 Vitis AI 平台相结合的方
式,设计卷积神经网络的 FPGA 硬件加速器。
Vitis AI 由 Xilinx 推出的开发环境,用于在 Xilinx 嵌入式平台、Alveo 加速卡或云
端 FPGA 实例上加速 AI 推断。Vitis AI 开发环境不仅支持业界领先的深度学习框架,
如 Tensorflow 和 Caffee,而且还提供全面的 API 进行剪枝、量化、优化和编译训练过
的网络,从而可为部署的应用实现最高的 AI 推断性能。如图 3 - 1 所示,它由优化的
IP、工具、库、模型和示例设计组成。Vitis AI 与 NVIDIA 公司提出的 CUDA(Compute
Unified Device Architecture)类似。CUDA 是针对 GPU 提出的通用并行计算架构,提供
了 GPU 编程的简易接口,使得 GPU 能够快速解决复杂的计算问题;Vitis AI 是针对
FPGA 提出的人工智能加速平台,也为开发者提供了简易的接口,使得 FPGA 加速人
工智能相关算法更加便捷。

18
3 卷积神经网络硬件加速器设计

图 3 - 1 Vitis AI 与 CUDA 开发环境


利用 Visit AI 在 FPGA 上进行加速器设计、模型部署与实现推断的步骤如图 3 - 2
所示,整个开发设计流程分成模型、硬件、软件三个部分。模型构建环节主要针对实际
任务,利用 TensorFlow、Caffe、PyTorch 等主流深度学习框架训练网络模型或者利用已
有的网络模型作为输入,将针对应用训练好的神经网络模型进行一定的剪枝,然后通
过量化将浮点数据模型转化成定点数据以减小内存占用及提高计算效率,最后通过编
译生成底层硬件可执行文件。硬件设计则是根据应用需求、针对目标平台(Xilinx 嵌入
式平台、Alveo 加速卡或云端 FPGA 等),利用 HLS、Xilinx 加速库或其他 IPs 搭建硬
件平台,包括神经网络硬件加速器设计、数据的预/后处理模块等计算单元与数据流、
外设控制模块等。软件设计则是利用 C\C++\Python 等语言,针对具体实际应用需求,
在进行任务划分与切割后,结合 AI Runtime、AI Library、硬件平台以及网络模型文件,
设计软硬件协同加速的应用程序,由官方提供的链接器工具整合生成软件程序。
① Build Model ③ Build SW ② Build HW Accelerated
DPU IPs C,C++ Libraries

Vitis Vitis
AI Optimizer
GCC/G++ DPU Config Compiler Compiler
(optional)
(V++) (V++)

AI Quantizer AI Rumtime AI Library Xilinx Object Xilinx Object Xilinx Object


(.xo) (.xo) (.xo)

Vitis Target
AI Compiler Linker Vitis Linker(V++)
Platform

Compiled
Built SW Built HW
Model Files

图 3 - 2 基于 Vitis-AI 的开发流程

19
西南科技大学硕士学位论文

本章在分析卷积神经网络模型结构特点以及计算特点的基础上,提出卷积神经网
络的 FPGA 硬件加速设计,完成开发流程中的硬件搭建,同时利用模型构建环节中量
化后的模型进行测试。第四章则是完成开发流程中的第三步:根据本文提出的应用场
景,设计软硬件协同加速系统实现人体行为识别,完成硬件加速器的应用研究。
本文采用模型构建环节中的量化工具对网络模型进行量化,其量化流程如图 3 - 3
所示。

校准数据
集 VAI_Q

浮点模型 量化校准

测试/验证
测试
数据集

训练数据 满足精
定点精调
集 度?

生成DPU模

编译部署

图 3 - 3 Vitis AI 模型量化流程

3.1.2 基于 Vitis AI 的硬件加速结构


基于 Visit AI 的硬件加速架构如图 3 - 4 所示,该加速架构基于 Xilinx ZYNQ 的
ARM+FPGA 结构。处理系统(PS)部分与可编程逻辑(PL)部分通过 AXI 总线进行
数据交互;PS 部分主要是 ARM 作为 CPU 处理任务调度等,内存控制器控制片外存储
(例如 DDR)的数据调度;PL 部分因其 FPGA 的并行性特点适合处理卷积等并行计
算,因此用以设计卷积神经网络加速器。PL 部分中,片上存储器用以缓冲输入、中间
和输出数据,以实现高吞吐量和高效率,同时尽可能的复用数据以减小外部内存开销;
指令提取单元在整个系统启动后从片外获取指令以控制计算引擎的运行,该部分由
Visit AI 进行优化;计算引擎就是 Visit AI 提供的用以设计硬件加核的部分,通过乘法
器、加法器、累加器等基本块,通过深度流水线的形式从计算方式上深度加速卷积神经
网络。本章将围绕该硬件结构,重点设计卷积神经网络加速器。
20
3 卷积神经网络硬件加速器设计

图 3 - 4 硬件加速结构

3.2 卷积神经网络的 FPGA 加速设计分析


3.2.1 FPGA 加速难点及限制
一个卷积神经网络模型通常包含很多层,每层内含有大量的参数与计算,同时层
与层之间要进行数据传输,这对计算和存储要求都非常大。尽管 FPGA 有着较为丰富
的计算资源可灵活配置,但是相比卷积神经网络所需资源而言还是极为有限。得益于
FPGA 灵活可配置与并行计算特点,这相对紧促的计算资源通过合理的设计也可实现
高性能的加速,这也是本文的目标。如何快速有效读取神经网络的权重参数,并利用参
数实现快速计算,是设计中的难点。
在基于 FPGA 设计卷积神经网络加速器的体系结构时,发现存在一些限制:(1)
从全局存储器(DDR3)到 FPGA 片上存储器的获取数据延迟是设计中的一个瓶颈;
(2)
FPGA 上的硬件资源有限;(3)数据依赖性。
第一个限制是 FPGA 和 CPU 之间的通信。通常 GPU 的传输带宽性能是领先 FPGA
的。与 FPGA 相比,GPU 和 CPU 之间的数据传输延迟要小几个数量级,这意味着在不
考虑数据传输速度的情况下直接将卷积神经网络从 GPU 转换到 FPGA 是不可接受的。
因此需要设计一种方法来克服 FPGA 中的这个缺点。

21
西南科技大学硕士学位论文

第二个限制来自并行和流水线结构设计中的硬件限制。它需要在计算通道的吞吐
量和硬件成本之间进行权衡。越高的并行性设计会带来更大的吞吐量,但是计算过程
中产生的数据也将会是大量的,这对 FPGA 的片上存储器容量要求较高。然而现在大
多数 FPGA 设备的芯片内存大小仍然有限。
第三个限制是数据依赖性。网络模型中层与层之间和单个网络层内都存在不同的
数据依赖,这种数据以依赖也会极大的影响计算吞吐量。它需要一个良好的调度过程
来减少数据依赖的影响。

3.2.2 FPGA 加速设计分析


以所有输入特征图(input feature map,缩写 IFM)及卷积核为正方形为例进行分
析。如图 3 - 5 所示,其中输入特征图的长宽为𝐷𝐷𝐹𝐹 ,卷积核的长宽为𝐷𝐷𝐾𝐾 。M 个输入特征
图组成一个大小为𝐷𝐷𝐹𝐹 × 𝐷𝐷𝐹𝐹 × 𝑀𝑀三维输入特征图,N 个𝐷𝐷𝐾𝐾 × 𝐷𝐷𝐾𝐾 × 𝑀𝑀大小的三维卷积核
分别与𝐷𝐷𝐹𝐹 × 𝐷𝐷𝐹𝐹 × 𝑀𝑀的输入特征图卷积后生成 N 个𝐷𝐷𝑔𝑔 × 𝐷𝐷𝑔𝑔 大小的输出特征图(output
feature map,缩写 OFM),其中𝐷𝐷𝑔𝑔 是输出特征图的长宽,最终得到一个𝐷𝐷𝑔𝑔 × 𝐷𝐷𝑔𝑔 × 𝑁𝑁大
小的三维输出特征图。

OFMP

IFMP Filters

Input features Output features

N N
DF M Dg
DF
Dk

KPP FMPP

图 3 - 5 卷积运算示意
实现高计算吞吐量的基本思想是利用并行和流水线机制。在卷积运算中存在五种
并发机制:
(1)输入特征图并行性(Input feature maps parallelism,IFMP):一层中有 M 个
IFM,每个特征图独立于其他特征图,因此在卷积运算中可以同时并行获取 M 个 IFM

22
3 卷积神经网络硬件加速器设计

并进行计算;
(2)输出特征图并行性(Output feature maps parallelism,OFMP):一层中有 N 组
三维的卷积核,每组卷积核独立于其他卷积核,相应生成 N 个独立的 OFM。可以卷积
计算过程中,同时获取 N 个三维卷积核并行进行卷积运算,得到 N 个 OFM;
(3)特征图级并行性(Feature map plane-parallel,FMPP):对于每个独立的 OFM,
可以同时计算𝐷𝐷𝑔𝑔 × 𝐷𝐷𝑔𝑔 个输出像素;
(4)内核级并行性(Kernel plane parallelism,KPP):2D 卷积需要𝐷𝐷𝐾𝐾 × 𝐷𝐷𝐾𝐾 乘法计
算,这些乘法计算可以同时实现;
(5)层间并行性(LP):数据依赖性存在于两个连续的层之间。但是,下一层可
以在上一层完成之前以流水线方式开始。
理想情况是充分利用所有并发机制。然而,由于 FPGA 上的硬件资源限制,无法
同时展开所有五种机制。通常,FPGA 上的片上内存不足以存储卷积核权重值、IFM 数
据和中间的 OFM 数据。此外,LUT 和寄存器的数量也无法承受充分利用的循环展开
实例设计。为了解决这个问题,需要使用有限的硬件设计并行结构,并以流水线方式重
用并行结构。对于 KPP,内核大小𝐷𝐷𝐾𝐾 决定了并行性。该参数在不同的层中可能会有所
不同(例如,1×1、3×3、5×5、11×11 等)。为了设计一个核尺寸不确定的通用 CNN
加速器,本文在核平面上使用了流水线结构,而不是并行结构。对于 FMPP,并行度由
OFM 大小𝐷𝐷𝑔𝑔 × 𝐷𝐷𝑔𝑔 决定。通常,它由最小输出特征大小决定,因为加速器需要能应用于
所有卷积层(例如,AlexNet 或 YOLO V2 中的最小输出特征大小为 13×13,而 VGG16
或 YOLO V1 中的最小输出特征大小为 7×7)。IFMP 和 OFMP 的最大程度分别为 M 和
N。由于资源的限制,不可能使用 M 和 N 进行并行。通常,在硬件资源允许的情况下,
用最大的并行度实现最大的吞吐量。
为了获得最终的 OFM,卷积神经网络加速器必须设计执行不同的操作的计算单元,
例如获取数据/权重单元(Fetch Unit,FU)、卷积计算(Multiply Accumulate,MAC)、
批量标准化(Batch normalization,BN)、缩放与偏置(Scale and bias,SB)、激活函数
(Activation,ACT)、池化(Pooling,PL)和数据回传(Write back,WB),如图 3 - 6
所示。

图 3 - 6 卷积神经网络加速器计算流程及模块

23
西南科技大学硕士学位论文

每个网络层有七个阶段。实心块是包括 FU 和 MAC 操作的必选模块,虚线块是可


选操作,如 BN、SB、ACT、PL 和 WB。根据网络配置决定每个模块是否有效。各模
块功能如下:
FU:它使用滑动窗口获取内核权重和特征图,并将它们排列成卷积对,为 MAC 操
作做准备。
MAC:卷积计算单元。传统的内核输入权重可以被视为 4D 超立方体,如图 3 - 5
所示,本文从 FMPP、IFMP 和 OFMP 三种并行性出发,设计 FPGA 加速的卷积计算单
元。
BN:该模块将接收卷积结果并执行批量标准化操作。
SB:此模块将在 BN 后接收结果,将其与参数刻度相乘,并将其与偏差相加,然
后将数据发送到下一个模块。
ACT:此模块将在 SB 之后接收结果并执行激活操作。在本文设计的加速器中使用
Leaky ReLu 函数。

 x, if x ≥ 0
f ( x) =  (3-1)
0.1x, others

PL:用于对输入数据进行下采样。常用的方法是使用行缓冲区逐行存储和处理输
入数据,并利用开关控制该模块是否在 FPGA 上工作。
WB:将得到的输出数据写回外部存储器。

3.3 卷积神经网络的 FPGA 加速方法研究


3.3.1 卷积计算并行加速研究
卷积层和全连接层是整个卷积神经网络中最多也是最重要的部分,其中包含的参
数量大、运算量复杂。以 VGG-11 为例[3],如图 3 - 7 所示是该网络模型各层参数量以
及计算量。在这个模型中,全连接层以及卷积层占据了 99%以上的参数(权重)以及
计算量,其他的卷积神经网络结构参数与此相似。因此卷积层以及全连接层是计卷积
神经网络加速实现的关键,设计、优化好卷积层及全连接层就是实现加速的核心。

CONV
6.9% CONV
98.2%

VGG-11参数量 VGG-11运算量

图 3 - 7 VGG-11 各层参数及运算占比

24
3 卷积神经网络硬件加速器设计

如图 3 - 8 所示,输入特征图与卷积核通过卷积操作生成输出特征图。

图 3 - 8 卷积计算并行示意图
其中,𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑ℎ表示 IFMP 并行度,𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑤𝑤𝑤𝑤𝑑𝑑𝑑𝑑ℎ表示 OFMP 并行。三维卷积
计算公式如式所示:
∀g o ∈ [1, N ], x ∈ [1, Dg ], y ∈ [1, Dg ]
M / vector _ depth Dk Dk
(3-2)
=Do ( g o , x, y ) ∑
fi 0
=
∑ ∑ W (g , f , k , k
k x o=
= ky o
l o i x y ) Di ( fi , k x + x, k y + y )

其中𝐷𝐷𝑜𝑜 (𝑔𝑔𝑜𝑜 , 𝑥𝑥, 𝑦𝑦)是输出特征图,𝐷𝐷𝑖𝑖 (𝑓𝑓𝑖𝑖 , 𝑥𝑥, 𝑦𝑦)是输入特征图在点(𝑥𝑥, 𝑦𝑦)处的神经元,


𝑊𝑊𝑙𝑙 (𝑔𝑔𝑜𝑜 , 𝑓𝑓𝑖𝑖 , 𝑘𝑘𝑥𝑥 , 𝑘𝑘𝑦𝑦 )是第𝑙𝑙层的权值,卷积核大小为𝐷𝐷𝑘𝑘 × 𝐷𝐷𝑘𝑘 ,𝑔𝑔𝑜𝑜 是输出特征值,𝑓𝑓𝑖𝑖 是输入特
征值。
卷积计算伪代码如下,共 6 层循环,其中 M 表示输入特征图总数、N 表示输出特
征图总数,C 表示特征图列数,R 表示特征图行数,K 表示卷积核的长宽。总的时间复
杂度为:
org
= O( Dg ⋅ Dg ⋅ M ⋅ N ⋅ Dk ⋅ Dk )
Cconv (3-3)

卷积层计算过程:
L1: for (=
m 0; m < M ; m + + ) //输入特征图循环
L2: for (=
n 0; n < N ; n + + ) //输出特征图循环
L3: for (=
c 0; c < C ; c + + ) //特征图列循环
L4: r 0; r < R; r + + ) //特征图行循环
for (=
L5: i 0; i < K ; i + + ) //卷积核循环
for (=
L6: for (=
j 0; j < K ; j + + )
output[m][r ][c]+ weight[m][n][i ][ j ]* input[n][ S * r + i ][ S * c + j ]
=
通过对输入特征图进行大小为𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑ℎ的并行化,使得输入特征图能够减少
25
西南科技大学硕士学位论文

𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑ℎ次循环;同时将输出特征图进行并行化,即同时𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑤𝑤𝑤𝑤𝑑𝑑𝑑𝑑ℎ个卷积核进
行乘加运算,使得输出特征图循环减少𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑤𝑤𝑤𝑤𝑑𝑑𝑑𝑑ℎ倍。通过输入、输出特征图并行化
处理后,完成三维卷积运算的时间复杂度为:
M N
org
= O( Dg ⋅ Dg ⋅
Cconv ⋅ ⋅ Dk ⋅ Dk ) (3-4)
vector _ depth vector _ width
相应的,完成整个卷积运算所花费时间降低𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑ℎ*𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣_𝑤𝑤𝑤𝑤𝑑𝑑𝑑𝑑ℎ倍。
除了进行 IFMP 和 OFMP 两方面的并行化处理外,本文还进行了像素级的 FMPP
并行处理,分别从输入特征图的左上和右下向中间进行卷积计算。如下图 3 - 9 所示,
采用了 IFMP 为 3,OFMP 为 3,FMPP 为 2 的并行方式进行加速设计,这样一个时钟
就能完成 18 次乘法运算。

图 3 - 9 三种并行计算示例
在每个时钟周期中,卷积阵列执行乘法和累加,这两类运算被计为两个运算。因
此,每个周期的峰值操作数等于 IFMP*OFMP*FMPP*2。不同并行设置下,卷积加速器
的最大计算量如表 3 - 1 所示。

表 3 - 1 不同并行性下的计算量
Peak Ops
FMPP IFMP OFMP (operations/per
clock)
4 8 8 512
4 10 10 800
8 8 8 1024
4 12 12 1152
8 10 10 1600
8 16 16 4096

26
3 卷积神经网络硬件加速器设计

3.3.2 并行流水加速结构研究
为了在一个周期内完成所有卷积操作,一个𝐷𝐷𝐾𝐾 × 𝐷𝐷𝐾𝐾(例如 3×3)大小卷积核与 3
个 IFM 进行卷积操作需要 27(3×3×3)个乘法器和 27 个加法器。并行实现这一点将
花费大量的数字信号处理器(DSP)和查找表(LUT),因为硬件资源的限制,完全利
用并行性是无法实现的。高度并行化将消耗大量计算单元。处理能力和硬件资源之间
需要进行平衡。为了解决这个问题,本文采用了流水线结构来实现更高的吞吐量。
如图 3 - 10 所示,为几种处理结构的示意图。图(a)是 M 个操作循环 k 次的顺序循
环方式,单次操作耗时一个时钟周期,则整个循环时延为𝑀𝑀 × 𝑘𝑘个周期。这种结构使用
的资源最少,但执行耗时最高。图(b)是 M 个操作循环 k 次的完全展开并行循环方式,
这种结构完成全部循环只需要 M 个周期,k 次循环同时在硬件上实现。这种结构速度
最快,但是消耗的计算资源也是最大,而且是一般硬件系统无法承受的。

(a)顺序结构

(b)完全展开并行结构 (c)理想的流水结构

图 3 - 10 顺序、并行及流水结构
图(c)是 M 个操作循环 k 次的一种理想并行流水结构,流水循环可以同时进行,但
是没有多余的空间可以平衡,其吞吐量如式(3-5)所示:
M M
Throughput
= k = k + M −1
(3-5)
Ttotal
∑i =1
tmax(i )

其中,𝑘𝑘是循环的次数,𝑀𝑀是总的操作数,𝑡𝑡max (𝑖𝑖) 第 i 次循环中耗时最高的一次操


作的时间。由于卷积神经网络存在的数据依赖性,无法以这种理想的流水结构进行展
开加速。数据依赖性是指变量依赖于先前状态的情况。并行流水结构中存在三种类型
的数据依赖:循环数据依赖、行数据依赖和层间数据依赖。
新循环迭代的启动频率称为初始间隔(Initial Interval,II)
。II 表示并行流水结构在
处理下一个循环之前必须等待的时钟周期数。在实际设计希望 II 越小越好,II=1 表示

27
西南科技大学硕士学位论文

每个时钟都会有一个新的循环并行启动。一般循环中一些比较困难、复杂的操作不能
在一个时钟内完成,这个时候的 II 就比较大。利用 II 表示系统总时延,如式(3-6)所示:

latencyτ = (k − 1) × II + latencyχ (3-6)

式中,𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝜏𝜏 是执行循环总耗时,𝑘𝑘是循环次数,𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝜒𝜒 是单个循环的时延。


图 3 - 11 展示了一个卷积神经网络硬件加速器的并行流水结构。首先是 M 个数据
获取单元并行获得权重和数据,并进行卷积计算。在卷积计算之后,批量归一化之前有
段中断期,这是因为需要等𝑘𝑘 2 次卷积计算以完成一整个卷积过程,𝑘𝑘是内核大小。在激
活函数和池化中间有第二个中断期,因为池化操作需要一整行数据准备就绪。第三个
中断在数据写回和下一层开始之间,因为在下一层开始之前需要整个输出特征图准备
就绪。

图 3 - 11 卷积神经网络并行流水结构

3.3.3 缓存结构优化加速研究
(1)卷积计算结构缓存优化
在卷积运算伪代码中,L5 层的外循环迭代需要在 L6 层内循环迭代开始前完成上
一次的迭代,因此循环中存在数据依赖关系。假设,外部循环需要四个周期(II = 4)
来完成乘法和累加运算,这意味每个内部迭代有四个周期的时延。
图 3 - 12 是一个传统的卷积计算单元的结构,根据式(3-6)计算可得:输出一个结果
需要[(𝑁𝑁 − 1) × 4 + 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝜒𝜒 ]个周期。为了去除这种数据依赖带来的延时,本文提出一
种解决方式,如图 3 - 13 所示。

28
3 卷积神经网络硬件加速器设计

D3
D2
D1
D0
Final Result

数据

W3
W2
W1
W0

权值

图 3 - 12 传统卷积计算结构

D3
D2
D1
D0
Final Result

数据

W3
W2
W1
W0

权值

图 3 - 13 引入 FIFO 缓存的卷积计算结构
新的结构首先在传统结构的基础上按 FIFO 排列引入了多个空的缓存器,初始化使
其全部为 0;利用最左边缓存器存储乘法结果,并在每个时钟周期通过移位寄存器将数
据往前移动;将第一个缓存器中的数据与乘法结果相加,直到最后一个数据输出结果。
这种引入 FIFO 缓存的卷积计算结构能消除循环数据依赖性,通过开辟的缓存区存
储中间的临时累加值,能够有效的避免连写(write after write,WAW)操作以及缓和并
行流水结构中的中断时长。利用式(3-6)估算卷积计算的时延如下:
MACoptimized _ latency
MAClatency _ ratio =
MACoriginal _ latency
(3-7)
(k 2 − 1) × II new + χ new
= 2
(k − 1) × II original + χ original

式中,𝐼𝐼𝐼𝐼𝑛𝑛𝑛𝑛𝑛𝑛 = 1,𝐼𝐼𝐼𝐼𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 = 4,因为使用的 FIFO 深度为 4,所以𝜒𝜒𝑛𝑛𝑛𝑛𝑛𝑛 = 4,


𝜒𝜒𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 = 4。因此式(3-7)中,传统结构卷积计算耗时(4𝑘𝑘 2 − 3)个周期,改进后的结构
耗时(𝑘𝑘 2 + 3)个周期。因为𝑘𝑘 > 3,所以改进后的结构耗时降低了 0.36 倍。
(2)特征数据输入缓存优化

29
西南科技大学硕士学位论文

在卷积和池化运算中,都是采用一个特定大小(如𝐾𝐾 × 𝐾𝐾)的滑动窗口,从输入特
征图的左上角逐行扫描到右下角获取数据以便进行计算。由于输入数据是逐行扫描的,
因此后续的计算也是逐行进行的,这种数据获取、缓存方式在池化运算中将引入行数
据依赖。池化计算公式如式所示:
∀g o ∈ [1, N ], x ∈ [1, Dg ], y ∈ [1, Dg ]
(3-8)
Dopool ( g o , x, y ) max p , q∈[1:P ] [ Do ( g o , x + p, y + q)]
=
1
输入特征图是对输入特征图的 下采样,𝑃𝑃是池化核大小。
𝑃𝑃

Data_in P31 P32 P33 Shift_ram

P21 P22 P23 Shift_ram

P11 P12 P13

Result
Shift_ram Result to RAM

图 3 - 14 3*3 大小逐行缓存结构
图 3 - 14 展示了一种传统的逐行缓存结构,进行 3*3 的池化运算,要等前两行都
缓存完才能开始计算,这将会引入数据依赖性和片上内存消耗。此时数据时延为:
latency pool _ org = [( P − 1) × W + P] × latencyφ (3-9)

式中,𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝜙𝜙 是卷积计算时延,𝑊𝑊是行缓存器长度,即图 3 - 14 中移位寄存器的


深度,第一次池化操作前需要等待𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑜𝑜𝑜𝑜𝑜𝑜 个周期的时间。

图 3 - 15 传统方式仿真结果
一个 3*3 大小逐行缓存结构如图 3 - 15 所示,其中仿真时钟为 39.725ns,记第一个
有 效 数 据 到 达 中 P31 的 时 刻 为 17000.355082ns , 第 一 个 有 效 数 据 输 出 时 刻 为
17051.322268ns,两者间隔 50967.186ns,即 1283 个时钟周期。本次仿真中行缓存长度
W 为 640,池化尺寸大小 P 为 3,由式(3-9)计算得时延为 1283 个𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝜙𝜙 ,与仿真结
果相同。
为解决上述问题,本文提出一种之字形扫描方式。如图 3 - 16 所示,采用一个(𝐾𝐾 +

30
3 卷积神经网络硬件加速器设计

𝑃𝑃 − 1) × (𝐾𝐾 + 𝑃𝑃 − 1)的滑动窗口代替𝐾𝐾 × 𝐾𝐾大小的滑动窗口从全局内存中提取数据到


FPGA 片上内存,步长为 P。在滑动窗口内,用之字形顺序将输入数据重新排列成𝑃𝑃2 个
𝐾𝐾 × 𝐾𝐾大小的子块。

图 3 - 16 数据获取单元两种扫描方式
图 3 - 17 描述了使用之字扫描的实现细节。图中采用的卷积核为3 × 3大小,步长
为 1,池化大小为 2。用一个4 × 4大小的滑动窗口获取输入数据。在每个滑动窗口中用
之字扫描获取四个3 × 3大小的块进行卷积运算。对于池化操作,使用比较器获取四个
卷积计算结果的最大值。使用之字扫描获取数据,不仅降低了池中的行数据依赖性,而
且还能降低功耗,因为这种方式充分利用了数据重用策略。一个滑动窗口可以获取𝑝𝑝2
个块,减少读取外部存储器可以减少全局存储器的功耗。

= P 2 × latencyφ
latency pool _ zigzag (3-10)

相比式(3-9),之字扫描方式获取数据大大降低了时延。

图 3 - 17 之字扫描用于卷积运算

31
西南科技大学硕士学位论文

3.4 卷积神经网络的 FPGA 加速设计验证


上一节在介绍了基于 Vitis AI 平台的硬件加速设计方法后,分析了卷积神经网络中
各个层的计算特点。在此基础上针对各层特点,设计了基于 FPGA 的硬件加速优化方
案和策略,利用 Vitis AI 完成了各功能层的相应优化设计,不同并行度下硬件占用情况
如表 3 - 2 所示。

表 3 - 2 不同并行度下资源占用情况
FMPP*IFMP*OFMP LUT Register Block RAM DSP
4*8*8 28093 36345 75.5 79
8*8*8 34561 50824 107.5 158
8*12*12 42914 74326 172 334
8*16*16 53582 105020 262 564

本节基于 Vitis AI 平台以及设计的 FPGA 硬件加速器,利用常用的卷积神经网络进


行加速效果验证。本节选用 VGG-16 进行 FPGA 硬件加速器的测试、验证。
VGG 模型是 2014 年 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)
大赛第二名,其名来源于牛津大学的 Visual Geometry Group,由该小组与 Google
DeepMind 公司的研究员共同提出该深度卷积神经网络[3]。主要针对卷积神经网络的深
度对大规模图像集识别精度的影响,主要贡献是使用很小的卷积核(3×3)构建各种深度
的卷积神经网络结构,并对这些网络结构进行了评估,最终证明 16-19 层的网络深度,
能够取得较好的识别精度[3]。
如图 3 - 18 所示,VGG-16 是 VGG 网络的一种,含有 13 个卷积层和 3 个全连接
层。该网络模型具有小卷积核、小池化核、层数更深特征图宽等特点,被广泛应用于图
像分类,迁移学习中。其网络结构图如图 3 - 18 所示,各层分布配置及计算量如表所
示。

图 3 - 18 VGG-16 网络结构图

32
3 卷积神经网络硬件加速器设计

表 3 - 3 VGG-16 各层分布配置
Layer Num_in Num_out Size_in Size_kernel Stride Operations
Conv 3 64 224×224 3×3 1 86704128
Conv 64 64 224×224 3×3 1 1849668064
MaxPool 64 64 224×224 2×2 2
Conv 64 128 112×112 3×3 1 924844032
Conv 128 128 112×112 3×3 1 1849668064
MaxPool 128 128 112×112 2×2 2
Conv 128 256 56×56 3×3 1 924844032
Conv 256 256 56×56 3×3 1 1849668064
Conv 256 256 56×56 3×3 1 1849668064
MaxPool 256 256 56×56 2×2 2
Conv 256 512 28×28 3×3 1 924844032
Conv 512 512 28×28 3×3 1 1849668064
Conv 512 512 28×28 3×3 1 1849668064
MaxPool 512 512 28×28 2×2 2
Conv 512 512 14×14 3×3 1 462422016
Conv 512 512 14×14 3×3 1 462422016
Conv 512 512 14×14 3×3 1 462422016
MaxPool 512 512 14×14 2×2 2
FC 512 4096 7×7 102760448
FC 4096 4096 1×1 16777216
FC 4096 1000 1×1 4096000
Total Operations 15473144320

上表中,Conv 表示卷积层,MaxPool 表示最大池化层,FC 表示全连接层;Num_in


表示输入特征图数量,Num_in 表示输出特征图数量,Size_in 表示输入特征图大小,
Size_kernel 表示卷积核大小,Stride 表示卷积核、池化核在运算中移动步长,Operations
表示卷积计算次数,一次卷积包含乘法和加法运算,实际运算量为卷积计算次数乘 2。
通过上表可以看出,在 VGG-16 网络模型中卷积核大小均为 3*3(卷积层)和 1*1(全
连接层)大小,池化核为 2*2 大小,计算量约为 30.95GOP。
根据 VGG-16 的网络结构,在前节设计的 FPGA 硬件加速器中,采用 8 位像素并
行、16 位输入特征图并行、16 位输出特征图并行的结构进行验证。利用设计的加速器
核,在 VIVADO 开发工具中搭建系统硬件结构如图 3 - 19 所示,并通过完整的编译流
程生成硬件可执行文件。同时利用 Vitis AI 工具将选用的 VGG-16 模型量化为 8bits 定
点数据,以在 FPGA 平台实现部署。
整个测试系统的硬件结构包括四部分,分别是 PS 模块(Zynq UltraScale + MPSoC)、
卷积神经网络加速器 DPU 模块,DPU 中断模块(dpu concat irq)以及系统复位模块
(Processor System Reset)。其中 PS 系统模块与 DPU 模块之间通过 AXI 总线进行数据
交互;DPU 模块由本章提出的加速方法通过 HLS,结合已有模块封装生成,主要实现
卷积神经网络的加速运算;DPU 中断模块传递 DPU 任务完成信号到 PS 模块;系统复
33
西南科技大学硕士学位论文

位模块实现对 PS 及 DPU 的复位。

图 3 - 19 系统结构图
利用上节设计的卷积神经网络,在 Vitis AI 平台下进行加速验证。在系统时钟为
280MHz 的情况下,经验证测得每幅图像的处理时间为 50.08ms,处理帧率为 19.9fps,
达到了 615.9GOPS 的吞吐量。本测试与其他参考文献设计的加速方法测试结果对比如
表所示。

表 3 - 4 FPGA 加速 CNN 效果对比


[54] [55] [56] [26] [57] [58] 本文

VGG- VGG-
CNN model VGG-16 VGG-16 VGG-16 VGG-19 VGG-16
16 16

Stratix V Zynq Virtex-7 Stratix V Intel Intel Zynq UltraScale+


FPGA
GXA7 XC7Z045 VX690t GSMD5 Arria 10 Arria 10 XCZU9EG

Clock(MHz) 200 150 150 150 200 200 280

BRAMs 1377(20Kb) 486(36Kb) 1220(36Kb) 919(20Kb) 2232(20Kb) 1366(20Kb) 262(36Kb)

DSPs 256 780 2160 1036 1518 410 564

Precision
16 16 16 16 16 8-16 8
(bits)

Latency(ms) 46.3 226 106.6 107.7 43.2 42 50.08

Throughput
669.1 137 290 364.4 715.9 736.9 615.9
(GOPS)

Power(W) 35 25 27.2 20

Power efficiency
8.28 14.57 27.09 30.795
(GOPS/W)

34
3 卷积神经网络硬件加速器设计

硬件资源消耗以及最终达到的吞吐量是评价加速器效果的重要指标。表 3 - 4 中,
FPGA 表示选用的硬件平台;Clock 为设计中能运行的最高工作频率;BRAMs 与 DSPs
为主要的硬件资源消耗,分别为存储资源和计算资源;Precision 为加速器处理数据的
位宽;Latency 为处理一张图片的时延,Throughput 为吞吐量,即单位时间内完成的计
算量,数值上与 Latency 为倒数关系;Power efficiency 为每瓦功耗下的吞吐量。本文对
比的工作选用的 FPGA 硬件型号不同,片上资源总量也不同,因此本文在资源消耗上
不通过资源占用百分比进行比较,直接比较各工作总体资源消耗来判断加速器设计的
优劣。通过对比表 3 - 4 中各工作取得的效果,可以看出本文在硬件资源开销方面相对
其他工作较少,同时能够以更高的时钟运行,在吞吐量方面也是较为出色的,同时单位
功耗下的吞吐量也是最高的。

3.5 本章小结
本章首先介绍了 Xilinx 提供的硬件加速器开发环境,随后提出了加速的难点与限
制,在此基础上提出了加速设计结构。针对卷积计算特点提出了三种并行同用的结构;
提出了并行流水进行各模块的计算;引入缓存、改变缓存方式使得加速结构更加合理。
最后使用 ZCU102 开发板在 VGG-16 网络上进行了验证,可以达到 615.9GOPS 的计算
吞吐量。

35
西南科技大学硕士学位论文

4 基于加速器的人体行为识别研究

卷积神经网络的引入,使得人体行为识别应用有了更好的鲁棒性、更高的精度,但
同时也带来了计算量的猛增,对于实时检测识别系统提出了巨大考验。本章将利用第
三章完成的卷积神经网络硬件加速核,利用 FPGA+ARM 的架构实现人体行为识别应
用系统的软硬件协同加速设计,以实现实时的人体行为识别。

4.1 人体行为识别方法研究
随着人工智能算法在计算机视觉方面的快速发展及应用,人们的生活也变得更加
智能化,越来越多的类似智慧城市、智能交通、智慧楼宇等应用场景被提出来。在各种
智能场景中,都难以避免“人”这一服务对象,例如在自动驾驶中人的识别、智能家庭
监护中人状态的判断等等。在这诸多场景中,对其中的“人”进行理解,是进行智能判
断或决策的重要依据,而其中对人体行为进行快速的识别更是一个重要的内容。
人体行为识别任务不仅需要检测到人,还需要判断人的行为状态,对检测到的人
行为进行理解。由于人体姿势本身的多样和复杂、环境光线明暗影响、物体遮挡等原
因,传统计算机视觉算法很难正确的识别画面中的人体行为,因此在传统方法中引入
了深度学习等算法。同时,因为深度学习算法的引入增加了计算复杂度以及时间,导致
难以满足实时性要求较高的应用,因此本文以人体行为识别任务作为硬件加速对象设
计基于 FPGA 的硬件加速应用。
传统的人体行为识别算法通常包括目标检测任务、特征提取任务以及特征理解任
务,前两个任务也是人体姿态估计中自顶向下的实现方法。因此本节利用图 2 - 11 传统
流程,将人体行为识别任务分成两部分进行设计,如图 4 - 1 所示。分别为人体姿态估
计和姿态分类,前者通过深度学习算法实现;后者通过机器学习算法实现。

图像输 识别输
人 入 出 人
体 体
动作/行为
姿 人体检测
模型 姿
态 态
估 人体关节 训练、学

计 点 习 类

图 4 - 1 人体行为识别流程

4.1.1 人体姿态估计
人体姿态估计是计算机视觉应用中图像理解里不可或缺的部分,是智能化应用的

36
4 基于加速器的人体行为识别研究

关键步骤。从待处理图像数据来源来说,姿态估计可以分为基于彩色图像(RGB)数据
的方法和基于深度数据的方法。彩色图像(RGB)数据通常就是常见的图像、视频文件
或者来源于相机、USB 摄像头等,较早的研究都是基于此进行的;随着 Kinect 等深度
传感器的发展以及性能的提高,更多的研究者通过深度数据来实现人体姿态估计。深
度图像由结构光传感器生成,能去除图像环境中的前景,解决背景的混乱纹理,在应用
中具有更好的鲁棒性。受实验设备的影响,本文基于传统的彩色图像(RGB)数据进行
算法研究。
本文采用自顶向下的方法实现人体姿态估计,用两个卷积神经网络分步实现人体
目标检测与关节点检测两个任务,同时利用上一章设计的加速器完成基于 FPGA 的硬
件部署。
人体目标检测采用 3.4 节中进行加速验证的 VGG-16 网络来实现。本文中采用的
VGG-16 模型基于 COCO2014 的训练集中 Person 标签数据集针对人体目标检测任务训
练而来。COCO2014 数据集全称 Common Objects in Context,是由微软发布的一个用于
图像识别、分割、解释等应用的大型图像数据库,数据集部分图像及标签如下所示[59]。

图 4 - 2 COCO2014 数据样本
VGG-16 模型输入图片尺寸大小为 360*640,利用 COCO2014 验证集中 Person 标
签数据进行验证,浮点数据准确率为 0.5903。经过 Vitis AI 平台将训练得到的浮点模型
文件进行 8bits 量化,量化后得到定点准确率为 0.5857。利用 Vitis AI 平台量化后,模
型由浮点数据转为定点数据,对内存占用减小,计算复杂度降低,同时保证了准确率损
失较小,能够有效部署在 FPGA 上。
利用 VGG-16 检测提取出图像中的人体目标,提取到的目标作为 ROI 进行下一阶
段任务——人体关节点提取。本文选用基于 GoogLeNet V1 改进的网络实现人体关节点

37
西南科技大学硕士学位论文

检测,基于 AI Challenger 数据集进行训练、验证。


GoogLeNet 与 VGG 同年参加 ILSVRC 挑战赛,并取得冠军成绩,VGG 网络为当
年第二名。该网络模型共 22 层,结构如表 4 - 1 所示[60],达到了当年分类和检测的最
新技术水平。

表 4 - 1 GoogLeNet 网络结构
Patch Output #1 #3×3 #3 #5×5 #5 Pool
Type Depth Prams OPS
size/stride size ×1 reduce ×3 reduce ×5 proj

112×

Conv 7×7/2 112× 1 2.7K 34M

64

56×56
Max Pool 3×3/2 0
×64

56×56
Conv 3×3/1 2 64 192 112K 360M
×192

28×28
Max Pool 3×3/2 0
×192

28×28
Inception(3a) 2 64 96 128 16 32 32 159K 128M
×256

28×28
Inception(3b) 2 128 128 192 32 96 64 380K 304M
×480

14×14
Max Pool 3×3/2 0
×480

14×14
Inception(4a) 2 192 96 208 16 48 64 364K 73M
×512

14×14
Inception(4b) 2 160 112 224 24 64 64 437K 88M
×512

14×14
Inception(4c) 2 128 128 256 24 64 64 463K 100M
×512

14×14
Inception(4d) 2 112 144 288 32 64 64 580K 119M
×528

14×14
Inception(4e) 2 256 160 320 32 128 128 840K 170M
×832

7×7×
Max Pool 3×3/2 0
832

7×7×
Inception(5a) 2 256 160 320 32 128 128 1072K 54M
832

38
4 基于加速器的人体行为识别研究

表 4 - 1(续) GoogLeNet 网络结构


Patch Output #1 #3×3 #3 #5×5 #5 Pool
Type Depth Prams OPS
size/stride size ×1 reduce ×3 reduce ×5 proj

7×7×
Inception(5b) 2 384 192 384 48 128 128 188K 71M
1024

1×1×
Avg Pool 7×7/1 0
1024

1×1×
Dropout(40%) 0
1024

1×1×
Linear 1 1000K 1M
1000

1×1×
Softmax 0
1000

“AI Challenger 全球 AI 挑战赛”是创新工场、搜狗和今日头条于 2017 年联合发


起的 AI 科技竞赛,其中人体骨骼关键点检测竞赛提供了一个 30 万张图片、70 万量级
的人物标注,包含了超过 100 种复杂生活场景内的实际任务动作与姿态。本文网络模
型就是基于该数据集进行训练、验证。
本文选用的模型基于 GoogLeNet V1 模型训练而成,GoogLeNet 网络输入图像为
224*224 大小的 RGB 图像,本文选用的网络在其基础上进行调整后输入图像尺寸大小
为 224*128,同时操作量变为 548.6MOPS。网络实现的是单人姿态估计,输入为前级任
务检测到的人体目标,输出为检测到的 14 个关节点,如图 4 - 3 所示。每个关节点包含
三个关键数据:px,py,pt,(px,py)为关节点坐标信息,pt 为检测到的关节点的类
型,共三种取值:可见关节点、不可见关节点以及无效关节点。



图 4 - 3 人体姿态关节点分布情况
常用的人体姿态估计算法评估指标有:OKS(Object Keypoint Similarity),PCK
(Probability of Correct Keypoint)
,PCP(Percentage of Correct Parts)
。OKS 即关键点相
似度,计算公式如式所示:

39
西南科技大学硕士学位论文

∑ exp{−d 2
pi / 2S p2σ i2 }δ (v pi =
1)
OKS p = i
(4-1)
∑ δ (v
i
pi = 1)

其中:𝑝𝑝表示 groudtruth 中人的 ID;𝑖𝑖表示关键点的 ID;𝑑𝑑𝑝𝑝𝑝𝑝 表示 groudtruth 中每个


人和预测的每个人关键点之间的欧氏距离;𝑆𝑆𝑝𝑝 表示当前人的尺度因子,即所占面积大
小的平方根;𝜎𝜎𝑖𝑖 表示第 i 个骨骼点的归一化因子,这个因子是通过对已有的数据集中所
有 groundtruth 计算的标准差而得到的,反映出当前骨骼点对与整体的影响程度。值越
大,说明在整个数据集中对这个点的标注效果越差; 值越小,说明整个数据集中对这个点
的标注效果越好;𝑣𝑣𝑝𝑝𝑝𝑝 = 1表示第 p 个人的 i 关节点可见;𝛿𝛿是将可见点选出来进行计算
的函数。
PCK 是指:预测的关节点与其对应的真实关节点之间的归一化距离小于设定阈值,
则认为关节点被正确预测。通常有 PCK0.2 和 PCKh0.5 两种标准,PCK0.2 表示以躯干
直径作为参考,如果归一化后的距离大于阈值 0.2,则认为正确;PCKh0.5 表示以头部
长度作为参考,如果归一化后的距离大于阈值 0.5,则认为正确。PCP 是指:如果两个
关节点的位置和真实肢体关节的距离达到至多一半时的真实肢体长度,则认为关节点
被正确预测。
本文采用 PCKh0.5 作为衡量姿态估计网络模型精度的标准。在浮点模型下,测试
等到网络 PCKh0.5 为 0.9;通过 Vitis AI 平台将浮点模型转化为定点数据后,测试得到
PCKh0.5 为 0.8964。说明网络模型量化后,模型精度损失较小,能够继续部署在 FPGA
硬件加速器上。

4.1.2 人体姿态分类
根据本节提出来的人体行为识别方法,首先进行人体姿态估计找到人体关节点,
再根据关节点特征设计分类器,实现人体行为识别目标。在 4.1.1 小节中,通过两个卷
积神经网络,以自顶向下的方式实现了人体关节点的提取,本小节将对提取到的关节
点特征值进行处理、构建分类器进行行为识别。
在 4.1.1 小节中,利用卷积神经网络提取了 14 个关节点,关节点特征值以横纵坐
标的形式作为模型输出结果。当人做出不同动作时,关节点的坐标以及关节点之间角
度信息都会发生变化,通过收集不同位置及角度信息构建行为库,即可实现人体行为
识别。
(1)骨骼特征提取
同一幅图像场景下,人体距离摄像头远近导致提取到的关节点特征差异较大;不
同身高的人获取的关节点以及不同行为下的坐标差异也较大。这种情况下,直接利用
提取到的关节点坐标进行学习、训练,可能会导致学习、训练过程更加困难,同时训练
结果不够理想。为了避免这种个体差异带来的影响,首先将提取到的关节点坐标进行
归一化处理。

40
4 基于加速器的人体行为识别研究

人体某些动作仅通过简单的坐标特征难以准确判断,利用骨骼夹角余弦可以将部
分细微的变化进行放大,从而来表征某一类运动。如图 4 - 4 所示,首先将骨骼点数据
转化成骨骼向量,然后在骨骼向量的基础上得到骨骼向量方向余弦特征和骨骼夹角余
弦特征。
Y

a1
β
a2
a5
α θ X
a3 a6 1

a8 a9 a7
a4

a14 θ2

a10 a12

a11 a13

图 4 - 4 骨骼向量及夹角
假设右肩关节的坐标为(𝑥𝑥1 , 𝑦𝑦1 ),右肘关节坐标为(𝑥𝑥2 , 𝑦𝑦2 ),右腕关节坐标为(𝑥𝑥3 , 𝑦𝑦3 ),
则骨骼向量可表示为:

a6 ={x2 − x1 , y2 − y1} (4-2)

{x3 − x2 , y3 − y2 }
a7 = (4-3)

如图 4 - 4 所示,骨骼向量𝑎𝑎6 与坐标轴的两个方向角分别为:𝛼𝛼,𝛽𝛽。那么该骨骼向
量的两个方向余弦值为:
x2 − x1
cos α = (4-4)
( x2 − x1 )2 + ( y2 − y1 )2

y2 − y1
cos α = (4-5)
( x2 − x1 )2 + ( y2 − y1 )2

其中,�(𝑥𝑥1 − 𝑥𝑥2 )2 + (𝑦𝑦1 − 𝑦𝑦2 )2 ≠ 0。


还可以得到骨骼夹角余弦,公式如下:
a6 ∗ a7
cos θ1 = (4-6)
a6 ∗ a7

其中:
a6 ∗ a7 = ( x2 − x1 )( x3 − x2 ) + ( y2 − y1 )( y3 − y2 ) (4-7)

a6 = ( x2 − x1 ) 2 + ( y2 − y1 ) 2
(4-8)
a7 = ( x3 − x2 ) 2 + ( y3 − y2 ) 2

根据以上公式,可计算任意骨骼之间的夹角余弦特征。
(2)姿态分类算法

41
西南科技大学硕士学位论文

支持向量机[61](Support Vector Machines,SVM)最早由 Vapnik 提出,是一种二分


类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即求解能够正确划
分训练数据集并且几何间隔最大的分离超平面。如图 4 - 5 所示,𝜔𝜔 ∙ 𝑥𝑥 + 𝑏𝑏 = 0即为分
离超平面。

图 4 - 5 SVM 示意图
已知一个特征空间上的训练数据集:
T = {( x1 , y1 ),( x2 , y2 ), ,( xN , y N )} (4-9)

其中,𝑥𝑥𝑖𝑖 ∈ ℝ𝑛𝑛 , 𝑦𝑦𝑖𝑖 ∈ {+1, −1}, 𝑖𝑖 = 1,2, … , 𝑁𝑁,𝑥𝑥𝑖𝑖 为第𝑖𝑖个特征向量,𝑦𝑦𝑖𝑖 为类标记。


(a)对于线性分类问题,SVM 模型的求解可表示为约束最优化问题:
1
min 2w,b
w (4-10)

s.t. yi ( w  xi + b) ≥ 1, i =
1, 2, , N (4-11)

求最优解:𝑤𝑤 ∗ , 𝑏𝑏 ∗ 。
得到分离超平面为:
w *  x + b* =
0 (4-12)
分类决策函数:

f ( x ) = sign( w *  x + b* ) (4-13)

对于非线性分类问题,首先定义核函数𝐾𝐾(𝑥𝑥, 𝑧𝑧)和惩罚系数𝐶𝐶 > 0,求解最优化问题:


1 N N N

min
α 2
∑∑ α α
=i 1 =j 1
i j yi y j K ( xi , x j ) − ∑ α i
=i 1
(4-14)

N
s.t. ∑ α i yi = 0 (4-15)
i =1

其中,0 ≤ 𝛼𝛼𝑖𝑖 ≤ 𝐶𝐶, 𝑖𝑖 = 1,2, ⋯ 𝑁𝑁,得到最优解𝜶𝜶∗ = (α1∗ , α∗2 , … , α∗𝑁𝑁 )𝑇𝑇 。


选择𝜶𝜶∗ 的一个分量α𝑗𝑗∗ 满足条件0 < 𝛼𝛼𝑗𝑗∗ < 𝐶𝐶,由此计算阈值:

42
4 基于加速器的人体行为识别研究

N
*
b= y j − ∑ α i* yi K ( xi , x j ) (4-16)
i =1

分类决策函数:
N
=f ( x) sign(∑ α i* yi K ( x, xi ) + b* ) (4-17)
i

SVM 是针对两分类问题设计的,人体行为又包括多种类别,因此本文选择多分类
支持向量机(Multi-class SVM)算法。多分类支持向量机就是利用多个二分类器组合来
进行构造,包括一对多等方法。
(3)SVM 姿态分类器设计
本次设计数据来源于 USB 摄像头采集,数据格式为彩色图像(RGB)数据,定义
了三类不同的行为进行研究:行走、站立、下蹲,如图 4 - 6 所示。

图 4 - 6 三种不同人体行为示例
为保证训练、测试数据多样性,确保模型有效,采集了男女、高矮胖瘦差异的多个
人体行为骨骼数据。每个人每类动作又分别按照据摄像头相对位置、方向进行四次采
集,分别是:正面 1.5m 处,侧面 1.5m 处,正面 3m 处,侧面 3m 处。以此方式构建了
一个规模较小的数据集,其中每类动作各 1000 张,以 7:3 的比例分成训练数据集和
测试数据集。每张包含以下人体行为特征数据:15 个归一化后的骨骼向量及其对应的
方向余弦特征,10 个四肢与躯干之间组成的骨骼夹角余弦特征。
本文选用多项式核函数作为 SVM 核函数进行训练,其公式如式所示。将三类动作
分别标记为:行走(1)
、站立(2)
、下蹲(3)
。然后将测试集中的每类动作数据输入至
训练好的 SVM 中进行识别、分类,输出结果与分类准确率如表所示。
x, xi ) (γ xT xi + r ) p
K poly (= (4-18)

表 4 - 2 人体行为识别结果

人体行为 输出 1 输出 2 输出 3 准确率(%)
行走(1) 253 44 3 84.3
站立(2) 35 265 0 88.3
下蹲(3) 5 0 295 98.3

43
西南科技大学硕士学位论文

表中,三类动作的识别准确率均在 80%以上,其中因为行走和站立时的姿态特征
较为相近,同时因为数据集较少,两者之间误识别较高,所以准确率相比另外下蹲动作
较低;而下蹲动作与行走和站立的姿态特征差别明显,因此准确率较高。
结果表明,利用 SVM 设计的分类器可用于对估计的人体关节点进行行为识别,且
能达到较高的识别率,可用于本文设计。

4.2 人体行为识别系统设计
4.2.1 系统总体流程
根据上节中提出的人体行为识别方法,本小节将研究设计人体行为识别系统。本
文提出的系统针对移动端的实时人体行为识别应用,因此本系统的输入为摄像头采集
的视频文件。同时为了方便验证系统性能,系统也支持视频文件输入。视频输入系统
后,系统将其切分、缓存为一帧一帧的图片。因为后续算法处理的图片数据有一定的格
式要求,而部分摄像机传输的视频流是经过编码的,因此在必要的情况下需要先对输
入的视频流进行解码。完成图片的缓存后,系统逐帧对图片进行检测分析。按照上节中
提出的方法,首先完成感兴趣区域检测,将图像中的行人切分出来;切分出来的行人部
分作为姿态估计算法的输入,进行关节点的检测;完成关节点检测后,利用检测到的关
节点构建骨骼特征;随后基于提取的骨骼特征,利用训练好的分类器完成人体行为识
别。系统在整个视频文件检测完毕后或接受结束指令后结束。整个系统流程如图 4 - 7
所示。

开始 结束

视频输入 结束指令?

输出识别
视频解码 图片缓存读取
结果

人体目标检测 人体行为分类

关节点提取 骨骼特征提取

图 4 - 7 系统整体流程图

4.2.2 软硬件协同总体设计
利用 FPGA 与 CPU 实现软硬间协同加速如图 4 - 8 所示。如 2.2 节中所述,CPU 更

44
4 基于加速器的人体行为识别研究

适合进行任务调度和复杂计算,但是面对卷积计算这种大量重复的计算,就无法发挥
其高主频的特点,任务的计算延时也会随之增大。类似 GPU、FPGA 等硬件可以实现
并行计算,适合于卷积运算。因此将这类计算负载加载到 FPGA、GPU 上,可以快速
完成计算,从而降低整个系统时延。本小节将基于此,分析 4.2.1 小节中的系统总体流
程,对图 4 - 7 中的各任务进行分析,实现软硬件划分。
CPU 任务1 任务2 任务3 任务4 任务5

CPU 任务1 任务5

任务2
FPGA
任务3 任务4

图 4 - 8 CPU-FPGA 协同加速示意图
视频输入任务:系统输入为摄像头采集到的视频数据或视频文件,考虑摄像头输
入数据格式的多样性以及视频文件读取的方便性,将视频输入任务划分给 CPU 实现。
CPU 系统含有众多的开源接口,能够方便快捷地实现视频输入。
视频解码任务:作为一个可选项,根据前端摄像头的型号进行设计,FPGA 能针对
某些特定的格式提供较好的解码速度,但是 CPU 能也能提供更多样、全面的函数来实
现,因此该任务也选择由 CPU 实现。
图片缓存、读取任务:实现的是将视频转换为图片,并进行缓存以满足处理速度同
时保证视频不丢帧。该任务涉及较多的数据存取操作,同时需要存储空间来储存图片
数据,如果将该任务放在 FPGA 上实现,会占用一定的传输带宽以及内存空间。而 CPU
可以更方便的控制片外存储器来存放缓存的数据,更好地实现图片数据的存取,因此
该任务也划分到 CPU。
人体目标检测任务:根据 4.1.1 小节中提出的方法,采用卷积神经网络来实现更精
准的人体目标检测,而利用 CPU 来处理卷积神经网络包含的大量计算,会带来更高的
延时,利用第 3 章中设计的硬件加速器能很好的解决这些计算量,因此该任务由 FPGA
承担。
关节点提取任务:根据 4.1.1 小节中提出的方法,该任务就是利用卷积神经网络实
现姿态估计,输入的感兴趣区域中存在的关节点。跟人体目标检测任务一样,本任务也
是利用第 3 章中设计的 FPGA 硬件加速器来实现。
骨骼特征提取任务:根据 4.1.2 小节中的内容,本文设计的方法提取的骨骼特征值
包括:15 个归一化后的骨骼向量及其对应的方向余弦特征,10 个四肢与躯干之间组成
的骨骼夹角余弦特征。上述骨骼特征值涉及到正余弦计算,计算包含浮点数据,FPGA
适合定点数据计算,CPU 可以处理复杂的浮点数运算,因此该任务由 CPU 承担。
人体行为分类任务:根据 4.1.2 小节提出的 SVM 分类方法,结合前一任务在 CPU

45
西南科技大学硕士学位论文

上进行浮点运算得到骨骼特征值,为了减少数据的浮点-定点转化以及 CPU 与 FPGA 之


间的数据传输,因此直接利用 CPU 实现 SVM 分类。
输出识别结果任务:本文通过显示检测到的关节点、骨骼连线以及人体直接显示
行为状态的方式来输出识别结果,这些输出方式可以通过 CPU 系统中的一些函数快速
实现,因此也选用 CPU 来实现。
综上所述,设计系统整体架构如图 4 - 9 所示,系统处理器为 Xilinx 公司的 ZU9E
G 芯片,其中分为包含 ARM 处理的 PS(Processing System)端和逻辑资源的 PL(Pr
ogarmmable Logic)端。系统由 PS 系统(CPU)和 PL 加速器(FPGA)两部分组成。
可选摄像头输入或视频文件输入以及显示器。PS 端负责任务控制、数据调度等适合于
CPU 的工作,通过 AXI 总线与 PS 端进行数据交互的 PL 端主要负责计算密集型任务,
如深度学习推理等任务。系统工作流程如下:视频文件通过摄像头或者存储器输入到
主机,必要情况下 PS 端 ARM 处理器将进行视频解码和视频尺度变换等工作,随后 P
S 通过 AXI 接口与 PL 端进行视频数据传输,部分适合于逻辑资源上处理的预处理工
作和深度学习推理任务由 PL 端完成,其中深度学习推理任务由第三章中设计的加速器
核实现,加速器核的配置文件由 Vitis AI 将目标神经网络模型量化、编译生成硬件比
特流,视频数据经过加速器核处理后输出相应的推理结果传回 PS 端,最后由 PS 端完
成推理结果的分析、处理。

视频显示结果

视频流 神经网络模

人体行为分类

PL 加速器核

行人检测 骨骼特征提取
视频解码 图片缓存读取

姿态估计
PS PS

图 4 - 9 系统框架
根据任务软硬件划分后,系统实现流程如图 4 - 10 所示,首先由 ARM 判断系统是
以视频文件还是以摄像头作为输入,然后利用 Open-CV 函数逐帧读取视频,并通过 AXI
总线将视频数据存入全局缓存中开辟的读取队列,随后利用 Vitis-AI 提供的底层驱动
工具,对第三章设计的硬件加速器进行初始化,然后将全局缓存中的数据搬至加速核
进行处理,处理完的数据存至全局缓存中的显示队列,待读取队列中的数据处理完毕
再释放 FPGA 的硬件资源,最后再由 ARM 检测是否退出。

46
4 基于加速器的人体行为识别研究

开始 结束

Y
输入参数
参数量=4? N 异常提示 退出指令?
Y
数据源为文 VideoCaptrue 分析数据并显
件?
Y 打开视频文件 示结果

N
VideoCaptrue 释放模型硬件
打开成功?
打开摄像头 资源
N
Y N
分帧放入读取 打开失败 结果存入显示
队列 异常提示 队列

模型硬件初始 逐帧进行人体
ROI姿态估计
化 目标检测

图 4 - 10 软硬件协同加速总体流程图

4.3 系统硬件实现及测试
4.3.1 系统环境
硬件平台:本文采用了 Xilinx 公司的 ZCU102 评估板,该评估板具有基于 Xilinx
16nm FinFET+ 可编程逻辑架构的 Zynq® UltraScale+™ MPSoC 器件,提供一款四核
ARM® Cortex®-A53、双核 Cortex-R5F 实时处理器以及一款 Mali™-400 MP2 图像处
理单元。ZCU102 支持所有可实现各种应用开发的主要外设及接口。

图 4 - 11 ZCU102 评估板
软件系统:ZYNQ 中 PS 部分运行的是 Xilinx 公司提供的 PetaLiunx 系统,PetaLinux
提供完整的参考 Linux 发行版,面向 Xilinx 器件进行了集成和测试。该系统包含了 Vitis

47
西南科技大学硕士学位论文

AI Runtime 等进行 AI 推理必要的器件驱动程序。

4.3.2 系统测试
本文设计的系统搭建完成如下图所示。核心板卡为 ZCU102 开发板,核心板通过
DP 接口与显示器相连接以显示系统,通过 USB 接口连接鼠标、键盘等外设进行系统
操控,通过 USB 连接摄像头作为系统视频输入,板卡系统从 32G 的 SD 卡进行加载。

图 4 - 12 系统实物搭建
系统打开后界面如下所示,板卡搭载的是 Xilinx 提供的基于 Linux 开发的 PetaLinux
系统,该系统包含了运行 Vitis AI 必要的底层硬件驱动。

图 4 - 13 系统开机界面
(1)运行效果展示
本文从视频文件和摄像头输入两个方面进行了验证、测试,所有测试条件一致:视
频输入的尺寸大小为 432*240,摄像头输入图像尺寸大小为 1280*720。由于系统不带
截图功能,所以所有测试贴图均为手机对屏拍摄,所以存在一定模糊现象。本文首先对
未进行姿态分类前的人体姿态估计效果进行了测试,结果如图 4 - 14 所示。

48
4 基于加速器的人体行为识别研究

(a) 视频文件输入姿态估计效果 (b) 摄像头输入姿态估计效果

图 4 - 14 人体姿态估计运行效果
图(a)为视频文件输入的运行效果,此时显示帧率为 22.8FPS,稳定时可达 24.0FPS。
图中左边靠近画面的人物,由于身体不完全,因此出现了错误估计现象,同时他右边有
两个人因为遮挡严重并未被检测到,因此没有姿态估计输出。图(b)为摄像头输入时运
行效果,此时系统运行已达稳定,稳定帧率为 10.0FPS。由于摄像头角度较好,同时人
物姿势清楚,因此姿态估计结果贴合实际人体姿态。
加入姿态分类后,整个人体行为识别系统测试情况如下图 4 - 15 所示。图(a)仍为
视频文件输入,此时系统已达到稳定,显示帧率为 20.5FPS。图中人物头顶均有文字描
述其行为状态。图(b)为摄像头输入测试情况,此时系统已达稳定,显示帧率为 9.7FPS。
图中志愿者呈现下蹲姿势,其头上也有明显的下蹲标签。

(a) 视频文件行为识别效果 (b) 摄像头输入行为识别效果

图 4 - 15 人体行为识别运行效果
对比姿态估计与行为识别两组效果,加入姿态分类后,视频文件运行效果差了 3.5
帧左右,摄像头输入运行效果差了 0.4 帧左右。对比视频文件输入与摄像头输入,摄像
头作为输入时帧率始终比视频文件低,但受姿态分类计算影响较小,说明摄像头输入
帧率还能进行优化提高。
(2)相似工作对比
因为没有完全相同工作的文献进行对比,因此本文选择了几个类似的工作进行对
49
西南科技大学硕士学位论文

比。类似工作都是利用相似的硬件平台,基于卷积神经网络实现某一具体的任务。如表
4 - 3 所示,罗列了三个与本文工作相似的参考文献的实验。

表 4 - 3 相似工作对比
[62] [63] [64] 本文
任务 行人检测 跌倒检测 跌倒检测 行为识别
VGG-16+
算法 YOLOv4 Fall-Net VGG-16
GoogLeNet V1
I7-9700k+RTX
硬件平台 ZCU104 PYNQ-Z2 ZCU102
2080
1216×704 432×240
图像尺寸 - -
608×608 1280×720
0.148s 0.049s
速度 <5s 5.81s
0.068s 0.103s

相比于其他工作,本文工作相对保持领先。对比文献[62],由于作者对 YOLOv4 进
行了剪枝,但文中又没有具体提到整个网络的计算量,因此无法对比实际吞吐量。在对
方硬件平台优于本文的情况下,不考虑网络计算量的情况下,单就速度而言本文略优
于文献[62]。对比文献[63],该作者采用的网络模型是基于 LeNet-5 改进而来,比表中
其他模型都要小很多,同时选用的硬件平台资源也较其他组更少,因此无法对比衡量
其工作。对比文献[64],作者选用的网络模型与本文一样。但作者为了实验需求,将卷
积神经网络结构中的输入层进行了调整,从 224×224×3 改为 224×224×20,计算量
有所增加,但文中也并未给出实际计算量。同时本文也采用了两个卷积神经网络,对比
下来,本文加速效果还是优于文献[64]的 GPU 加速效果。

4.4 本章小结
本章首先在分析人体行为识别方法的基础上,采用人体姿态估计加姿态分类器的
方式实现人体行为识别。利用两个卷积神经网络以自顶向下的方式检测人体关节点,
通过训练、测试满足性能要求,同时利用 Vitis AI 平台完成了模型的定点化;随后利用
SVM 实现了三类人体行为的分类检测。完成方法设计后,根据系统框架结合硬件资源
与应用计算资源占用情况,进行任务切割,将计算密集型任务分配到 FPGA,利用 Vitis
AI 平台完成了整体软硬件协同加速系统设计,最后在 ZCU102 评估板上进行了系统验
证,验证结果对比其他相似工作,处于领先地位。

50
5 总结与展望

5 总结与展望

5.1 本文总结
随着卷积神经网络研究的深入,研究者为了进一步提高卷积神经网络的性能,卷
积神经网络的规模不断被扩大。在性能不断提升的情况下,对部署卷积神经网络的硬
件平台的算力提出了更大的考验。同时,因为卷积神经网络良好的性能表现,越来越多
的计算机视觉、自然语言处理任务采用该算法来实现。在数据中心、服务器等算力充足
的情况下,可以大规模部署卷积神经网络模型在 GPU 集群上实现具体推理任务;但是
在低功耗、高性能应用场景下,GPU 无法胜任。针对这种情况,本文提出了一种基于
FPGA 的卷积神经网络硬件加速方法,同时利用该方法针对人体行为识别任务设计了
一个软硬件协同加速的实时人体行为识别系统。具体内容如下:
(1)基于 FPGA 的卷积神经网络硬件加速方法研究。卷积神经网络模型文件大、
网络权重参数多、网络计算量大是卷积神经网络的主要特点,FPGA 片上资源不足以存
储或同时计算如此大规模的数据。因此,需要借助片外的内存资源存储参数,这也会直
接影响系统速度。首先,针对卷积神经网络中的卷积运算特点,提出三种并行计算方
法,通过并行计算降低卷积运算循环次数,有效的提高卷积速度。然后,根据卷积神经
网络层间数据流向,提出了一种并行流水线的处理方式,提高了内核资源复用效率。最
后,通过引入缓存结构以及改变数据缓存方式,实现了卷积计算的提速以及减少了数
据的反复读写,提高了读写效率。经过实际验证,利用本文提出的加速方法结合 Vitis
AI 平台,将 VGG-16 网络模型量化为 8bits 定点数据后,测得系统计算吞吐量为
615.9GPS。
(2)人体行为识别应用验证 FPGA 加速效果。传统人体行为识别方法可能受环境、
摄像头位置等因素的影响,从而导致识别效果不佳或整体系统鲁棒性不强。在引入卷
积神经网络过后,整体效果得到较大的提升,但随之而来的是参数量与计算量的急剧
增加。在摄像头侧保证低功耗的前提下,算力不足以支持的情况下被迫将识别任务转
向数据中心,这样也将占用大量的数据传输带宽以及存储容量,同时也不能实时进行。
因此有了低功耗、高算力的计算需求,基于 FPGA 的卷积神经网络硬件加速器能很好
的满足这种需求。因此,本文利用设计的 FPGA 卷积神经网络硬件加速器与 ARM 平台
下丰富的软件资源,设计了一个软硬件协同加速的人体行为识别系统,以此来解决该
实际需要,同时验证本文提出的硬件加速方法。经过设计与测试,基于硬件加速器的软
硬件协同加速人体行为识别系统,系统输入为 432*240 大小的视频文件时,系统稳定
工作帧率为 20.4FPS;输入为 1280*720 大小摄像头时,系统稳定工作帧率为 9.7FPS,
均能有效识别行走、站立、蹲下等动作。

51
西南科技大学硕士学位论文

5.2 工作展望
本文针对低功耗、高性能的应用场景需求,以 FPGA 为硬件平台,提出了一种卷
积神经网络硬件加速方法,设计了一个软硬件协同加速的人体行为识别应用系统,进
行了加速方法的验证,结果显示能取得较好的加速效果。但是本文工作仍存在着改进
的地方。
首先,本次卷积神经网络硬件加速方法是通过高层次综合的方式在硬件上实现的。
这种开发方式固然能加快硬件的开发,但是相对于寄存器传输级的硬件开发,这种方
式不能够完全利用好硬件资源,可能存在一定的资源浪费现象。其次,本文采用的 Vitis
AI 提供的量化工具对模型进行 8bits 定点量化,关于数据位宽对加速效果的影响没进
行探究。
本文在软硬件协同加速系统设计方面,在 FPGA 承担卷积神经网络计算的情况下,
能够提升系统整体速度,但因为加速器占用太多资源的情况下部分任务无法加载到
FPGA 上。同时对于 ARM 上的任务调度优化程度不够,导致实际应用系统效率下降严
重。
随着卷积神经网络性能的提升,将来会有更多的卷积神经网络被广泛部署在生活
各个方面,对硬件加速平台的要求也会越来越高。更加合理的硬件架构以及软硬件协
同调度机制也将是低功耗、高算力场景需求下的一个突破点。

52
致谢

致 谢

大学七年时光转瞬即逝,我的学生时代也将结束。回首硕士期间的学习与生活,一
路走来少不了身边老师、朋友、同学们的帮助,在此表示感谢。首先感谢我的导师姚远
程老师,本科就在创新班接受过姚老师的教导,遗憾本科没有上过姚老师的课,也有幸
研究生能拜入姚老师的门下。研究生学业的顺利结束和本论文的完成离不开姚老师的
指导和帮助。姚老师对待学术、对待科研的态度也深深地影响着我。其次感谢实验室秦
明伟老师、侯宝临老师,两位老师在本科创新班就在学习、工程上教导我了很多,同时
在研究生期间对我的科研、论文工作提出了不少意见与指导。感谢龙惠民、韩雪梅老师
对本文提出的撰写、修改意见。最后感谢王焕老师以及实验室其他老师在研究生期间
在生活、学习上对我的帮助。
有幸加入 ICSP 这个大家庭,感谢团队的各位同学。因为大家的陪伴,忙碌的研究
生生活中添加了几分温暖与趣味。感谢师兄师姐们在学术、工程以及生活上的帮助,让
我各方面得到了提升。感谢师弟师妹们在科研与生活中提供的各种帮助。感谢同届的
小伙伴们,平时在学习、科研、生活中的互帮互助,共同进步,在论文撰写期间的相互
鼓励与加油。在此,特别感谢任静、刘松嘉、张嘉庆、刘海文、高永翔、张子豪、吴洪
洋、陈治兆、曾韦、旷凤、王陈等同学的配合,为本文实验提供样本数据,让实验得以
顺利完成。本论文的顺利完成离不开大家提供的帮助。
感谢我的父母和亲人们一直以来对我帮助与支持,让我能全心全意投身在学习、
科研之中,无其他后顾之忧。感谢我女朋友对我的鼓励与支持,在学业中她是我的好榜
样激励我前进,在生活给我带来快乐与温暖。在此也祝愿她通过博士面试,今后在科研
的道路上披荆斩棘,在学术的海洋里乘风破浪!百尺竿头,更进一步!
最后,感谢参与本文审阅的各位评阅老师与专家,感谢您们对本文提出的宝贵意
见;感谢参加答辩的各位评审老师与专家,感谢您们对本工作做出的评价。

53
西南科技大学硕士学位论文

参考文献

[1] Lecun Y , Bottou L. Gradient-based learning applied to document recognition[J]. Proceedings of


the IEEE, 1998, 86(11):2278-2324.
[2] Krizhevsky A , Sutskever I , Hinton G. ImageNet Classification with Deep Convolutional Neural
Networks[J]. Advances in neural information processing systems, 2012, 25(2).
[3] Simonyan K , Zisserman A. Very Deep Convolutional Networks for Large-Scale Image
Recognition[J]. Computer Science, 2014.
[4] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the
IEEE conference on computer vision and pattern recognition. 2016: 770-778.
[5] You Y, Zhang Z, Hsieh C J, et al. Imagenet training in minutes[C]//Proceedings of the 47th
International Conference on Parallel Processing. 2018: 1-10.
[6] Jia X, Song S, He W, et al. Highly scalable deep learning training system with mixed-precision:
Training imagenet in four minutes[J]. arXiv preprint arXiv:1807.11205, 2018.
[7] Sun P, Feng W, Han R, et al. Optimizing network performance for distributed dnn training on gpu
clusters: Imagenet/alexnet training in 1.5 minutes[J]. arXiv preprint arXiv:1902.06855, 2019.
[8] Goyal P, Dollár P, Girshick R, et al. Accurate, large minibatch sgd: Training imagenet in 1 hour[J].
arXiv preprint arXiv:1706.02677, 2017.
[9] Akiba T, Suzuki S, Fukuda K. Extremely large minibatch sgd: Training resnet-50 on imagenet in
15 minutes[J]. arXiv preprint arXiv:1711.04325, 2017.
[10] Mikami H, Suganuma H, U-Chupala P, et al. ImageNet/ResNet-50 Training in 224 Seconds[J].
arXiv preprint arXiv:1811.05233, 2018.
[11] Chen T, Du Z, Sun N, et al. Diannao: A small-footprint high-throughput accelerator for ubiquitous
machine-learning[J]. ACM SIGARCH Computer Architecture News, 2014, 42(1): 269-284.
[12] Chen Y, Luo T, Liu S, et al. Dadiannao: A machine-learning supercomputer[C]//2014 47th Annual
IEEE/ACM International Symposium on Microarchitecture. IEEE, 2014: 609-622.
[13] Du Z, Fasthuber R, Chen T, et al. ShiDianNao: Shifting vision processing closer to the sensor[J].
Acm Sigarch Computer Architecture News, 2015, 43(3):92-104.
[14] Feng X, Zhou X, Liu D, et al. PuDianNao: A Polyvalent Machine Learning Accelerator[J].
Computer architecture news, 2015.
[15] Jouppi N P, Young C, Patil N, et al. In-Datacenter Performance Analysis of a Tensor Processing
Unit[J]. Computer architecture news, 2017, 45(2):1-12.
[16] Moloney D, Barry B, Richmond R, et al. Myriad 2: Eye of the computational vision storm[C]//
Hot Chips 26 Symposium. IEEE, 2016.
[17] Akopyan F, Sawada J, Cassidy A, et al. TrueNorth: Design and Tool Flow of a 65 mW 1 Million

54
参考文献

Neuron Programmable Neurosynaptic Chip[J]. IEEE Transactions on Computer-Aided Design of


Integrated Circuits and Systems, 2015, 34(10):1537-1557.
[18] 卢丽强,郑思泽,肖倾城,等. 面向卷积神经网络的 FPGA 设计[J]. 中国科学(信息科
学),2019,49(3):277-294.
[19] Shen J, You H, Wang Z, et al. Towards a Uniform Template-based Architecture for Accelerating
2D and 3D CNNs on FPGA[C]// the 2018 ACM/SIGDA International Symposium. ACM, 2018.
[20] Lu L, Yun L, Xiao Q, et al. Evaluating Fast Algorithms for Convolutional Neural Networks on
FPGAs[C]// IEEE International Symposium on Field-programmable Custom Computing Machines.
IEEE, 2017.
[21] Dicecco R, Lacey G, Vasiljevic J, et al. Caffeinated FPGAs: FPGA Framework For Convolutional
Neural Networks[C]// 2016 International Conference on Field-Programmable Technology (FPT).
IEEE, 2017.
[22] Aydonat U, O'Connell S, Capalija D, et al. An OpenCL(TM) Deep Learning Accelerator on Arria
10[C]// Acm/sigda International Symposium. ACM, 2017.
[23] Zhang C, Prasanna V. Frequency Domain Acceleration of Convolutional Neural Networks on
CPU-FPGA Shared Memory System[C]// the 2017 ACM/SIGDA International Symposium. ACM,
2017.
[24] Suda N, Chandra V, Dasika G, et al. Throughput-Optimized OpenCL-based FPGA Accelerator
for Large-Scale Convolutional Neural Networks[C]// Acm/sigda International Symposium. ACM,
2016:16-25.
[25] Zhang C, Fang Z, Zhou P, et al. Caffeine: Towards Uniformed Representation and Acceleration
for Deep Convolutional Neural Networks[C]// 2016 International Conference On Computer Aided
Design (ICCAD 2016). IEEE, 2016.
[26] Guan Y, Hao L, Xu N, et al. FP-DNN: An Automated Framework for Mapping Deep Neural
Networks onto FPGAs with RTL-HLS Hybrid Templates[C]// 2017 IEEE 25th Annual International
Symposium on Field-Programmable Custom Computing Machines (FCCM). IEEE, 2017.
[27] 朱明月. AlexNet 卷积神经网络的电路设计与 FPGA 验证[D]. 西安:西安电子科技大学,2021.
[28] 林朋雨. 基于 FPGA 的卷积神经网络加速优化与实现[D]. 西安:西安电子科技大学,2021.
[29] 郑俊伟. 基于 FPGA 的卷积神经网络并行加速设计研究[D]. 西安:西安电子科技大学,2021.
[30] 龚豪杰. 基于 FPGA 的卷积神经网络加速方法研究与实现[D]. 北京:中国科学院大学(中
国科学院国家空间科学中心),2021.
[31] 袁家政、刘宏哲、徐成、李扬志、米家辉. 基于深度学习的人体行为识别研究综述[C]// 中
国计算机用户协会网络应用分会 2020 年第二十四届网络新技术与应用年会. 2020.
[32] 朱国刚. 基于空间角度的人体行为识别研究与实现[D]. 北京:北京信息科技大学, 2014.
[33] 潘帅. 基于 RGB 视频和三维骨骼序列的跨视角人体行为识别研究[D]. 西安:西安电子科
技大学, 2020.

55
西南科技大学硕士学位论文

[34] Ji S, Xu W, Yang M, et al. 3D Convolutional Neural Networks for Human Action Recognition[J].
IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 35(1):221-231.
[35] Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional
networks[C]//Proceedings of the IEEE international conference on computer vision. 2015: 4489-4497.
[36] Carreira J, Zisserman A. Quo vadis, action recognition? a new model and the kinetics
dataset[C]//proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017:
6299-6308.
[37] Xu H, Das A, Saenko K. R-C3D: Region Convolutional 3D Network for Temporal Activity
Detection[C]// IEEE Computer Society. IEEE Computer Society, 2017.
[38] Xie S, Sun C, Huang J, et al. Rethinking spatiotemporal feature learning: Speed-accuracy trade-
offs in video classification[C]//Proceedings of the European conference on computer vision (ECCV).
2018: 305-321.
[39] 田翔, 张良. 改进的 R-C3D 时序行为检测网络[J]. 信号处理, 2021, 37(3):9.
[40] Simonyan K, Zisserman A. Two-stream convolutional networks for action recognition in
videos[J]. Advances in neural information processing systems, 2014, 27.
[41] Wang L, Xiong Y, Wang Z, et al. Temporal Segment Networks: Towards Good Practices for Deep
Action Recognition[J]. Springer, Cham, 2016.
[42] Asghari-Esfeden S, Sznaier M, Camps O. Dynamic Motion Representation for Human Action
Recognition[C]// 2020 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE,
2020.
[43] Dai C, Liu X, Lai J. Human action recognition using two-stream attention based LSTM networks
- ScienceDirect[J]. Applied Soft Computing, 86.
[44] 揭志浩, 曾明如, 周鑫恒,等. 结合 Attention-ConvLSTM 的双流卷积行为识别[J]. 小型微型
计算机系统, 2021, 42(2):4.
[45] Karpathy A, Toderici G, Shetty S, et al. Large-Scale Video Classification with Convolutional
Neural Networks[C]// IEEE Conference on Computer Vision and Pattern Recognition, 2014, pp. 1725-
1732.
[46] Donahue J, Hendricks L A, Rohrbach M, et al. Long-term Recurrent Convolutional Networks for
Visual Recognition and Description[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence,
2017, 39(4):677-691.
[47] Wang L, Xu Y, Cheng J, et al. Human Action Recognition by Learning Spatio-Temporal Features
With Deep Neural Networks[J]. IEEE Access, 2018:17913-17922.
[48] Nj A, Nb B, Msb C. A new hybrid deep learning model for human action recognition[J]. Journal
of King Saud University - Computer and Information Sciences, 2020, 32( 4):447-453.
[49] Majd M, Safabakhsh R. Correlational Convolutional LSTM for human action recognition -
ScienceDirect[J]. Neurocomputing, 2020, 396:224-229.

56
参考文献

[50] Lin J, Gan C, Han S. TSM: Temporal Shift Module for Efficient Video Understanding[C]// 2019
IEEE/CVF International Conference on Computer Vision (ICCV). IEEE, 2019.
[51] Li Y, Ji B, Shi X, et al. Tea: Temporal excitation and aggregation for action
recognition[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern
Recognition. 2020: 909-918..
[52] Sudhakaran S, Escalera S, Lanz O. Gate-Shift Networks for Video Action Recognition[C]// 2020
IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2020.
[53] 刘圣杰, 何宁, 王程, 等. 2D 人体姿态估计研究进展[J]. 中国计算机用户协会网络应用分
会 2021 年第二十五届网络新技术与应用年会论文集, 2021.
[54] Zeng H, Chen R, Zhang C, et al. [ACM Press the 2018 ACM/SIGDA International Symposium -
Monterey, CALIFORNIA, USA (2018.02.25-2018.02.27)] Proceedings of the 2018 ACM/SIGDA
International Symposium on Field-Programmable Gate Arrays - FPGA \"18 - A Framework for
Generating High Throughput CNN Implementations on FPGAs[C]// Acm/sigda International
Symposium. ACM, 2018:117-126.
[55] Guo K, Sui L, Qiu J, et al. Angel-Eye: A Complete Design Flow for Mapping CNN Onto
Embedded FPGA[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and
Systems, 2017:1-1.
[56] Geng T, Wang T, Sanaullah A, et al. A Framework for Acceleration of CNN Training on Deeply-
Pipelined FPGA Clusters with Work and Weight Load Balancing[C]// 2018 28th International
Conference on Field Programmable Logic and Applications (FPL). 2018.
[57] Ma Y, Cao Y, Vrudhula S, et al. Optimizing the Convolution Operation to Accelerate Deep Neural
Networks on FPGA[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2018.
[58] Li S, Luo Y, Sun K, et al. A Novel FPGA Accelerator Design for Real-Time and Ultra-Low Power
Deep Convolutional Neural Networks Compared with Titan X GPU[J]. IEEE Access, 2020, PP(99):1-
1.
[59] Lin T Y, Maire M, Belongie S, et al. Microsoft COCO: Common Objects in Context[J]. Springer
International Publishing, 2014.
[60] Szegedy C, Liu W, Jia Y, et al. Going Deeper with Convolutions[J]. IEEE Computer Society, 2014.
[61] Cortes C, Vapnik V. Support-vector networks[J]. Chemical Biology & Drug Design, 2009,
297(3):273-297.
[62] 邓琳. 面向铁路行人检测的轻量化 CNN 模型与 FPGA 硬件加速实现[D]. 北京:北京交通
大学,2021.
[63] 姚刚. 基于 CNN 的单目标摔倒检测算法研究及 FPGA 实现[D]. 哈尔滨:哈尔滨理工大
学,2021.
[64] 孙博文. 基于卷积神经网络的室内跌倒行为实时检测系统的开发[D]. 沈阳:沈阳理工大
学,2021.

57
西南科技大学硕士学位论文

攻读学位期间取得的研究成果

[1] 李瑶,马兴成,刘彬宇. 高速视觉测量分析仪原型系统. 中国研究生电子设计竞赛


全国总决赛团队三等奖. 中国学位与研究生教育学会,中国科协青少年科技中心,
中国电子学会. 2020.08
[2] 刘彬宇,刘松嘉,李瑶. 基于 alveo 加速卡的人体行为检测系统. 中国研究生电子设
计竞赛西南分赛区团队三等奖. 中国学位与研究生教育学会,中国科协青少年科技
中心,中国电子学会. 2021.07
[3] Songjia Liu, Yuancheng Yao, Binyu Liu. Saliency target detection in complex video
environment based on generation countermeasure network[R]. Proc. SPIE 12079, Second
IYSF Academic Symposium on Artificial Intelligence and Computer Engineering,
1207928 (1 December 2021).
[4] Songjia Liu, Yuancheng Yao, Binyu Liu, Rui Zhu, Jing Ren. Multi-band discriminant
speech synthesis analysis based on Natural Language Processing.

58

You might also like