APP下载

基于Tiny-YOLOv3 的小目标检测仿真

2020-12-16綦志刚李洋洋

实验技术与管理 2020年10期
关键词:池化层池化卷积

綦志刚, 李洋洋,李 冰,原 新

(哈尔滨工程大学 智能科学与工程学院,黑龙江 哈尔滨 150001)

随着深度学习的发展,卷积神经网络在目标检测领域得到了越来越广泛的应用[1]。就现阶段而言,目标检测算法主要分为2 大类,一类是基于区域提议(region proposal)[2]的检测方法,这类方法先对待检测图像中可能出现目标物体的区域进行提议,之后再对提议的区域进行目标物体的检测与分类,其检测精度较高,但是检测速度较慢,代表算法有R-CNN[3]、Faster R-CNN[4]等;另一类是基于回归的检测方法,这类方法采用端对端的检测,省去了区域提议这一步骤,因此检测速度较快,但是检测精度有所下降,代表算法有YOLO[5-7]、SSD[8]等。

发展至今,以上算法虽然在目标检测方面拥有较好的性能,但由于模型过于复杂,提升了对硬件性能的要求,难以在移动端或者性能不高的设备上使用[9]。为了满足在低端机器上完成目标检测任务的需求,Darknet 网站上提供了Tiny-YOLOv3 模型。该模型是YOLOv3 的轻量化版本,不需要占用大量的内存,从而减小了对硬件性能的需求[10]。但是该模型由于网络层数不深,对输入图像特征无法充分地进行提取。另外,该模型虽然引进了anchors 机制[11],但是没有充分加以利用,使得对图像中小目标物体的检测效果不佳。为了改善上述问题,本文提出了改进Tiny-YOLOv3算法,从而增强模型在特征提取和小目标检测方面的性能。

1 Tiny-YOLOv3 模型

Tiny-YOLOv3 模型为YOLOv3 的简化版本,其主干网络为6 层DBL 层与6 层池化层交替组成的特征提取网络,池化层采用最大池化方式;嫁接网络采用的是13×13、26×26 分辨率的输出检测网络,结构如图1所示。其中,DBL 层由卷积层、归一化处理层、激活层3 部分组成,卷积层采用的是3×3 的卷积核,步长为1×1,激活层以LeakyReLU 为激活函数。

当2 种输出检测网络都得到各自的预测结果之后,对它们进行非极大值抑制处理[12],之后便可得到最终检测结果。由模型结构可以看出,该模型通过较少的网络层数减小了模型体积,从而使该模型能够在低端机器上运行。然而,在特征提取过程中,该模型采用了池化层减小输出图像的尺寸,由于模型本身参数有限,这将使得提取到的图像特征大量丢失。此外,模型中虽然用到了多尺度融合[13]的方式去解决不同尺度的物体检测问题,但是由于anchors 数量过少,特征图的尺度跨度不足,依旧会产生大量中小尺寸目标的漏检现象。

图1 Tiny-YOLOv3 模型结构图

2 改进网络结构

2.1 修改主干网络

在原有模型中,主干网络的最后4 层特征图的长宽均为13×13,所不同的仅仅在于通道数,甚至在倒数第2 层中,通道数也没有发生改变,仅仅是通过最大池化选取相邻区域中的最大像素点,这很容易使相邻的2 个像素点均为同一个值,从而降低了对图像特征的利用率。因此,本文对主干网络的倒数第2 层进行了修改,使其特征图为前一层网络的一半,但是由于前一层网络的长宽均为奇数,因此需要对输入图像尺寸进行调整。根据相关文献研究[14],当输出的特征图为奇数时,检测效果更好。因此,将输入图像尺寸修改为448×448。

2.2 用卷积层替换池化层

由于池化仅仅是从4 个相邻像素点间选取1 个像素点,这样的做法浪费了3 个从前一层网络提取到的特征,因此本模型采用卷积层替换池化层,且采用的卷积为3×3 的卷积核,但是每步的步长为2,在每次卷积之后,图像的尺寸将会缩小为原来的一半,从而达到与池化相同的目的,但是相比于池化,这样做可以使前一层提取到的特征都参与运算,从而减少了网络传递过程中的特征丢失。

2.3 修改特征融合网络

