基于嵌入式平台的航拍目标智能识别

2022-12-01 02:05田祥瑞贾茚钧
计算机测量与控制 2022年11期
关键词:嵌入式卷积深度

田祥瑞,贾茚钧,罗 欣,尹 婕,徐 鹏

(1.南京航空航天大学 自动化学院,南京 210016;2.中国电子科技南湖研究院,浙江 嘉兴 314001)

0 引言

无人机具有成本低、灵活性高等优点,通过无人机航拍,可以弥补卫星和载人航空遥感技术对近地低空小目标进行侦测监控的不足[1]。因此无人机在民用领域和军事领域得到了广泛应用。在军事领域,无人机智能识别可以用于对地面军事目标进行侦察跟踪,也可以负载武器对目标进行自主打击。无人机通过识别算法发现目标后,保持安全距离对目标进行隐蔽跟踪侦察,和传统的使用车辆或人员进行跟踪的方式相比,无人机可以实现低成本、零伤亡的智能识别。在民用领域,融合目标识别算法后,无人机可以用于监测农作物生长情况,抢险救灾,对被困人员进行搜救,加快救援速度,在罪犯逃逸时也可以使用无人机进行追踪搜捕等,具有非常好的应用前景。深度学习作为机器学习、人工智能的拓展方向,通过模仿人类思想,自适应处理数据,探寻数据信息的内在规律、表述形式等,为系统运行提供数据支撑。在此背景下,目标识别技术的实现可依靠深度学习技术,对目标进行精细化辨别,提高目标识别与处理的精确性,为系统操作提供可靠性依据。基于深度学习的目标识别技术已经成为当下研究热点,但基于深度学习的方法对硬件计算能力要求高,由于无人机带负载能力有限,无人机机载计算机通常采用功耗低、可靠性高的嵌入式设备[2]。常见的无人机机载计算机如树莓派、NVIDIA Jetson Nano、NVIDIA Jetson TX2等设备。其中,性能最强的NVIDIA Jetson TX2包含两个CPU,配有256个NVIDIA CUDA核心的GPU,主频最高1.12 GHz,而搭载NVIDIA GeForce GTX 1080 GPU的台式服务器,就拥有256个CUDA核心,主频最高2.8 GHz。因此,嵌入式平台性能远远低于实验室中的服务器,对深度学习算法推理速度有直接的影响[3]。现有算法大都在实验室中以达到最高准确率为目的,而在嵌入式平台上直接使用现有深度学习网络进行快速识别实时性较差,需要对网络进行轻量化改进以提高推理速度。

虽然传统的目标检测算法运算速度快,如SIFT、SURF和HOG等,但需要人工设计特征,将设计的特征在图像上以滑动窗口的方式,进行特征提取,然后对每类物体单独训练浅层分类器,完成目标的识别,这样的方式导致传统算法检测精度和适应性较差[4]。2012年Hinton教授所带领的团队利用卷积神经网络(convolutional neural networks,CNN)设计了AlexNet网络[5],在2012年的ImageNet竞赛中取得冠军,CNN遂成为热点研究方向。目前,CNN在图像分类、目标识别、目标跟踪等计算机视觉领域取得了重大应用[6],其基本原理是利用图像卷积进行深层次特征的提取,进而实现目标分类与定位。基于深度学习的目标检测算法主要分为两大类,一类是先通过Selective Search、Edge Boxes[7]等算法进行候选区域的搜索,再进行特征提取与目标检测,代表算法有R-CNN、Fast R-CNN及Faster R-CNN[8-10]等,该类算法精度较高,但速度慢,难以应用于无人机嵌入式计算平台进行实时目标检测。另一类是直接进行特征提取来实现目标的分类与边界框回归,代表算法有YOLO(you only look once, YOLO)[11]系列算法及SSD[12]算法等,该类算法速度相比两阶段算法得到了提升,与对实时性要求较高的无人机目标检测较为契合。目前的目标识别在人脸识别、行人检测这些面向自然场景图像的任务中,应用已经非常成熟。但由于近地低空的无人机成像视角不同,无人机机载计算机算力低,无人机图像中的目标尺度变化大,且小目标的比例远高于自然场景图像,直接将现有算法应用于无人机航拍目标识别效果较差。同时现有算法应用无人机进行俯视小目标进行侦测时,存在精度不高、在嵌入式平台上运行速度慢等缺点。因此,研究适用于无人机的小目标识别算法有着重要意义。

