基于YOLOx残差块融合CoA模块的改进检测网络①

2022-08-25 02:52安鹤男杨佳洲邓武才
计算机系统应用 2022年8期
关键词:残差特征提取卷积

安鹤男, 杨佳洲, 邓武才, 管 聪, 马 超

1(深圳大学 微纳光电子学研究院, 深圳 518054)

2(深圳大学 电子与信息工程学院, 深圳 518060)

随着计算机硬件设备以及各种深度学习框架的发展, 深度学习模型成为了当下人工智能领域研究的重要途径. 属于人工智能领域热点之一的计算机视觉, 其主要任务包括目标分类、目标检测、目标分割等, 其中不同时期内视觉图像处理的侧重点也有所不同. 随着卷积神经网络(CNN) AlexNet[1]在分类任务大放异彩, 再到2015年深度残差网络ResNet[2]诞生并一举刷新当时多项视觉任务的最佳, 标志着带有残差块的更深的卷积神经网络时代的到来, 随后计算机视觉任务的重点也从分类转到了检测和分割.

目标检测任务是目前计算机领域的一大热点, 主要就是找出图像中所有我们感兴趣的目标, 并确定他们的类别和位置大小, 即解决物体是什么和在哪里这两个问题. 如今, 凭借着大量可用数据集、快速先进的GPU 以及更好的算法框架, 我们可以轻松用深度学习模型训练计算机以高精度检测出图像里的诸多目标.目前主流的CNN目标检测算法主要分为两大类: 一种是以RCNN[3]和Faster-RCNN[4]等为主要代表的两阶段检测算法(two-stage), 另一种是以SSD[5]及YOLO[6]系列等为代表的单阶段检测算法(one-stage). Twostage算法多是先生成大量的候选瞄框(anchors), 再进行分类和定位, 尽管在Faster R-CNN中, 生成瞄框网络RPN (region proposal network)和CNN分类定位网络融合在一起, 无论在速度上还是精度上都得到了不错的提高, 然而Faster-RCNN还是达不到实时的目标检测, 其中预先获取候选框, 然后再对每个候选框分类定位的计算量还是比较大. 而one-stage算法使用端到端的网络进行目标检测, 只用一个CNN网络便可实现目标的分类和定位, 在检测速度上更胜一筹, 其中的YOLOv3[7]系列算法兼具了速度和不错的精度, 因此在工业界都有广泛应用[8]. YOLOx-Darknet53[9]则是在YOLOv3的骨干网络(backbone)基础上使用大量先进技巧(trick), 因此比原网络有更高的检测精度, 更加兼具了工业应用中的精度和速度要求.

随着注意力机制[10]在计算机视觉领域的广泛应用, 以及考虑到YOLOx-Darknet53骨干网络的特征提取能力仍有不足的问题, 本文结合CoTNet[11]的思想,重新设计了CoA (contextual attention)模块, 并将其融合在Darknet53中的残差块, 这加强了骨干网络的特征提取能力; 并依据注意力模块SimAM[12]对检测头前的特征层加强空间和通道(spatial and channel)的关注, 即实现3D Attention. 综上, 本文设计了一个全新的YOLOx检测网络, 改进后的网络具有更强的特征提取能力和目标检测能力, 对小中大的目标检测精度都有提升, 更加能满足工业界对不同大小物体检测精度的要求.

1 YOLOx-Darknet53算法

YOLOx-Darknet53算法[9]就是在YOLOv3骨干网络的基础上进行消融实验, 尝试各种优化trick最终改进得到的优化算法. 主要的优化点有输入端的数据增强、检测端的解耦头(decoupled head), 以及预测框的检测方式从Anchor-based变为Anchor-free等.

输入端通过Mosaic加上MixUp[13]的数据增强方式, 对训练集中随机抽取的图片进行随机裁剪、随机缩放、随机排布等方式进行拼接, 生成新融合的图片.由于融合图片的复杂性和多目标性, 且一定程度上相当于扩大了batch size, 因此网络模型可以不通过ImageNet[14]数据集预训练和迁移学习, 仅根据自有数据集从头开始训练便能达到很好的检测效果, 这在提升网络检测精度的同时也增强了网络的鲁棒性和泛化能力.

