刘 宽,郎 磊
(1.郑州轻工业大学 计算机与通信工程学院,郑州 450001;2.华中师范大学 物理科学与技术学院,武汉 430079)
近年来,深度学习作为人工智能技术中发展最快、应用最广、效果最佳的技术,受到广泛关注[1].目前这项技术被广泛应用于计算机视觉、自然语言处理、数据挖掘等领域中,并在各个领域之中均取得了十分优异的成绩[2~5].目标检测作为计算机视觉领域的研究重点[6~7],一直以来也是研究的重中之重,尤其是基于深度卷积神经网络的目标检测技术.
基于深度卷积神经网络的目标检测算法通过学习用户标定的训练集,不断优化卷积神经网络中各项参数,最终实现自动提取图像特征信息的目的,获得目标的位置和种类.这种算法具有较强的学习能力,精度相对于其他方法提升较大且鲁棒性强.如今,该算法主要分为两大类:一类是基于区域的目标检测算法,另一类是基于回归的目标检测算法[8].其中,第1类算法的典型模型为Faster R-CNN(Faster region based convolutional neural network)模型[9]和R-FCN(region-based fully convolutional networks)模型[10],该类算法往往是两个阶段的,首先需要得到候选区域,然后进行分类与回归的预测,具有较高的检测准确度,尤其对小目标的检测,但此类算法往往单个模型体积过大,不适用于嵌入式平台的设备中.第2类算法的典型模型为YOLO(You Only Look Once)模型[11]和SSD(Single Shot mulitibox Detecor)模型[12],该类算法仅用一步直接实现对目标位置的预测和分类,模型体积相对较小,但参数对于嵌入式平台来说,还是未达到应用标准.
基于回归的目标检测算法主要由基础网络层和回归检测层两部分组成,基础网络层的主要任务是提取输入图像中的重要特征信息,再由回归检测层完成对目标位置和类别的预测与识别.基础网络层对整个网络模型的影响最大,尤其体现在检测速度、识别精度和尺寸大小等方面.当前,谷歌公司、旷视科技公司、伯利克大学等公司或高校的研发人员[13]提出的基于不同卷积运算的紧凑的卷积神经网络,缩小了网络尺寸,极大地降低了模型所需运算量,同时保证了具有较高的预测准确度.
为了在嵌入式平台上实现目标检测精度和检测速度方面的良好平衡,本文对经典目标检测模型SSD进行了深入研究,基于SSD模型结构特点,结合轻量级卷积神经网络ESPNet[14]和轻量化后的反卷积模块[15],搭建了轻量化目标检测模型,在网络尺寸和准确度上进行均衡,为目标检测应用于资源匮乏的嵌入式设备提供可能性.
SSD模型是以VGG(visual geometry group)图像分类算法[16]为基础卷积层,一种直接预测目标位置和类别的经典目标检测模型.算法首先利用基础网络层提取图像特征的优势,快速定位重要信息特征;随后设计并使用回归检测层对目标的位置和类别信息的特征进一步预测,回归检测层由4个额外卷积层组成,用于输出不同尺度的特征图,每层通过两个3×3卷积运算预测目标的位置和类别,SSD网络结构图如图1所示.
图1 SSD模型结构
SSD网络模型深层特征尺度小,滤波器感受野大,语义特征信息丰富,可以有效地检测较大物体;而浅层模型特征尺度大,滤波器感受野小,细节信息较多,更适合检测小物体.此外,网络中引入先验框(prior box),与Faster R-CNN 中的Anchor boxes[17]运行机制相似,不断改进框体位置,接近真实框位置.虽然SSD网络作为经典模型,其结构设计一直以来是学习对象,但是其对较小目标检测准确度低,主要由于浅层语义特征信息较弱,有效特征信息较少.
ESPNet是专门设计的紧凑神经网络模型,与MobileNet[18-19]和ShuffleNet[20-21]相似,广泛应用于移动端或嵌入式设备之中,具有参数少、计算量低和响应速度快等特点.该类网络是在卷积神经网络基础上,改变基本运算方法,重新设计基础构建块,按照构建块堆叠的思想,搭建网络结构,直接设计出具有较小计算复杂度和参数量的新型网络.
ESPNet中使用深度可膨胀可分离卷积(depth-wise dilated separable)代替标准卷积运算,引入膨胀率r,用于表示卷积运算膨胀大小,即卷积核运算时值与值之间的间隔大小[22],如图2为不同膨胀率的3×3卷积计算示意图.假设输入通道数为m,输出通道数为n,卷积核大小为k×k,标准卷积参数量为k2mn,而深度可膨胀可分离卷积参数量为k2m+mn,其计算量也仅为标准卷积的1/n+1/k2倍.同时,膨胀卷积带来更大的有效感受野(receptive field),标准卷积的有效感受野值为k×k,深度可膨胀可分离卷积的有效感受野值为[(k-1)×r+1]×[(k-1)×r+1].这种基础运算方式不仅降低了所需参数,减少了计算量,同时也提高了单次运算的有效感受野.
图2 不同膨胀率下的3×3卷积计算
随后,根据深度可膨胀可分离卷积特点,设计了模型的核心构建块EESP(Efficient Spatial Pyramid of Depth-wise Dilated Separable Convolutions)单元,其结构如图3所示.图3(a)和图3(b)分别表示不同步长下的EESP单元.图3(a)中EESP单元步长为1,首先对输入图像进行深度可膨胀可分离卷积运算,即分组卷积和深度膨胀卷积,其中深度膨胀卷积核大小均为3;采用层次特征融合(hierarchical feature fusion,HFF)对输出进行拼接,消除由膨胀卷积引起的gridding artifacts[23-24]问题;最后使用分组卷积混合各通道信息,并与输入特征图元素相加,缓解梯度消失问题.图3(b)是带有Stride的EESP单元,即步长为2的EESP单元,与基础EESP单元不同的是,深度膨胀卷积操作中的步长均设置为2,并直接建立与输入图像间的连接,防止图像在向下采样过程中造成信息损失.图3中各卷积层表示含义如下:Conv-n为n×n标准卷积;GConv-1为逐点卷积;DDConv-3为3×3的深度膨胀卷积;括号内数值分别为输入通道数、输出通道数和膨胀率.
(a) EESP单元(b) 带有Stride的EESP单元
最终,ESPNet采用基础构建块堆叠的方式,逐步搭建了网络,本文主要使用ESPNet应用于图像分类上基础网络的模型,整体网络结构如表1所示.ESPNet图像分类模型多次交替使用不同步长的EESP单元,提高网络深度,并在首尾采用基础卷积和分组卷积混合各通道信息.相较于VGG网络,该网络模型更加紧凑,参数量和计算复杂度更少;与其他紧凑的神经网络模型相比,如MobileNet和ShuffleNet,在相同的预测精度上,具有相对小的尺寸和较快的预测速度.
表1 ESPNet整体网络结构
针对SSD算法在嵌入式设备应用方面和小目标检测方面的不足,本文使用轻量化卷积神经网路ESPNet作为基础网络层,降低整体模型尺寸大小,加快模型预测速度;引入反卷积模块,提高网络深度,并充分融合浅层细节特征信息和深层语义信息,增强网络对小目标的检测能力.同时,对额外特征层和反卷积模块进行轻量化处理,在模块尺寸和提取特征值效果方面做了权衡,进一步降低网络参数,提高网络预测速度,本文称改进后的网络模型为FA-SSD(Fast and Accurate Single Shot Detector).
FA-SSD网络模型结构如图4所示,以ESPNet图像分类模型前5层作为基础网络层,快速提取图像特征信息,最后输出大小为10×10的特征图;随后,添加改进的额外特征层,即仅有3个卷积的额外特征层,分别为Conv6_2、Conv7_2、Conv8,输出大小为1×1的特征图;最后,输入由多个轻量级反卷积模块组成“倒三角”,得到不同尺寸的特征表示层.
图4 改进网络模型结构
为了均衡模型的准确度和尺寸大小,在模型的额外特征层中,对SSD额外层进行改造.Conv6_2和Conv7_2是由步长为2、卷积核为3的分组卷积和步长为1,卷积核为1的逐点卷积组成,每次卷积后,均进行BN(Batchnormal)和PReLU(Paramaetric Rectified Linear Unit)操作,且整个过程重复运行2次;Conv8由平均池化层、步长为2且卷积核为3的分组卷积和PReLU 3部分组成,用于进一步提取大尺寸的图像特征.
对于模型的“倒三角”部分,从Conv8开始,由前一层的结果和上层网络拥有相同尺寸的层作为输入,组成反卷积模块的输入,即Conv9由Conv8与Conv7_2融合得到,Conv10由Conv9与Conv6_2融合得到,Conv11由Conv10与Conv5融合得到,Conv12由Conv11与Conv4融合得到,Conv13由Conv12与Conv3融合得到,这种上下采样信息融合方式,降低了上采样所带来的信息丢失的问题,同时增加了网络深度.
本文中反卷积模块使用了多次,若采用标准卷积运算,则网络的计算复杂度和参数量呈线性提升,因此本文提出的FA-SSD模型对反卷积模块进行改进.假设改进反卷积模块的输入特征图分别为H×W×D′和2H×2W×D,反卷积核大小为k×k,输出特征图为2H×2W×D,其结构如图5所示.反卷积模块由反卷积部分和卷积部分两块组成,通过元素操作连接输出,卷积层输入特征图的大小为反卷积层的“两倍”.为了保证二者输出特征图尺寸和通道数一致,反卷积部分需要先通过反卷积操作,再经过深度可分离卷积操作后进入下一阶段;卷积部分仅通过两次深度可分离卷积操作即可.二者结果进行元素求和操作(Eltw sum),再经ReLU层实现上下采样的信息融合.改进反卷积模块具体参数如表2所示.
表2 反卷积模块参数设置
模型采用这种“宽-窄-宽”的“沙漏”结构,是由于“窄”层(即标准模型的底层)具有较高的语义信息,但分辨率较低,而“宽”层(即标准模型的高层)相反,反卷积得到的特征与相应尺寸的特征图融合,在目标检测方面具有更好的效果,实现方式与FPN网络[25]有异曲同工之妙.
模型训练采用的硬件设备如下:组装Windows 1 064位操作系统的台式机,处理器型号为AMD Ryzen5 1 400,内存为16 G,显卡为NVIDIA GTX1660Super.软件使用开发环境版本如下:Anaconda3、Pytorch 1.6.0、CUDA 10.2、cuDNN 7.4、Python 3.6.10、Tensorflow-gpu 2.3.0.为了进一步节省开发时间,安装了numpy、Keras、tqdm等第三方资源库.
数据集采用PASCAL VOC 2007和PASCAL VOC 2012,共21个类别,满足具体任务对于目标检测和准确度测试的需求,同时极大地降低了模型训练所需的时间成本和硬件配置成本.超参数设定为单次训练样本数(Batch Size)为16、动量(Momentum)为0.9、权重衰减(Weight decay)为0.000 5、初始化学习率(Learning rate)为0.001,学习率随着迭代次数的增加而逐渐降低.为了提高预测准确度,每个尺寸输出均设置有6个先验框.此外,网络采用图像分类网络ESPNet的参数加速收敛,训练损失值如图6所示,实验共执行了400个echo,每个echo训练整个数据集.
图6 网络训练损失值图像
模型训练集选用VOC 07+12的方式,基本SSD模型、基础网络为ESPNet的SSD模型和改进SSD模型训练的后在VOC 2007上进行测试,并做出对比,图像预测结果如图7所示.
(a) 改进算法(b) ESPNet (c) 原SSD算法
图7(a)为改进算法的物体检测图;图7(b)为基础网络ESPNet的SSD算法物体检测图;图7(c)为原SSD算法物体检测图.对比图7(b)和图7(c)可以发现,基础网络由vgg更改为ESPNet后,其检测准确度有一定影响,尤其在被遮盖部分较多的物体检测上,膨胀卷积在一定程度上影响了网络性能,使得网络不能有效检测到物品,但在对于轮廓清晰的物体,网络性能表现良好;对比图7(a)和图7(b),采用改进反卷积模块,在一定程度上解决了遮盖所引起的不良后果,且随着网络深度增加,检测精度有了显著提升;最后观察改进算法检测图和原SSD算法,改进算法在被遮挡比例较大的物体仍有提升空间,总体来讲,二者检测效果相差不大,但改进算法的模型在各尺寸目标检测方面表现均衡,相比于原SSD算法在检测精度上有一定的提高.
由于本文研究着重点在于网络模型应用于资源受限的移动端设备或嵌入式设备中,因此重点关注模型的大小和预测速度快慢,为了更好地评价网络性能优劣,主要对比了各网络以下4个参数值,分别是模型参数量(Params)、计算复杂度(floating point operations,FLOPs)、每秒帧数(frame per second,FPS)和平均精度均值(mean average precision,mAP),如表3所示.通过基本SSD模型结果和改进后的模型结果,对照DSSD网络、不包含反卷积模块的ESPNet和添加了反卷积模块的ESPNet模型结果,将这些结果进行比较,评价模型的准确性和鲁棒性.
表3 不同算法的测试结果
从表3可以看到,基本SSD模型的mAP为74.6%,其参数量和计算复杂度相对较高,预测速度较慢,相比之下,DSSD模型的mAP值增加了4.0%,但参数量增加了3倍有余,计算量提高了0.12倍,采用反卷积模块能够提升一部分准确度,但是对参数的消耗较大.仅改进了基础网络的ESPNet虽然具有较少的参数量和较低的计算复杂度,其准确度为65.3%,相对SSD网络低了很多.添加了标准反卷积模块的ESPNet虽然得到了与SSD相匹敌的精确度,参数量和计算量激增.优化改进后的网络模型精确度可达73.6%,参数量为SSD模型的0.6倍,为标准反卷积模块的ESPNet模型的0.2倍;计算复杂度为SSD模型的1/15,且预测速度提高了4倍;若与原ESP-Net网络相比,参数量和计算复杂度均有提升,但预测速度并没有降低太多,而且预测mAP增加了8.3%,提升颇为明显.对比标准反卷积模块的ESPNet模型,参数量和计算复杂度均有大幅降低,预测速度也有一定提升,最重要的预测精度仅仅降低了0.4%,做到了模型尺寸与预测精确度上的均衡,在符合硬件设备运行网络的需求的基础上,可用于较高准确度的场景.
在同样的训练集、验证集和测试集的条件下,对SSD模型、基础网络为ESPNet的SSD网络模型以及改进后的算法模型进行比较,不同类别下的目标检测精度结果如表4所示.从表4中可以看出,以ESPNet为基础的SSD网络模型精度与基本SSD模型,不论是大目标、中目标以及小目标检测精度方面,均存在较大差距.改进后的模型相比于ESPNet模型提升很大,尤其对小目标检测方面的提升较多,相较于原SSD模型,其在某些类别的精度已经大大领先,总体精确度已经能够与原SSD模型相抗衡.
表4 单类别测试结果
综合以上实验结果,本文提出的FA-SSD模型作为一种轻量化的改进SSD目标检测网络,在检测速度方面比经典SSD更好.由于网络使用以上几个参数作为网络尺寸的主要判断依据,现阶段嵌入式或移动端设备在部署时对基础卷积计算的方式不同,会造成不同平台及不同算法的应用上存在一定的误差.故本文在算法改进阶段中,只以计算机上的模拟结果和网络参数量、计算量和计算精度作为网络性能判断的主要依据,但仍能证明未来本改进方法在硬件设备上对性能改进的普适性.
为了提高目标检测移值至嵌入式和移动平台的可能性,本文采用SSD网络框架,改变基础网络模型为轻量化神经网络ESPNet,并引入轻量级反卷积模块,实现了轻量级目标检测网络的搭建.实验结果表明,改进后的模型在检测精度方面与SSD网络模型相差无几,且具有较小的网络尺寸和较高的预测速度,证明了改进方法的有效性.随着硬件设备部署技术的进步,本方法可以在一定程度上提高目标检测的适用性.