本文首先介绍了YOLO系列算法基本原理[13],然后针对在嵌入式平台上的实时运行,对YOLOv4进行了网络优化分析与改进,在机载嵌入式平台上进行了改进算法的验证。

1 YOLO系列算法原理

两阶段算法由于需要先生成候选区域,使得算法实时性差,为改善该问题,基于回归理念,对图像目标位置和类别直接进行回归预测。YOLOv1直接将输入图片分为S*S的小块,每个小块预测B个边界框(bounding box,BBox),采用BBox的置信度confidence反映模型对该BBox的预测的准确率,计算公式如式(1),其中,Pr(Object)代表是否存在目标,若存在,则confidence为真实值(truth)和预测值(pred)的交并比(IOU),若不存在,则置信度为0。

(1)

在推理阶段,每个BBox都要预测目标位置、置信度和C个类别信息,输出S*S(5*B+C)的张量。类别信息与置信度相乘,按式(2)计算得分csc,将得分低于设置阈值的结果直接滤除,对剩余的预测结果进行非极大值抑制(NMS)处理,得到识别结果。

(2)

(3)

(4)

YOLOv2设计了一个新的骨干网络结构Darknet-19,通过前后特征融合,增强了网络对小目标的识别能力[14]。借鉴Faster R-CNN的anchor机制,使用Kmeans聚类算法得到大小合适的anchor。YOLOv2将输入图像提取为13*13大小的特征图,对特征图的每个网格进行预测BBox,如图1所示,每个BBox预测边界框的位置信息(tx,ty,tw,th)和置信度to,tx,ty经Sigmoid函数映射到0到1之间,将预测中心固定在cell内,使得模型更加稳定,cx,cy表示该cell距离特征图左上角坐标的距离,pw,ph代表anchor的宽高,bx,by,bw,bh代表最后基于anchor得到的预测结果。计算公式如(4)所示,式中σ代表Sigmoid函数。

图1 基于anchor的位置预测示意图

YOLOv3借鉴深度残差网络和特征图金字塔的思想,使用了FPN[15],用不同尺度的特征图来检测目标,设计了主干网络Darknet-53,Darknet-53比ResNet-101[16]准确率提高了0.1%,速度提高了1.47倍[17],在理论上,YOLOv3没有太多的改进。

YOLOv4由Alexey Bochkovskiy在2020年改进完成,是一个端到端的一阶段网络,其网络结构如图2所示。YOLOv4设计了新的骨干网络CSPDarknet53,该骨干网络与Darknet53相比,在每个Resblock中,增加了新的跨层连接,提高了网络准确率。与YOLOv3一样,融合了前后特征图的信息,并用多个尺度特征图来识别目标,如图2中PANet部分所示,最后,增加了空间金字塔(spatial pyramid pooling,SPP)模块,扩展了模型的感受野[18],进一步提高识别准确率。在数据增强方面采用了CutMix,提出了Mosaic等数据增强方法,CutMix通过将两张图按随机比例进行混合,可有效改善密集目标识别中的目标重叠导致识别率低的问题[19];Mosaic则通对4张图片按照随机缩放、随机裁剪和随机排布的方式进行拼接,增强小目标识别效。此外,融合了目标检测领域最新的定位损失函数CloU loss,有效指导网络训练[20],采用了Mish激活函数,增强了网络的非线性表达能力[21]。融合多种方法的YOLOv4在精度上得到了极大的提高,但由于网络模型更大,对硬件的要求也进一步提高,在嵌入式平台上存在推理速度慢,计算资源占用率高的问题。