YOLOx-Darknet53还将原来的YOLO-head改为decoupled head (YOLOx-Head), 将原来由单个卷积统一得到的检测信息改为3个分支输出, 实现了将置信度(conf)、瞄框偏移量(x,y,w,h)、类别(class)信息解耦, 让分类和回归更加精确. 作者在权衡精度和速度后改进解耦头如图1, 在仅增加一点参数的同时使得网络收敛速度更快, 精度也更高一些. YOLOx-Darknet53网络的损失值也由3部分组成, 分别是目标置信度损失(loss_obj)、目标定位损失(loss_iou)以及目标类别损失(loss_cls). 网络的总损失Loss组成关系如下:

图1 改进后的Yolox-Head

其中,α1、α2、α3为平衡系数 (即可自己调节的超参数,原网络采用的是5, 1, 1, 改进网络与原网络保持一致,未对损失函数进行修改). 定位损失采用的是IOU损失函数, 目标损失和置信度损失均采用二值交叉熵损失函数(binary cross entropy, BCE).

除此之外, 预测框的检测方式从Anchor-based变成了Anchor-free, 大大减少了生成预测框数量及所需参数, 并结合标签分配中的初步筛选、SimOTA方法[15]将预测框和目标框关联起来, 筛选出更加合适的正样本进行训练, 不断的预测迭代更新参数, 让网络的检测结果更加准确. 但这些tricks大多是对输入端和检测端进行改进, 并没有改变网络本身的骨干, 没有加强骨干网络的特征提取能力, 因此本文将从这一方面做主要改进, 进一步提升网络对不同大小目标的检测效果.

2 方法与改进

2.1 CoA模块

随着Transformer[16]开启注意力机制以来, 越来越多研究者将注意力结构迁移应用在计算机视觉任务中,但大多还是通过Self-Attention中的查询(query)和键值(key)的交互来获得注意力矩阵, 并未考虑相邻key之间的丰富信息, 其大致结构如图2所示. 而CoTNet(contextual transformer network)[11]设计了新的注意力块,充分利用输入键之间的上下文信息来生成动态注意力矩阵, 从而增强视觉表示能力. 本文的CoA (contextual attention)正是基于CoTNet改进的注意力模块, 其在Darknet53残差块中的结构如图3所示.

图2 传统的Self-Attention模块

图3 改进后的CoA模块

在CNN中常用的Self-Attention模块中keys, query,value都是由上一层的input通过1×1卷积映射而来的.由于Self-Attention对输入特征的位置信息并不敏感,所以也会在query层增加一个位置(position)信息, 然后与query和keys交叉生成的信息相互融合, 再经过归一化(Softmax)操作得到概率分布, 最后和value矩阵相乘得到注意力矩阵. 其中主要的注意力权重来自于query-key pair之间的交互, 而特征层keys由1×1卷积生成, 并没有包含input中丰富的相邻键特征, 没能充分利用keys之间的上下文信息.

在CoA模块中, input经过3个不同的卷积块抽取出keys, query和value.先采用3×3的卷积先对input的相邻键进行上下文编码获得的静态上下文特征keys, 再用不同的1×1卷积提取特征层query和value.不同于CoT模块, 其中特征层query采用1×1卷积进行特征提取, 接着将有上下文特征的keys和加强特征层query拼接(concat), 再通过两个连续的1×1卷积块并利用Softmax操作将结果归一化为概率分布, 得到注意力权重矩阵A, 此时的A中每个空间位置都考虑了query和keys的全局特征. 权重矩阵A与value进行矩阵相乘后可以得到拥有更强注意力机制的全局动态特征层, 最后还要和静态上下文特征层keys进行融合, 融合之后再进行1×1卷积达到跨通道信息交融和升维目的, 最终得到了对突出点着重关注、同时不缺失对普通点关注的注意力输出特征层(output). 公式如下:

CoA中的每个卷积(Conv)都包含普通卷积Conv2d、批量归一化BN、激活函数Mish[17].Mish是2019年提出用来代替ReLU函数的新型激活函数, 其函数表达式如下:

其中,X是前面归一化层传过来的参数值.Mish激活函数的图像如图4所示.

图4 Mish激活函数图像

结合图像可以得知,Mish激活函数在X为负值的情况下, 并没有完全截断信息流, 而是允许存在轻微的梯度流, 保留更多信息流入神经网络; 当X为正值时,函数梯度逐渐趋近于1, 相对ReLU更加平滑, 梯度下降效果更好, 从而得到更好的准确性和鲁棒性. 鉴于以上优点, CoA模块采用Mish激活函数替代CoT中采用的ReLU激活函数.

