APP下载

卷积神经网络在目标检测中的应用及FPGA实现

2020-04-07王礼贺杨德振李江勇

激光与红外 2020年2期
关键词:小数红外卷积

王礼贺,杨德振,李江勇,贾 鹏,柴 欣

(华北光电技术研究所,北京 100015)

1 引 言

在机载下视条件下,地面背景复杂,由于在远距离情况下,目标变为小目标,可利用的有效信息比较少,使得目标很容易淹没在背景杂波上。如图1所示,目标嵌入在背景中,几乎与地物其他目标没有任何区别。采用传统检测方法很难正确检测目标。

目前基于卷积神经网络的目标检测算法发展迅速,被广泛应用于计算机视觉方面[1]。将卷积神经网络应用到红外弱小目标检测以解决目前的传统检测方法遇到的困难,提出了基于卷积神经网络的目标检测算法。用于解决复杂背景下红外弱小运动目标的检测,并且完成以FPGA为核心的算法硬件移植,从而实现复杂背景下机载下视红外小目标的检测[2]。

2 卷积神经网络

卷积神经网络本质是一种输入到输出的映射,与传统的算法相比,它的优点在于能够表达出大量输入到输出的映射关系,不需要精确的数学计算公式。卷积神经网络依靠系统的复杂程度,通过自动调整内部的大量的节点之间的链接关系达到处理信息的目的。

图1 CNN结构

典型卷积神经网络由卷积层、池化层和全连接层三部分组成[3]。其中卷积层是卷积神经网络的核心基石,我们利用卷积层对图像层层卷积得到不同的特征图像。加入池化层的目的是通过减少网络的参数降低计算量,简化模型的复杂度。全连接层用于把局部特征变成全局特征,通过计算输入和权重向量之间的点积,加上偏置通过函数输出。

3 模型的训练和仿真

3.1 模型选择

我们在进行卷积神经网络的训练前需要选择一个合适的CNN网络模型,综合考虑到模型的复杂度和精确度,并且方便FPGA进行算法移植,我们选择了LeNet-5网络。 LeNet-5网络最初是用于手写识别的卷积神经网络[4],是早期卷积神经网络中最具代表性的实验网络之一。虽然LeNet-5网络结构简单,但是它同样具备了一个深度学习的所有模块:卷积层,池化层,全连接层,可以说是其他深度学习模型的基础。并且简单的结构网络可以减少训练时间,有利于算法的硬件移植,减轻FPGA的资源需求。

图2 LeNet-5 网络结构

3.2 模型学习

确定训练用的CNN网络之后开始进行网络训练[5],我们训练用的平台为ubuntu操作系统,采用tensorflow框架训练,编程语言使用当下热门的python语言。训练使用的优化算法为ADAM梯度下降算法,学习率为0.001,训练次数为20万次。我们最终得到一套能够对红外弱小目标进行前景掩码提取的检测算法。

认为“人工智能不应具有法律人格”的重要论点之一,是认为人工智能和人存在根本性不同,人工智能不可能成为人。[注]熊琦:《人工智能生成内容的著作权认定》,《知识产权》2017年第3期,第3—8页;王迁:《论人工智能生成的内容在著作权法中的定性》,《法律科学(西北政法大学学报)》2017年第5期,第148—155页;罗祥、张国安:《著作权法视角下人工智能创作物保护》,《河南财经政法大学学报》2017年第6期,第144—150页。根据现行法律制度和法学原理,除了法人可具有拟制法律人格外,法律人格只有自然人才能享有,故人工智能不可能具有法律人格。

3.3 模型仿真结果

将采集到的目标红外图像输入算法模型进行仿真,图3为输入的原始图像,算法仿真效果如图4所示。

图3 原始图像

图4 仿真输出结果

4 FPGA硬件实现

4.1 卷积层的实现

4.1.1对小数的定点处理

由于训练的模型参数都是浮点数,在FPGA中需要用整数来表示这些浮点小数。得到小数均为小于1的八位正负小数,根据实际情况,设置一个17位的Reg[16:00]型寄存器来表示小数。将小数放大2的16次方,取整数,得到的误差足够小,不会影响后续卷积计算结果,将取到的整数赋值给Reg[15:00],如果小数为负数Reg[16]置1表示,小数为正数则Reg[16]置0。 在图像像素值与卷积核进行卷积时,首先对卷积参数进行判定,如果Reg[16]为1,那么结果值得高位同样置1,反之置0,用以区分正负。小数的定点处理方法如图5所示。

图5 小数的定点处理

4.1.2 图像卷积窗口的实现