图2 YOLOv4网络结构图

2 YOLOv4骨干网络优化设计

YOLOv4主要应用于平视视角下常规尺寸的目标识别,无人机俯视目标较小,使用YOLOv4直接检测,存在浪费计算资源用于检测大目标、容易丢失小目标细节信息的问题。分别从网络深度和网络宽度两个方面,改进设计适用于小目标识别的YOLOv4骨干网络,以提高网络准确率和速度。

2.1 网络轻量化分析

卷积神经网络通过使用卷积核对图像特征进行提取,在深度学习中,卷积核的参数通过训练得到,将得到合适参数的卷积核对输入图像进行处理。如图3所示,对相同输入,不同参数的卷积核会产生不同的特征图(feature map),有的卷积核类似高通滤波器,通过锐化后可以增强细节信息的图像;有的卷积核类似低通滤波器,通过模糊图像,减少图像细节突出重要信息,有的对水平或竖直的纹理信息敏感,而有的对颜色信息敏感。

图3 不同卷积核提取的特征图

单层卷积核的数量称为卷积层的通道数,也叫网络宽度,网络的宽度越宽可以提取到更多的特征,帮助算法更好的进行决策。任何勒贝格可积函数不能被宽度小于n的ReLU(rectifiedLinear units,ReLU)网络逼近[22],如式(5)所示:

(5)

因此,网络需要保证一定的宽度,才能实现对复杂问题的求解,但随着网络宽度增加计算量呈指数增加,使得算法实时性变差。所以,需要对特定问题,设计与其复杂度相匹配的网络,以实现速度与精度的平衡。

单层网络虽然可以提取到丰富的特征,但无法完成信息的整合,并且由于单层神经网络不具备处理非线性问题的能力,因此需要采用深度神经网络。理论上,一个两层的网络可以拟合任意有界连续函数,但该变换过于复杂,使得网络难以收敛,且需要非常宽的网络,所以,需要通过加深网络深度,将复杂问题逐层分解,降低每一层的变换难度,使网络更加容易训练。研究发现深度网络中的浅层卷积神经网络先对图像简单的边缘等信息进行学习,中间层则学习到了简单形状,高层学习目标的具体形状,深度越深,可以提取到更高级的语义信息。但由于通过卷积层不断的对信息的提炼,会造成位置等细节信息的丢失,尤其在针对小目标时,网络过深会导致目标定位信息丢失,从而难以进行目标识别。所以,网络并不是越深越好,同样需要针对特定问题设计网络的深度。

深度和宽度会影响最终的模型大小和推理速度,可根据公式(6)进行测算:

(6)

其中:Co、Ci分别为输出输入特征图通道数,k为卷积核大小,W、H为特征图宽与高,各卷积层的参数量(params)决定了模型的大小,推理速度则主要由各卷积层的计算量(FLOPs)决定。因此,针对特定应用场景,通过对网络深度与宽度进行优化设计,可在确保精度的前提下提升网络的运算速度。

2.2 针对小目标识别的网络深度改进

无人机通过俯视拍摄目标,由于距离较远,使得目标在图像中所占像元较少,若采用较深的卷积神经网络虽然可提取到更高级的语义信息,但会造成小目标空间信息的丢失。YOLOv4在提取图像的过程中,先将640*640的原始图像提取为20*20的特征图,即缩小了32倍,网络难以识别32*32像素及以下尺寸的目标,对近似尺寸的小目标即使能进行类别预测,也不能对目标位置进行准确回归。