CoA模块能够根据骨干网络残差块中前后通道的不同进行适配, 弥补了CoT模块通道不变性的缺点, 同时改进特征层query和keys的获取, 相较于Self-Attention模块, 加强了对输入特征提取, 进而生成更强的注意力矩阵权重, 再结合value和keys获得更强的、拥有动静态结合的注意力矩阵, 最后通过1×1卷积实现跨通道信息交融和升维目的. 综上, 改进后的CoA模块既可以加深通道特征又能保留了原有的空间特征, 强化了网络对输入的特征提取能力.

2.2 最终改进后的YOLOx网络

注意力机制本身是模仿人的神经系统提出的概念.中大课题组的SimAM[12]也受此启发, 其基于一些著名的神经科学理论, 构建了一个简单又非常有效的注意力模块, 无须其他参数便可通过十行代码计算解析解为特征图推导出3D注意力权值, 兼顾了对空间和通道特征的关注. SimAM是一个轻量化又可以非常灵活地嵌入到卷积网络的视觉任务中, 在本文检测网络中, 将其加在输入YOLOx-Head之前的一层特征层上, 这能够简单地对特征层加强一些特征提取, 提升网络的检测效果.

本文最终改进的YOLOx网络如图5, 将CoA模块替代普通的3×3卷积, 形成新的残差块融合到骨干网络中以及在检测头YOLOx-Head前增加3D注意力模块.

图5 改进后的YOLOx检测网络

3 实验分析

3.1 实验数据集及环境介绍

为了较好的评估改进注意力模块的效果, 原网络与改进的网络均是在Pascal VOC2007公开数据集上训练和预测的, 该数据集主要包含人、狗、车等常见的20个类别, 共9 963张图片, 其中用于训练的图片为5 011张(trainval data), 测试集(test data)图片为4 952张.训练网络所使用的服务器环境配置如表1.

表1 服务器环境和参数

3.2 实验评价指标

实验采用COCO目标检测评价指标, 能够更加全面的展示网络对不同尺寸物体的检测精度. 本文主要考虑的评价标准是平均精度均值(mean average precision)AP@[.5:.95]和AP@0.5. 该精度值由P-R曲线积分求和获得, 其中P为查准率, 表示网络预测出的检测框中检测正确的比例;R为查全率, 表示网络预测正确的框在所有标注框中的比例, 具体公式如下:

其中,TP(true positive)为将正样本预测为正确的个数;FP(false positive)为将负样本预测为正确的个数;FN(false negative)为将正样本预测为错误的个数(漏框).P-R曲线是由R为横轴,P为纵轴组成的曲线, AP值则是曲线和坐标轴所围成的面积, 而mAP则是多类物体求得AP后再求和平均的精度值. 其中AP@0.5是指判断正负样本的IOU阈值设为0.5时求得的mAP; AP@[.5:.95]是IOU阈值从0.5以0.05为步进增加到0.95的10个阈值求得的mAP的均值, 相比AP@0.5更为严格, 更能作为检测网络精确度的评价指标. 往往AP@[.5:.95]越高, 越能代表网络具有更好的检测精度.

3.3 实验结果与分析

为了保证实验的公平性, 改进的YOLOx网络与原网络YOLOx-Darknet53采用相同的训练策略[9]. 在VOC数据集上从头开始训练300 个epochs, 所有超参数设置相同: 输入图片大小为(640, 640), batch size设置为8, 初始学习率设为0.01且采用余弦退火(cosine annealing)方法来衰减学习率, 权重衰减系数为5E–4,以及最后在训练结束前15 epochs自动关掉数据增强继续训练至完成, 目的是让检测网络避开数据增强导致的不准确标注框的影响, 从而在自然图片的数据分布下完成最终的收敛.

图6和图7分别展示了原网络和改进网络训练过程中损失Loss和检测精度AP@[.5:.95]的变化. 从图中可以看出, 改进后的网络曲线相对而言都比较平滑,训练过程损失波动较小, 收敛效果更好, 精度更高, 网络更加稳定. 正如上面所说, 在训练过程的最后15 epoch中去掉数据增强, 网络损失得以进一步下降, 收敛到更小的损失值, 使得网络检测精度进一步提升并最终收敛到一个稳定的峰值.

