基于深度学习的实时识别硬件系统框架设计基于深度学习的实时识别硬件系统框架设计
设计了一种基于深度学习的实时识别硬件系统框架。该系统框架使用Keras完成卷积神经网络模型的训练并提取
出网络的参数,利用ZYNQ器件的FPGA+ARM软硬件协同的方式,使用ARM完成对实时图像数据的采集、预处
理及显示,通过FPGA实现卷积神经网络的硬化并对图像进行识别,再将识别结果发送至上位机进行实时显示。
系统框架采用MNIST和Fashion MNIST数据集作为网络模型硬化试验样本,实验结果表明,在一般场景下该系
统框架能够实时、准确地完成图像数据的获取、显示及识别,并且具有可移植性高、处理速度快、功耗低的特
点。
0 引言引言
近年来随着深度学习的迅速发展
[1-3]
,卷积神经网络(Convolutional Neural Network)被广泛使用
[4-5]
,特别是在图像识别
场景中的应用
[6-7]
。为满足更多场景应用,需要设计出一种能够根据实际场景需求可替换不同CNN网络模型的系统框架。虽然
CNN的使用广泛,但是目前应用CNN的硬件平台主要是通过普通处理器CPU来实现的
[8-9]
,其电路架构并不适合作为CNN实
现的计算平台,因为CNN当中的模型结构,其内部的每层卷积运算都只与当前卷积层的卷积核相关,与其他层的运算是互相
独立的,所以CNN的结构是一种并行的,使得CPU整体的计算效率较低。而现场可编程门阵列(FPGA)作为一种高度密集型计
算加速器件,具有可重配置特性,利用硬件描述语言完成相关结构设计实现,因此可使用FPGA的硬件结构特性实现CNN的计
算加速。
ZYNQ是Xilinx公司设计的一种FPGA+ARM的芯片,该芯片通过使用AXI总线互联技术将FPGA与ARM整合在一起,从而可
充分发挥出两种器件结构的优势。
本文使用ZYNQ作为实现平台,采用软硬件协同的方式,通过ARM完成输入图像数据的实时采集、存储和显示,利用FPGA
的硬件电路特性完成卷积神经网络的硬化实现,设计出了一种基于深度学习的实时识别硬件系统框架,从而可根据实际需求选
择合适的网络模型。为了验证系统硬件框架设计的功能性,本文采用MNIST和Fashion MNIST数据集训练的两个CNN网络模
型作为系统框架的功能验证。整体系统框架结构如图1所示。
1 图像采集存储及显示图像采集存储及显示
1.1 图像采集存储图像采集存储
系统设计使用OV7670 CMOS摄像头进行系统视频图像数据的实时获取,并且将其分辨率配置为320像素×240像素,输出数
据为RGB565色彩格式。由于不同模块之间的工作时钟不同,因此需要根据图像采集模块的控制信号和摄像头的时钟信号,将
采集到的实时视频数据流存储至双口FIFO中进行跨时钟域处理,然后通过数据总线将图像数据存储在ZYNQ的双端口的BRAM
当中,从而使得整个系统能够对采集的图像数据进行读取和处理。
1.2 图像显示图像显示
系统框架设计中使用ILI9341作为控制芯片,分辨率为320×240的2.8寸TFT显示屏作为视频图像数据的输出显示,然后通过
SPI总线接口协议完成对摄像头模块获取到的每一帧图像数据进行发送传输。图像显示模块通过数据总线将TFT显示屏的
ILI9341控制模块连接在双端口的BRAM上,根据双口BRAM当中的存储数据量进行图像数据的高速读取,将读取到的图像数
据存储至双口FIFO当中进行存储及读取,从而实现将摄像头采集的视频图像数据进行显示。同时根据CNN网络模型的帧控制
信号及运算完成控制信号,将图像数据读取至CNN网络模型当中进行运算识别,识别完成后也将运算结果更新至双端口FIFO
进行结果输出显示。
2 卷积神经网络硬件设计及实现卷积神经网络硬件设计及实现
系统框架中的可替换网络模块设计实现了两个结构一致的CNN网络模型,其结构如图2所示,该CNN网络模型结构由1个输
入层、6个卷积层、3个池化层、1个全连接层和 1个输出层共12层构成。