针对目标细节信息丢失导致算法准确率低的问题,首先,对图2中原始骨干网络进行分析,图2中原始骨干网络最后两个Resblock主要用于中型尺寸目标的特征提取,这是造成小目标信息丢失的主要原因,所以将残差块Resblock4舍去。其次,由于原网络中路径聚合网络(PANnet)中特征图经三次降采样再上采样,该过程虽最终将特征图恢复为原大小,但在恢复过程中采用线性插值完成,使得特征图变模糊,影响网络检测小目标,因此将检测器适当提前。然后,为提高识别精度,在网络中加入SPP模块,并在之后使用10个卷积层进行特征的提取。最后,通过三个尺度的检测器完成检测,改进后的网络如图4所示。

图4 深度改进后的网络结构

将改进后的网络在公开数据集VisDrone[23]上进行训练,VisDrone由天津大学的AISKYYE团队进行搜集制作,是一个包含了目标识别、目标跟踪、人群计数等多个方向的数据集。该数据集标注了超过260万个边界框,其中目标识别方向共有10209张图像,包含了10个类别,分别为:行人、人、汽车、面包车、公共汽车、卡车、摩托车、自行车、遮阳篷三轮车和三轮车。采用的训练平台为Inter Core i7-8700CPU,NVIDIA GeForce GT 1080,Ubuntu18.04 TS。网络框架基于Darknet。采用CUDA、cuDNN对计算进行加速,安装OpenCV环境实现数据增强。搭建好软件环境后,对神经网络超参数进行设置。首先,有关权重更新方式,批量梯度下降每次更新都需要把所有样本输入,得到误差后对网络权重进行一次更新,兼顾了所有样本的情况,可以得到全局最优解,但当训练样本很多的时候,由于每一次迭代都需要对所有样本进行计算,训练会很慢。小批量梯度下降对多个样本,只更新一次权重,这样的更新方式可以使网络大致朝着全局最优的方向迭代,也可以解决批量梯度下降训练慢的问题。本文选择了小批量算法作为权重更新方式,批量(batch)设置为64,分解系数(subdivision)设置为64。采用动量法,将动量法中的momentum设置为0.9。其次,对训练样本进行数据增强,数据增强可以增加训练样本,得到更好的训练效果,同时还能防止模型过拟合问题。主要包含把图片随机旋转-90度到+90来增加训练样本的数量,将saturation设置为1.5,exposure设置为1.5,hue设置为0.1,分别对原始图像做饱和度、曝光度和色调进行随机调整,采用了mosaic数据增强,该方法通过将多张图片进行裁剪再拼接到一张图上作为训练数据,有利于丰富目标背景和小目标检测。最后,使用预训练权重对网络进行训练,学习率设置为0.001 3,并将最大训练轮数设置为20 000,学习率分别在第12 000、18 000轮时降低为原来的十分之一。训练完成后,在大疆机载计算机Manifold-2G上对算法进行测试,Manifold-2G的处理器是英伟达研发的Jetson TX2,拥有256个CUDA计算核心的GPU,CPU复杂部分由两个ARM v8 64位CPU集群组成。软件系统为Ubuntu 16.04,安装了CUDA9、OpenCV3.0。本文测试都是在Manifold-2G上进行,后续不再加以说明。对算法基于默认参数进行测试,深度改进测试结果如表1所示。

表1 深度改进实验结果

测试结果表明在针对俯视视角小目标进行网络改进后,准确率提高了3.2%,网络参数量减少为原网络的15%,表明了算法改进的有效性。但其计算量仅降低36 BFLOPs,改进算法运行速度提升依然较小,需要在网络宽度方面继续改进。

2.3 网络宽度改进

在2.2节对网络深度的改进中,计算量仅降低36 BFLOPs,改进算法运行速度提升较小。通过分析,这是由于将检测器关联层提前,在降低模型大小的同时,使得通道数较多的卷积层用于处理较大的特征图。根据公式(7)可知这将使模型的计算量大大增加,使得网络加速并不明显。由于俯视视角目标特征相对一致,在保证一定精度的同时,可通过适当减少网络宽度,实现网络的加速。

