基于改进YOLOv3的航拍目标实时检测方法

2020-04-02 02:48军,吴
湖北工业大学学报 2020年1期
关键词:航拍分辨率像素

舒 军,吴 柯

(湖北工业大学电气与电子工程学院,湖北 武汉 430068)

随着传感器技术、深度学习和图像处理技术的发展,航空摄影被广泛地应用于救援追踪、生态研究、军事领域等方面。航空摄影图像的分辨率大小通常超过4096×2160,而待测目标在其中的像素可小至16×10,在这样大范围的超高清分辨率[1]图像中检测识别出微小像素目标,特别是实时定位这些目标对象,仍然是一项艰巨的挑战。

目前基于深度学习的图像实时检测分类算法模型主要使用SSD[2]、YOLO[3]、SqueezeDet[4]等算法框架;其中YOLOv3实时检测识别框架[5]由Redmon,Joseph和Farhadi于2018年提出,其识别速度快,检测精准度高,并能同时检测多尺度分辨率的目标,适用于同一镜头的多目标识别领域。但该方法直接用来检测航拍图像中的小分辨率目标时会出现遮挡漏检情况,对密集群体的检测效果亦不甚良好,需要对YOLOv3算法进行改进以适应航拍图像中的目标检测。

1 基本概念

1.1 YOLO算法

YOLO(You Only Look Once)模型是第一个端到端(End-to-End)的深度学习检测算法,其借鉴了GoogleNet[6]分类网络结构,提取特征的过程只需要一次前向运算,并同时进行训练和检测,因此以检测速度见长。YOLOv2[7]使用了VGGNet[8]的网络结构,又称YOLO9000,能满足9000多种不同类别目标的快速检测。YOLOv3借鉴了ResNet残差网络[9]结构,并加入了FPN[10](Feature Pyramid Networks)网络结构,在前两代的基础上提升了精准度,同时保证了检测速度。

YOLOv3模型的骨干框架使用53层卷积的残差网络结构,故YOLOv3神经网络又被称为DarkNet-53,其由一系列的3×3和1×1的卷积层组成,其中包含23个残差模块和检测通道的全连接层。除训练框架外YOLOv3还划分三种不同栅格大小的特征检测通道,包括52×52、26×26、13×13栅格大小的特征图,分别对应小、中、大尺度特征的图像检测,因此网络在训练时保留了小型目标的像素特征信息,对小物体的检测效果良好。

1.2 识别对象分析

本文使用DOTA-v1.0数据集[11],其为武汉大学遥感国重实验室与华中科技大学电信学院联合制作的大型遥感开源数据集,其内包含2806张遥感图像,分辨率800×800至4000×4000不等,共15种类别,包含了小型汽车、飞机、足球场等尺度跨越大的目标对象,因此该数据集适合作为航拍目标识别的实验研究对象。

在使用深度学习方法对传统目标进行训练检测时,其图像的分辨率大小通常只有数百,目标在图像中所占的比例大于10%,且同一副图像中存在不同种类目标的数量较少;而航拍图像在进行训练检测时区别较大,需要考虑其以下几个特点。

1)超高清分辨率:原始图像像素分辨率太大,图像按原始尺寸输入神经网络造成内存不足,压缩输入后又导致图像中小目标像素特征的丢失;

2)旋转不变性:实际高空拍摄的目标包含了各个方向的朝向,但训练的样本图像只包含了某部分的朝向;

3)样本数量少:该类图像样本数量相对少,且一幅图像中可能同时包含几十上百个待测目标对象,在训练过程中容易发生过拟合现象。

在对航拍数据集进行训练前,需要考虑以上因素来对深度学习算法进行改进。

2 YOLOv3算法的改进

2.1 网络结构的改进

由于航拍图像数据集与传统的图像数据集差别较大,其包含的小型和中型目标多而大型目标少,一副样本图像包含的范围大,即使待测目标是一个足球场,相对整张图片所占的比例也不超过20%,因此使用原YOLOv3网络结构将特征图大小划分为52×52、26×26、13×13显然已经不合适。

本研究划分特征图大小为104×104、52×52、26×26,加入了划分更加细微的特征信息,同时删减了大型尺度的特征。改进后的网络整体结构如图1,其中共包含24个残差模块,在浅层网络中增加了卷积层和残差连接结构的数量,这样可以提升更深层网络特征的细粒度,然后从此后部分更深层的网络中,提取三种不同尺度的特征信息分别输入检测通道,深层网络的检测通道向浅层进行上采样,以丰富浅层的特征信息,来提升小型目标的检测精准度。

图1 改进后YOLOv3网络的整体结构

2.2 基于数据集的聚类

本研究在训练DOTA-v1.0数据集前,使用K-means++[12]对DOTA-v1.0样本图片进行聚类,设置适合其数据集的9个大小不一的先验框,神经网络在训练阶段会优先使用这9个先验框去匹配图像中的目标,从而快速找到目标以提取像素特征信息。因此能够提升训练速度,缩短达到拟合的时间,聚类得到对应尺度的先验框大小见表1。

表1 三种尺度的先验框分辨率大小

3 实验与分析

3.1 数据集的预处理

由于改进YOLOv3使用了104×104、52×52、26×26栅格大小的特征输入检测通道,在训练输入的图像分辨率为416×416的情况下,能够检测的目标最低分辨率为4×4(图像尺寸除以栅格大小,即416/104),但对于DOTA-v1.0数据集中4000×4000分辨率的原始图像,在以416×416分辨率输入时,因其像素特征缩小10倍,已经无法检测出原有的小目标,在训练前使用一种滑窗裁剪策略,在输入图像前,将一张原始图像滑窗裁剪为多张608×608分辨率的图像,然后再经过416×416压缩输入,这种方法使得原始图像中的像素特征信息得以尽可能地保留。