图6 原网络与改进网络的损失值曲线

图7 原网络与改进网络的检测精度曲线

使用VOC2007数据集对不同网络的训练所得到的具体检测结果如表2所示. 通过表2 的实验结果可以看出, 将CoA模块与Backbone中的残差块融合后,会增加大概10M的参数量, 但AP@[.5:.95]和AP@0.5都比原网络提升了1.4个百分点, 其中对大目标的检测提升1.5个百分点, 对较难检测的小目标也有0.4个百分点的提升. 由于小目标本身容易因为过深的网络深度从而丢失边缘信息导致检测精度下降, 且CoA模块本身一定程度加深了网络深度, 但融合后的Backbone对小目标的精度仍有小幅提升, 这正好说明了CoA模块确实加强了Backbone的特征提取能力. 在融合了CoA模块的Backbone后的YOLOx-Head检测头前加入了SimAM模块, 对即将输入检测头前的不同尺寸特征层再进行一次简单地3D注意力关注, 形成了最终改进的YOLOx检测网络, 在不增加参数的同时, AP@[.5:.95]比只改进Backbone的网络提升0.2个百分点, 除此之外的指标也都有0.2左右的提升. 最终改进的YOLOx检测网络比原网络YOLOx-Darknet53的精度提升大多在1.5以上, 其中最主要的指标AP@[.5:.95]和AP@0.5的提升分别为1.6和1.5个百分点. 上述实验结果也表明改进后的YOLOx网络不仅对大物体的特征关注明显, 也对小物体的边缘信息有所加强, 能够对不同大小的物体有更准确地检测.

表2 不同网络在VOC2007测试集的实验结果

SSD-ResNet50检测网络同样是Backbone采用残差结构性能优异的改进版one-stage SSD网络. 由表2可知, SSD的AP@0.5较高, 是因为其采用Anchorbased的多尺度大量瞄框方式, 当IOU=0.5时, 获取到的正样本预测框较多, 即TP多, 因此检测精度较高, 但当评价指标为更加严格的AP@[.5:.95]时, 获取到的大量预测框是负样本, 即FP多, 检测精度明显下降. 本文最终改进版的YOLOx 对比改进版SSD, 除AP@0.5和APs外的指标基本都大幅超越, 其中最重要的指标AP@[.5:.95]超过3个百分点, 说明改进后的YOLOx网络达到了高精度的检测水平.

图8是SSD-ResNet50网络与YOLOx-Darknet53原网络、最终改进的YOLOx网络的检测效果对比图,其中置信度阈值设置为0.4, 非极大值抑制(NMS)阈值设置为0.45. 通过第2张对比图可以看出SSD网络的检测框较多, 虽然能找出正确检测目标, 但同时错检率较高, 检测准度有限. 综合测试图片的检测效果来看,本文改进网络的检测效果比原网络和SSD网络都更加精准, 能够很好地改善漏检、错检的情况, 更加适合实际工业应用中高检测准度的要求.

图8 检测效果对比图

4 结论与展望

本文根据注意力机制和CoTNet的优缺点, 基于YOLOx-Darknet53中残差块的特性改进得到CoA模块, 并将其融入于Darknet53中, 从而获得具有更强特征提取能力的骨干网络, 并结合最近的SimAM模块设计了一个全新的YOLOx检测网络, 检测精度比原网络大多提高了1.5个百分点, 比改进版SSD网络也有大幅提升, 总体检测效果有很大的提升, 更加符合工业界对不同大小物体检测准度的要求. 但由于CoA模块的引入, 改进后的网络也带来了参数量和计算量增加, 因此后续研究会基于此考虑尝试优化主干网络结构, 降低网络深度, 争取在减少参数量、计算量的同时进一步提升检测精度.

猜你喜欢
残差特征提取卷积
同步定位与建图特征提取和匹配算法研究
基于全卷积神经网络的猪背膘厚快速准确测定
多级计分测验中基于残差统计量的被试拟合研究*
基于图像处理与卷积神经网络的零件识别
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
基于深度卷积网络与空洞卷积融合的人群计数
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
卷积神经网络概述
基于曲率局部二值模式的深度图像手势特征提取
测量数据的残差分析法