宽度改进后的网络结构如图5所示,首先将图4中最后的Resblock通道数由512降低为256,可降低该Resblock的4倍计算量;其次,因为SPP模块使通道数增大四倍,导致SPP模块后的卷积层计算量和参数量增大。因此,在SPP模块之前先通过一次下采样(downsample),将特征图大小由原来的80*80变为40*40,使得downsample到上采样(upsample)之间的计算量降低4倍;最后,通过一次上采样将特征图恢复为原大小,由于下采样操作仅将特征图大小变为40*40,并不影响小目标识别,且有效减少了计算量和参数量。

图5 宽度改进后网络结构

将改进后的网络再次在数据集VisDrone上进行了相关测试,测试结果如表2所示。从测试结果看出,改进后的骨干网络在无人机视角小目标识别任务中,参数量减少为原网络的10.4%,精度提高了2.7%,推理速度是原网络的1.8倍。但由于网络改进时仅通过对整个Resblock进行通道数设计,网络存在冗余,仍需对单个卷积层通道数进行进一步精简。

表2 宽度改进实验结果

3 网络剪枝与量化加速

无人机带负载能力有限,且由于无人机带由多种传感器,使得无人机周围电磁环境复杂,另一方面,为保证系统的精简,通常使用无人机的电池对机载计算机进行供电,所以,无人机机载计算机通常采用功耗低、可靠性高的嵌入式设备,该类设备算力较低。本文采用了DJI Manifold-2G作为机载计算平台,该设备搭载了NVIDIA jetson TX2核心,与搭载NVIDIA GeForce GT 1080的台式服务器相比,1080拥有2560个CUDA核心,CUDA核心数反映了硬件的算力,对深度学习算法推理速度有直接的影响,TX2仅仅拥有256个CUDA核心,因此,直接在TX2等嵌入式平台上进行使用深度学习网络是不切实际的,需要对网络进行剪枝量化,以提高推理速度。采用对网络的剪枝与量化以提高网络实时性进行了相关工作。

3.1 网络剪枝

为提高算法在嵌入式设备上运行的实时性,通过对模型进行剪枝可进一步提高推理速度。基于BN层γ系数对冗余通道进行剪枝[24],BN层将网络的每一层的输入做标准化处理,使数据分布向整体数据的均值方差方向转移,从而使得网络更容易初始化,并可以加速网络训练[25]。

(7)

表3 网络剪枝实验结果

通过剪除冗余通道,网络参数量降低为原来的32.1%,计算量降低为原本的4.3%,网络仅在损失0.9%的准确率的情况下,网络推理速度提高到剪枝前的1.9倍。

3.2 使用TensorRT量化加速

为充分利用硬件平台的计算资源,使用TensorRT对网络进行硬件加速。首先,因为模型推理时主要由GPU启动CUDA进行运算操作,CUDA核心的启动对每一层输入输出张量的读写操作造成大量的时间和计算资源浪费,带来了内存带宽的瓶颈问题。因此,通过层间融合将横向的卷积层、偏置层、激活函数层融合为一个CBN层,可加速推理过程。另一方面,由于推理过程不需要反向传播,在推理过程中,相比使用32位浮点数的存储的权重文件,使用16位浮点数存储的权重文件对模型精度可以达到近似的精度,所以将权重文件中参数量化为16位浮点数,减小计算复杂度从而提高推理速度。

模型测试结果如表4所示,对使用TensorRT加速后,由于权重文件格式与原YOLOv4权重文件格式不同,不对计算量与参数量进行对比。采用TensorRT加速后,网络精度仅降低0.3%,但推理速度提高了26%,极大地增强了算法在嵌入式平台上的实时性能。

表4 硬件加速实验结果

4 军事目标数据集构建与算法测试

4.1 军事目标数据集的构建