在原先的模型中,模型分别采用了13×13、26×26的2 种不同分辨率特征输出图去检测图像,这虽然在一定程度上减小了检测过程中的漏检概率,但是当目标物体的尺度相差较大时,检测效果依旧不理想,因此,本文在原有模型的基础上再添加一层7×7 分辨率的特征检测网络。通过这样的设计,可以使前面大的特征图识别浅层特征,完成对小目标的检测,而后面小的特征图识别深层次的特征,完成对大目标的检测。另外,通过将不同尺度的特征图进行融合,可以使浅层特征中也具备一定程度的深层语义理解能力,从而更好地完成小目标物体的识别任务。最终修改后的模型结构如图2 所示。

3 实验结果与分析

3.1 实验环境

本文的实验环境为Ubuntu16.04,电脑配置为GPU(NVIDIA GTX-1060 6G 显存),CPU(i7-6700),8 G内存。模型选取VOC2007 数据集作为训练样本,其中训练集图片为8 000 张,验证集图片为1 000 张,测试集图片为963 张。模型整体采用Keras 框架搭建。设置训练模型的初始学习率为0.001,最大迭代次数为40 000 次,每批次训练16 个样本。

3.2 评价指标

为了检测模型的性能好坏,在目标检测领域有一些常见的评价指标,如精确率(precision)、召回率(recall)、mAP(mean average precision)等。在VOC数据集的评测指标中,如果IOU(预测边框与真实边框的交并比)>0.5,则被认为预测的物体与实际的物体为同一个物体,反之则被认为是不是同一个物体。在这种定义下,精确率和召回率的计算公式为:

其中:TP 代表物体被预测为正样本,实际也为正样本;FP 代表物体被预测为正样本,实际为负样本;FN 代表物体被预测为负样本,实际为正样本。

在有了精确率与召回率的计算公式后,便可以针对某一类目标,以召回率为横坐标,精确率为纵坐标绘制出PR 曲线,该曲线所围成的面积就被定义为AP。在将每一类的AP 值都计算出来以后,将其平均,就得到了mAP。通常来说,模型的mAP 值越高,则说明模型的性能越好。

3.3 实验结果与分析

图3 和图4 分别为模型改进前与改进后的各类物体AP 值,由图中可以看出,相较于改进前,改进后的模型mAP 上升了3.79%,具体到每一类目标的AP值也都有一定的提升,说明使用卷积层替代池化层确实能够保留更多的信息,从而提高模型的性能。通过观察同一模型的不同类别目标的AP 值可以发现,AP值较高的类别往往是目标本身尺度较大的,一张图像内所能包含目标较少的类别,如火车、飞机等;而对于目标本就比较小的,且可能在一张图像内出现多个的物体,其AP 值则会相对较低,如瓶子。这说明了模型对尺度较大的目标有更强的包容能力,对于较小的目标,由于特征在向后传递的过程中更容易丢失,因而在检测过程中难以被识别。

图4 改进后模型各类别的AP 值

通过对图3 和图4 的进一步比较可以发现,AP 值绝对增长最少的是火车,仅为0.01,一方面是因为火车这一类别原本就已经达到了较高的识别精度,另一方面是因为火车占图片的相对比例较大,不容易受到图片尺寸缩放的影响;而AP 值绝对增长最多的是瓶子,为0.14,这说明了通过对增加特征融合层的数量确实能够提高小目标物体的检测精度。图5 为模型改进前后部分检测结果对比,从对比图可以看出,改进后的模型不仅图像漏检现象减少了,而且将错分为猫的图像也正确识别了出来,说明改进后的模型能够减少错检及漏检的概率。但是由于模型网络层数不深,当图像中的目标受到遮挡时,依旧会产生漏检现象。如图6 所示,后面的车辆由于受到前排车辆的遮挡,未能被模型检测出来。

图5 模型改进前后的检测结果对比图

图6 模型改进后的检测结果图

4 结语

本文提出了一种基于Tiny-YOLOv3 的改进目标检测算法。通过使用卷积层替代池化层,可以提高特征的利用率,同时避免小目标的特征在向后传递过程中丢失;对主干网络进行修改使得神经网络各层之间的衔接更为自然,对输入图像尺寸的调整则是为了保证输出图像的长宽均为奇数,从而使模型学习到有用的特征;通过额外添加一个7×7 分辨率的特征融合层扩大网络的视野范围,进而加强对小目标物体的检测能力。实验结果表明,改进之后的模型提高了检测精度,降低了漏检的概率。但是由于模型参数有限,因此当环境较为复杂(如遮挡、暗光等)时,模型的检测精度依旧有待提高,在不大幅提升网络模型复杂度的情况下提高模型的泛化能力将是后续的主要研究方向。

猜你喜欢

池化层池化卷积
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络模型研究分析*
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
卷积神经网络的分析与设计
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
基于全卷积神经网络的SAR图像目标分类*