在滑窗裁剪时设置10%的重叠率,防止将其中的目标对象一分为二时导致像素特征信息被破坏。本实验从DOTA-v1.0数据集中选取1869张带目标标签信息的图像,裁剪后得到图片19219张,其中4/5作为训练集参与网络训练,1/5作为验证集来分析分类检测的效果。

3.2 模型的训练

本研究的实验硬软件环境:系统平台为Ubuntu16.04,CPU为Intel Core i5-4590 ,GPU为GTX1080Ti,GPU加速为CUDA8.0 cuDNN6.0,编译环境为gcc/g++5.0 OpenCV3.4.0,算法框架为改进YOLOv3-416。

在进行航拍模型训练时,将训练集中的原始图像按416×416输入,每批次训练64张图像,分16组输入。每次输入时生成±1.5倍饱和度和±1.5倍曝光量的样本,以及±0.1比例色调的样本,这些图像会首先经过骨干训练网络,然后在多尺度训练网络继续生成尺寸调整后的样本,整体训练流程见图2。

图2 模型训练流程图

对于训练参数,设置最优化方法动量参数为0.9,权重衰减正则项为0.000 5,学习率0.001,迭代到45 000次时学习率降低10%,迭代到50 000次时学习率再降低10%,训练时每1000次迭代保存一次模型,超过1000次迭代数后每10 000次保存一次模型。实验首先迭代50 000次,后续在该基础上继续迭代30 000次,共迭代80 000次,总共训练图片5 120 000张。

3.3 模型的评估

训练完毕后,从导出的log日志文件中提取关键词信息,绘制出loss曲线以及IoU值统计图像(图3)。

(a)模型平均loss值走势

(b)模型的IoU统计值图3 模型的loss曲线和IoU曲线

从图3a中可以看到,模型的loss值在前10 000次迭代中迅速降低到3左右,随后逐渐平滑,稳定在2左右;而在迭代50 000次时loss值有明显的起伏,这是由于实验在进行到50 000次时暂停了训练,后续又将这50 000次迭代模型作为初始权重模型继续迭代了30 000次,故loss出现突然的起伏后迅速回到正常范围,但后续的迭代过程loss值已经没有下降的趋势。整体来看,训练模型迭代到80 000次时模型已经趋于稳定,最终loss值在2左右,表明模型的检测性能良好。

从图3b中可以看到,随着迭代次数的增加,IoU的值逐渐达到0.6以上,并有大量值接近1.0,说明模型预测框与对象实际框的匹配度较高。

3.4 改进前后模型的对比

在使用改进YOLOv3网络与原网络进行对比时,都保留了相同的参数设置和预处理操作。在选取模型时,一般选取IoU及mAP值最高的权重模型作为对比,但训练到80 000次时,这些指标的变化差异已经非常小,为了方便直观地进行对比,都统一选取迭代80 000次的模型来进行对比,具体性能指标见表2。

表2 改进前后各项类别具体性能对比

从表2可以看到,两种模型对飞机、船、网球场和港口的检测性能较好,原因是这几个类别的样本数量相对较多;而小型汽车的样本数量较多但检测效果一般,原因是小型汽车的分辨率太小,在输入原始图像检测时,一部分过小目标的像素特征变得不明显,而大型汽车的分辨率稍大,故检测效果比小型汽车更好。对于网球场,检测性能基本没有提升,这是由于网球场的分辨率本身就较大,即使将原图压缩后输入训练,提取的特征信息仍然比较完整。

整体来看,改进后的网络对15种类别的目标都有较大提升,这是由于改进后网络生成了更少的真实负样本(FP)参与验证,且样本数量越多,检测的准确率一般也会相应增加。

表3 改进前后综合指标对比

从表3可以看到,改进后模型与改进前进行对比时,检出率由64%提升到79%,提升了15.0%;召回率由66%提升至68%;F1分数提升了0.08;mAP-50从46.5%提升到57.0%,提升了10.5%;FPS由19.8提升至20.4。综合上述,实验证明了改进YOLOv3网络模型对比原网络拥有更好的实时检测性能。

4 结论

本文针对航拍目标识别提出了一种改进的YOLOv3算法,该方法加入104×104特征分辨率的检测模块并删减了13×13特征分辨率的检测模块,同时增加了浅层网络的层数,用于提取更加细微的像素特征;并针对DOTA-v1.0数据集样本使用K-means++聚类,得到9个先验框来参与模型训练。实验表明,改进后的YOLOv3检测算法的检出率提升了15.0%,mAP-50提升了10.5%,对于航拍图像目标的实时检测具有一定的参考意义。

由于原始航拍图像分辨率太大,即使在训练时保留了分辨率特征信息,但将整张图片直接压缩输入后,难免会破坏原有分辨率特征,因此平均准确度不高;未来还应在保证实时检测速度的情况下,对检测时的图像输入模块进行优化。

猜你喜欢
航拍分辨率像素
基于生成对抗网络的无监督图像超分辨率算法
像素前线之“幻影”2000
航拍巴彦呼硕
“像素”仙人掌
航拍,苍穹下的醉美视角
难忘的航拍
陕西画报航拍
高像素不是全部
ARM发布显示控制器新品重点强化对分辨率的支持
从600dpi到9600dpi