与传统算法人为设计特征不同,深度学习算法可以自主学习特征,自主学习一般需要大量的监督数据。对同一个深度学习算法,用于指导学习的数据越多、数据质量越好,训练出来的网络性能越好,所以数据集在目标检测中具有非常重要的作用。另一方面,军事目标由于安全性和保密性,鲜有开源数据集,因此为了验证改进算法对军用目标的有效性,解决军用目标数据集缺失的问题,制作了一个小型的军用目标数据集。

通过网上搜索符合俯视军事目标的图片,主要来源为各大搜索引擎,由于无人机视角下的军用目标图片在角度、目标大小以及目标种类方面都有着限制,军用目标的特殊性和保密性要求,使得在国内外搜索引擎上直接检索得到的符合要求的图片较少,远远满足不了数据集的要求。为此,从公开实战演习的视频中,截取符合要求的图片。选取士兵、坦克、装甲车、军舰、导弹发射车五类目标作为数据集制作对象,最终收集到符合要求的图片3582张。对搜集到的图片进行重命名、格式修改等初始化处理,然后,为方便YOLOv4的训练,采用PASCAL VOC标准制作数据集,PASCAL VOC在目标识别检测领域是一套标准化数据集格式,为数据集的制作提供了标准的文件格式。按照VOC标准使用Labelimg完成数据集的标注,标注结果如图6所示。

图6 军事数据集标注

最后,对标注好的数据集进行训练集、验证集和测试集之间的比例分配。由于数据集规模不是太大,测试集不宜分配太多数据,将大部分数据分配到训练和验证集中,最终分配结果为训练集:验证集:测试集=7.2:1.8:1。

4.2 军用目标数据集测试分析

采用标注的数据集分别对原YOLOv4和改进算法进行训练,训练采用的电脑配置为Inter Core i7-8700CPU,NVIDIA GeForce GT 1080,系统版本Ubuntu18.04,深度学习框架采用Darknet,并将其移植到嵌入式系统Manifold-2G上进行测试,实验效果如图7所示。

图7 改进算法对军用目标的识别效果

实验结果如表5所示,通过对YOLOv4进行了适用于小目标的改进,并采用了剪枝量化等方法,改进算法在精度上提高2.3%的同时,推理速度提高了3.3倍。展现了改进算法对军事航拍小目标识别的有效性,提升了航拍目标识别的精度与速度。单类目标识别精度如表6所示,在单类目标识别测试结果中,改进算法与原算法相比,对坦克、装甲车、军舰、导弹发射车、士兵5类目标的识别精度分别提高了4%、2%、1%、2%、6%,对士兵识别精度提升最大,而士兵相对其他类别尺寸较小,表明针对小目标识别的算法改进是有效的。

表5 算法对比结果

表6 单类目标识别精度

5 结束语

嵌入式平台算力资源有限,难以运行大型的深度网络,且现有目标识别网络并不是针对航拍小目标的实时识别设计的。本文基于现有YOLOv4算法,对其在网络深度、宽度方面进行了骨干网络的优化设计,并采用剪枝和硬件加速技术进一步提升网络的推理速度。在制作的军用目标数据集上,改进算法比原算法准确率提高了2.3%,推理速度提高了4.3倍,验证了采用的网络优化改进的有效性。虽然在嵌入式平台上提高了算法的推理速度,但依然达不到实时性,仍需在硬件和算法方面进行改进。由于YOLOv4采用锚框对目标进行粗略的预测,大多数锚框都是负样本,造成训练中正负样本不均衡,未来可以基于无锚框的方式对小目标进行识别,提高算法效率。此外,通过引入自注意力机制,对可能存在目标的位置进行重点处理,从而进一步提升算法的准确率和实时性。

猜你喜欢
嵌入式卷积深度
四增四减 深度推进
基于3D-Winograd的快速卷积算法设计及FPGA实现
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
深度理解一元一次方程
卷积神经网络的分析与设计
从滤波器理解卷积
简约教学 深度学习
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究
基于傅里叶域卷积表示的目标跟踪算法