网络由5个卷积层组成,其中每个卷积层包含的卷积核数量不同,但是卷积核大小均为3×3。由于硬件系统利用FPGA的GPIO进行红外图像数据的采集,串行输出导致每个时钟沿流入一个像素值,为了实现3×3窗口卷积操作,需要对一维像素进行缓存,生成一个3×3大小的图像矩阵。设置9个8位Reg[07:00]型寄存器P11,P12 P13,P21,P22 P23,P31,P32,P33。用来存储矩阵像素值。每个时钟上升沿触发时将PN1>=PN2、PN2>=PN3。

采用Vivado软件中的Shift Ram移位寄存器IP核,由于输入图像数据大小为256×320×8。因此我们使用两个深度为256,宽度为8的移位寄存器。Vivado生成矩阵如所图6所示。

图6 Vivado生成矩阵

为了保证卷积层处理完成之后的特征图像与原图大小保持一致,在原图像进行卷积操作时,需要在图像右方、下方各增加两列、两行0元素。因此当每一行数据的第一列进入时,Pn2、Pn1均为0元素,每一行数据的第二列进入时,P1均为0。矩阵波形如图7所示。

图7 矩阵波形

4.2 BN层的实现

4.2.1 FPGA实现正则化的过程

算法中每个卷积层都链接了一个BN层,BN层对提取到的特征进行正则化。图像的正则化需要FPGA求出图像的均值mean,图像的方差var。然后带入正则化公式:

(1)

FPGA处理图像数据是以像素点为单位,求解均值mean,方差var时需要用到图像缓存模块,在这个过程中,需要对均值结果延时一帧图像输出,对得到的特征图像进行连续缓存两帧输出,FPGA实现正则化流程图如图8所示。

图8 FPGA实现正则化流程图

4.2.2 值mean的求解

一副256×320的红外图像共81920个8位像素值,同17位卷积核参数卷积后会得到81920个25位结果,要想求出特征图均值,首先将这些结果进行累加,卷积结果有正数和负数,进行累加先同样进行判定,程序步骤如下;

Step1:定义两个变量reg1[31:00],reg1[31:00]分别对卷积结果的正负值累加。

Step2:对卷积层输出的结果data高位进行判断,判断data[25]是否为1。

Step3:将负值结果累加赋值给reg1,正值结果累加赋值给reg2。

Step3:将负值结果累加赋值给reg1,正值结果累加赋值给reg2。

Step4:求reg1,reg2相减,得到的结果除以65536得到均值mean。

4.2.2 方差var的求解

求解方差时需要用到均值mean,卷积特征图,带入方差求解公式

(2)

均值结果的求解需要遍历整个卷积特征图,因此均值结果相对于卷积特征图延时一帧,需要对特征图进行延时一帧处理。过程如图8所示。

程序过程如下:

Step1:首先对卷积特征图结果x_1和均值x高位进行判断是否是正负。

Step2:均为正值或均为负值求两者绝对值之和进行平方,一整一负求两者绝对值之差再平方。

Step3:对平方值累加求平均,得到方差s2。

特征图缓存模块使用Vivado软件的BLOCK RAM IP核来实现,由于特征图是大小为320×256×16,因此我们选用的模块设置深度为65536,数据宽度为16位。

5 FPGA处理结果

将采集到的目标红外图像输入,经过FPGA处理结果如下:

图9(a)、图10(a)左侧图像为红外原始图像,方框就是我们需要检测出的红外弱小目标,从图像中可以看出,目标几乎完全淹没在复杂的背景中,加上由于距离较远,目标的信号较弱,给目标检测带来很大的困难。通过算法对红外图像进行处理,得到了图像的前景掩码(图9(b)、图10(b)),从前景掩码图像中可以直观看出目标被检测出来,结果证明基于卷积神经网络的深度学习算法能够有效在复杂背景条件下检测出红外弱小目标。

图9 原始图像与FPGA结果对比

图10 第二组原始图像与FPGA结果对比

并且通过硬件平台资源使用表(表1)可以看出FPGA处理一帧图像的时间为4 ms,能够满足工程应用中实时性检测的要求。硬件平台选用Kintex 7 FPGA系列。资源使用如表1所示。

表1 硬件平台资源使用

6 结束语

基于卷积神经网络的目标检测算法结构简单,在实际检测中能够做到实时性检测:经过大量的学习训练,在面对复杂的地面背景,能够保证检测效果的准确性:算法的逻辑简单,可以在以FPGA为核心的硬件平台上实现,并降低硬件功耗。后续我们将继续完善算法,降低资源使用率。完成基于卷积神经网络的目标检测算法,并且在面对复杂背景下依旧能够检测出红外弱小目标。

猜你喜欢

小数红外卷积
小数加减“四不忘”
网红外卖
基于3D-Winograd的快速卷积算法设计及FPGA实现
闪亮的中国红外『芯』
我国古代的小数
小数的认识
小数的认识
卷积神经网络的分析与设计
从滤波器理解卷积
8路红外遥控电路