1、wwwele169com|59软件开发0 引言在目前的行人检测中系统研发中,检测速度和检测精度是制约车载识人发展的两大难点和痛点。基于视觉的行人检测技术是近年来被重点关注和研究的一项关键技术。在多种传感器中,视觉传感器具有更丰富的信息量、更高的精确性、功能更加丰富以及更合理的成本等优势。文献 1 出了一种适用于多样复杂环境下多尺度行人实时检测的方法,该方法可自适应提取可见光或红外背景下的多尺度行人,满足实际的检测精度;文献 2 针对基于视频行人检测的深度学习检测框架计算复杂度较高的问题,提出一种改进的SSD检测框架,从而实现计算量的减少。文献3提出了一种头部感知行人检测网络(HAPNet),提
2、高了遮挡条件下的行人检测性能。针对检测速度慢这一痛点,随着边缘计算的发展,采取在车辆终端部署边缘设备的方式,不仅能够实现直接在边缘设备上处理图像数据、推断计算进行检测,还能通过一定的技术手段达到行人检测这一应用对高标准实时性的要求。本文基于 RFB 算法思想,对其进行改进,设计了 RFBNano算法,并将其部署在边缘设备上,改进的算法有效地提高了检测实时性,达到精确性和实时性的有效平衡表现。1 基于 RFB 的行人检测模型 1.1 RFB 模块在人类的视觉皮层中,群体感受野(Population Receptive Field,PRF)的规模大小是视网膜图中离心率的函数,虽然各个感受野之间有差
3、异,但是群体感受野的规模大小与离心率都呈正相关趋势。刘等人4受到人类感受野 RF结构的启发,提出了 RFB(Receptive Field Block),以加强轻量级 CNN 模型中对于深层特征的提取能力,如图 1所示,RFB 设计了多分支结构,并且在各分支上设计了不同尺度的常规卷积和空洞卷积,并通过 concat(衔接)和1*1 卷积,减少特征图的通道数,生成最终的特征表达。1.2 VGG16 骨架网络模型VGG16 由 5 组共 13 个卷积层、3 个全连接层和 5 个池化层组成。由于一个 5*5 的卷积可以由两个 3*3 卷积串联实现,且感受野大小仍为 5*5,因此整个 VGG16 网络
4、均使用了同样尺寸大小的 3*3 卷积核进行堆叠,这样的连接方式既减少了网络模型的参数量,多层的 ReLU 激活函数也使得网络有更多的非线性变化,从而使得 CNN 的特征提取能力更强;此外,每组卷积层后都使用了 2*2 尺寸的最大池化层,以缩小特征图尺寸,降低计算量;网络最后还有 3个全连接层,其中前两个全连接层各含有 4096 个神经元,通过增加的 dropout 机制,随机丢掉一些全连接层节点,达到防止过拟合的作用,最后一个全连接层输出图片中每个类别的概率,图片的最终分类结果为概率最大的类别。2 RFB-Nano 行人检测模型 2.1 RFB-Nano 检测模型本文提出的 RFB_Nano
5、检测模型如图 2 所示,相对RFBNet 而言,对 VGG16 的特征提取网络进行通道上的削减以及卷积数量的减少,添加了 1*1 卷积层,使得模型参改进 RFB 算法的车载实时行人检测算法研究刘婷婷,王赛,凌云,郁翰文(南京信息工程大学 自动化学院,江苏南京,210000)基金项目:南京信息工程大学无锡校区研究生创新实践项目(WXCX202017)。摘要:针对目前行人检测系统检测精度低以及检测实时性不高的问题,提出了一种改进RFB算法的车载实时行人检测算法RFB-Nano。RFB-Nano采取多尺度特征融合机制,减少计算量。对特征提取网络VGG16进行模型压缩,减少至一个RFB模块,添加1*1
6、卷积、拟归一化BN层,在保证精度的前提下减少参数量;并在损失函数中引入类加权交叉熵增加分类的性能。最后将设计的RFB-Nano算法与其他算法在同一环境下进行实验对比,实验结果表明改进的算法有效地提高了检测实时性,达到精确性和实时性的有效平衡表现。关键词:深度学习;边缘设备;行人检测;RFBNet图 1 RFB 模块DOI:10.16589/11-3571/tn.2023.03.01760|电子制作 2023 年 2 月软件开发数大幅度减少;添加了BN层,使得模型训练收敛速度加快;只使用了一个改进的 RFB 模块,在保证不牺牲性能的前提下使得网络更加简单。在不同层的多尺度特征融合机制中,在保证精
7、度不损失的前提下减少参数量。2.1.1 改进的 RFB 模块本文对 RFB 模块的第一个卷积分支进行改进,如图 3所示,增加了一个 3*3 卷积层,并且将原来 3*3 空洞卷积因子设置为 2。激活函数层ReLUConcat衔接1*1卷积3*3空洞卷积扩张率=53*3卷积3*3空洞卷积扩张率=23*3空洞卷积扩张率=33*3卷积3*3卷积3*3卷积1*1卷积1*1卷积1*1卷积之前的层残差结构图 3 改进的 RFB 模块2.1.2 特征提取网络的压缩本文提出的 RFB_Nano 检测模型,首先是对特征提取网络的压缩,将 VGG16 中的全连接层替换为卷积层,这一点会大大的提升速度,因为 VGG
8、中的 FC 层都需要大量的运算,有大量的参数,需要进行前向推理,并自定义卷积层,直接使用卷积层进行检测。在不损失网络性能的前提下,尽可能地提高检测推断时的速度,以达到实时处理的效果。根据上述特征提取网络中含有大量卷积层,每组卷积都含有大量的卷积核数目的网络特性,本文采取削减网络通道和卷积层数量的方式:削减每一层的卷积核数目为原来的一半,且最多卷积核数目为256;且在第三组至第五组的卷积层中各去掉了一个 3*3 卷积层,在第五组还去掉了一个最大池化层。2.1.3 1*1 卷积在 RFB_Nano 模型的网络中从第三层开始,在每组卷积层中的 3*3 卷积层之前都添加了一层 1*1 卷积层。1*1
9、卷积即为卷积核尺寸为 1 的卷积,使用 1*1 卷积加在常规卷积后,加深加宽网络结构,改进网络的特征提取抽象表示。1*1 卷积的具体作用有如下三点:(1)升(降)维一般来说,对于尺寸大小为 n*n(n1)的卷积核,通常还要考虑边缘补 0 的个数以及每次卷积移动的步长,但是当卷积核尺寸为 1*1 时,可以根据具体的需求控制卷积核的数量,从而实现进行降(升)维。(2)增加非线性1*1 卷积核的卷积过程相当于全连接层的计算过程,并且通过 1*1 卷积层还加入了非线性激活函数,从而增加了网络的非线性,使得网络可以表达更加复杂的特征。(3)减少模型参数在常见的检测模型中,由于需要进行较多的卷积运算,计算
10、量十分庞大,因此可以通过引入 1*1 卷积,在保证精度的情况下减少计算量。以 GoogleNet 中的 Inception 为例,图 4(a)是原始的Inception 模块,图 4(b)是加入 1*1 卷积层进行降维后的Inception。输入的特征图大小为 28*28*192,左图的各个卷积核大小分别为 1*1*64、3*3*128、5*5*32,右图中在 3*3、5*5 卷积前加入的 1*1 的卷积核的通道数分别为 96 和 16。则图 a 中该层的参数量大小为:1*1*192*643*3*192*1285*5*192*32387072+=(1)图 b 中该层的参数量大小为:1*1*19
11、2*641*1*192*963*3*96*128+1*1*192*165*5*16*32157184+=(2)图 2 RFB-Nano 检测模型wwwele169com|61软件开发由此可见整个参数量大约减少了三分之一。Connat衔接1*1卷积3*3卷积5*5卷积3*3最大池化之前的层(a)原始 Inception 模块之前的层1*1卷积3*3卷积5*5卷积1*1卷积1*1卷积1*1卷积3*3最大优化之前的层(b)降维后的 Inception 模块图 42.1.4 BN 层BN 层主要解决的问题是当低层网络在训练时由于参数的更新导致后续网络层输入数据分布的变化。它对每一层的输入数据先进行归一
12、化的预处理以后,再进入网络的下一层。假设某层神经网络具有 d 维的输入数据为:()()()1dXxx=(3)则对于该网络层输入数据的归一化预处理方法为:()()()()()()kkkkxE xxVar x=(4)在上式中,网络训练采用的是batch随机梯度下降方法,()kx表示该批次训练数据中第 k 个神经元,()()kE x表示网络中每一批次的参与训练的神经元()kx的平均值,()()kVar x表示每一批训练数据神经元()kx的方差。为了防止上式的归一化方法影响到本层学习到的特征,引进了一对可学习的重构参数、,且每个神经元()kx都有一对参数()k、()k:()()()()kkkkyx=+
13、(5)当()()()()()()kkkkVar xE x=时,归一化预处理后的特征可以还原到本层学习到的特征,避免了由于归一化操作而造成本层学习到的特征分布的改变。综上所述,BN 层的前向传播的过程即为:11miixm=(6)()211miixm=(7)2iixx=+(8)(),iiiyxBNx=+=(9)其中,m 为 mini-batch 的大小。在本文提出的 RFB_Nano 检测模型中,一方面由于 BN层具有快速训练收敛的特性,因此选择了较大的初始学习率,学习率的衰减也很快,相较于 RFBNet 来说大幅度提升了训练速度,减少了对初始化的依赖程度;另一方面,由于BN 层具有提高网络泛化能
14、力的特性,省去了 drop out 层以及参数的选取问题。2.1.5 多尺度特征融合机制在本文提出的 RFB_Nano 中,如表 1 所示,分别在conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2 的特征图上的每个单元取 4、4、4、4、4、3 个default box,对于 300*300 的输入,则共会得到 38*38*4+19*19*4+10*10*4+5*5*4+3*3*4+1*1*3=7759 个 default box。由此可见,每张图片的 default box 数量有了一定幅度的减少,从而减少了网络模型的计算量。表1 SSD不同层的特
15、征图尺寸及Prior Box数量层名特征图尺寸Prior Box数量建议区域总量Conv4_338*3845776Conv719*1941444Conv8_210*104400Conv9_25*54100Conv10_23*3436Conv11_21*133总计7759 2.2 RFB_Nano 损失函数2.2.1 RFBNet 损失函数RFBNet 的损失函数与 SSD 一致,默认框 default box首先和真实框 ground truth 按照一定的原则进行匹配,接着根据匹配到的一对boxes分别计算分类损失和定位损失。2.2.2 RFB_Nano 损失函数本文基于 RFBNET 的损
16、失函数进行了改进,设计了RFB_Nano 的损失函数,RFB_Nano 中的定位损失采用Smooth L1 Loss,为了平衡正负样本的个数,采用的方法是 Hard Negative Mining。在 RFB_Nano 中除了 Hard 62|电子制作 2023 年 2 月软件开发Negative Mining,还采用了类加权交叉熵进行一定的分类性能上的改进。由于目标检测问题中背景占主导地位,因此需要处理不同类别之间的严重失衡问题。在图像分类任务中,唯一可能的错误是前景类别之间的错误分类,但是在目标检测任务中,错误多发生在前景和背景的区分中,而不是前景中几类物体之间的分类中。在行人检测中,由于行人这类物体在背景中所占比例较小,为了解决这个问题,采用类加权交叉熵作为分类损失:1TicjjLylogS=(10)在背景类中使用较大的权重,在其他类中使用相对较小的权重,例如,在本文选取的数据集上的实验中,背景类使用01.5=,行人类使用1i=。3 行人检测系统设计 3.1 硬件系统本文实验采取了英伟达公司推出的新一代人工智能计算机 Jetson Nano,它是一款小型、低功耗但功能非常强大的