YOLOX学习笔记

本文详细介绍了YOLO系列的发展,从YOLOv3的SPP模块到YOLOv4的Mosaic数据增强、CSP结构和Mish激活函数,再到YOLOv5的可配置网络结构,最后聚焦于YOLOX的各种优化技巧,如DecoupledHead、Strong augmentation等。YOLOX在YOLO系列的基础上进行了大量改进,提升了模型性能和效率。
摘要由CSDN通过智能技术生成

参考文献:江大白老师
必备基础:YOLOv3:江大白老师视频讲解

论文地址:YOLOX: Exceeding YOLO Series in 2021
网络结构图:Yolox-Darknet53

非常感谢江大白老师的工作!

YOLOv3

在这里插入图片描述
实际上,YOLOX是在YOLOv3_spp版本上进行的优化,即在YOLOv3的Backbone网络后面增加了SPP组件。

Darknet53

在这里插入图片描述

SPP

论文链接:Spatial Pyramid Pooling
在这里插入图片描述
实现方法:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

可简化为如下:
在这里插入图片描述

YOLOv4

在这里插入图片描述
相比于YOLOv3的主要改进:
输入端:采用Mosaic数据增强;
Backbone:采用了CSPDarknet53、Mish激活函数、Dropblock等方式;
Neck:采用了SPP、FPN+PAN结构;
输出端:采用CIOU_Loss、DIOU_Nms操作。

推荐博客:Cai Yichao

Mosaic

YOLOv4提出的新的数据增强方式,对四张图像进行融合
在这里插入图片描述

CSP结构

论文链接: CSPNet
论文提出Cross Stage Partial(CSP)结构,其初衷是减少计算量并且增强梯度的表现。
主要思想是:在输入block之前,将输入分为两个部分,其中一部分通过block进行计算,另一部分直接通过一个shortcut进行concatenate。

可简化如下:
CSP结构

Mish激活函数

论文地址:Mish
tanh的公式如下:
在这里插入图片描述
Mish激活函数的公式为:
在这里插入图片描述在这里插入图片描述

  • 上图为Mish的曲线。首先其和ReLU一样,都是无正向边界的,可以避免梯度饱和;
  • 其次Mish函数是处处光滑的,并且在绝对值较小的负值区域允许一些负值。
  • Mish激活函数的计算复杂度比ReLU要高不少,如果你的计算资源不是很够,可以考虑使用LeakyReLU代替Mish

目前的普遍看法是,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

PAN + FPN

论文链接:Path aggregation network for instance segmentation

PAN结构即为下图中(b)Bottom-up augmentation
FPN层自顶向下传达强语义特征,而PAN则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合
在这里插入图片描述
YOLOv4中的改进:PANet网络的PAN结构中,两个特征图结合是采用shortcut操作,而Yolov4中则采用concat操作,特征图融合后的尺寸发生了变化。
在这里插入图片描述

YOLOv5

在这里插入图片描述

  • 在Yolov5网络中,与Yolov4相比最大的创新点在于,作者将网络结构,做成了可选择配置的方式。
  • 比如主干网络结构,根据各个网络的宽度、高度不同,可以分为Yolov5s、Yolov5l、Yolov5s、Yolo5x等版本。

YOLOX

有了前面的铺垫,接下来进入正题。

总览网络模型

(1) 基准模型:Yolov3_spp

选择Yolov3_spp结构,并添加一些常用的改进方式,作为Yolov3 baseline基准模型;

(2) Yolox-Darknet53

对Yolov3 baseline基准模型,添加各种trick,比如Decoupled Head、SimOTA等,得到Yolox-Darknet53版本;

(3) Yolox-s、Yolox-m、Yolox-l、Yolox-x系列

对Yolov5的四个版本,采用这些有效的trick,逐一进行改进,得到Yolox-s、Yolox-m、Yolox-l、Yolox-x四个版本;

(4) 轻量级网络

设计了Yolox-Nano、Yolox-Tiny轻量级网络,并测试了一些trick的适用性;

性能对比:
在这里插入图片描述

网络结构

YOLOX-Darknet53:
在这里插入图片描述
改进方案:
在这里插入图片描述

Decoupled head

在这里插入图片描述
实现方式:先使用 1个1x1 的卷积进行降维,然后在两个分支里,各使用了 2个3x3 卷积进行特征提取

提出思路:将YOLO的输出端改为End-to-End方式(无NMS)时,AP降低很多;而对FCOS进行修改时,性能并没有怎么下降
在这里插入图片描述
论文连接:End-to-End

通过实验得到,采用Decoupled Head的方式,与原来相比,不单单是精度上的提高,网络的收敛速度也加快了。
在这里插入图片描述

但是需要注意的是:将检测头解耦,会增加运算的复杂度。

结论:目前Yolo系列使用的检测头,表达能力可能有所欠缺,没有Decoupled Head的表达能力更好。

进一步剖析decoupled head:
在这里插入图片描述
在这里插入图片描述
三个分支:
(1) cls_output:主要对目标框的类别,预测分数。因为COCO数据集总共有80个类别,且主要是N个二分类判断,因此经过Sigmoid激活函数处理后,变为202080大小。

(2) obj_output:主要判断目标框是前景还是背景,因此经过Sigmoid处理好,变为20201大小。

(3) reg_output:主要对目标框的坐标信息(x,y,w,h)进行预测,因此大小为20204。

最后三个output,经过Concat融合到一起,得到202085的特征信息。

Strong augmentation

Mosaic

在这里插入图片描述
论文链接:YOLOv4
Yolov4的mosaic数据增强参考了CutMix数据增强方式, 是CutMix数据增强方法的改进版。
基本思路:mosaic数据增强利用了四张图片,对四张图片进行拼接,每一张图片都有其对应的bbox,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的bbox,然后将新的图片作为输入,相当于一次传入四张图片。
论文中说这极大丰富了检测物体的背景,且在BN计算的时候一次会计算四张图片的数据!

MixUp

论文链接:mixup:BEYOND EMPIRICAL RISK MINIMIZATION
基本思路:从训练样本中随机抽取两个样本进行简单的随机加权求和,同时样本的标签也对应加权求和,然后预测结果与加权求和之后的标签求损失,在反向求导更新参数。
mixup采用对不同类别之间进行建模的方式实现数据增强,而通用数据增强方法则是针对同一类做变换
在这里插入图片描述

有两点需要注意:

(1) 在训练的最后15个epoch,这两个数据增强会被关闭掉。而在此之前,Mosaic和Mixup数据增强,都是打开的,这个细节需要注意。

(2) 由于采取了更强的数据增强方式,作者在研究中发现,ImageNet预训练将毫无意义,因此,所有的模型,均是从头开始训练的

Anchor-free

anchor-based机制

根据设定好的规则,通常是与gt_box的IOU最大的anchor作为用于网络回归的fg(foreground),网络回归的目标是fg到gt_box的offset。最终由fg和网络输出的offset得到pd_box。
在这里插入图片描述
以YOLOv3为例:
在这里插入图片描述
黄色框:gt_box
蓝色框:anchor,为目标中心点所在的单元格对应的anchor,每个单元格都有3个anchor。其中,13 * 13中第二个anchor为被选定的fg
当输入为416*416时,网络最后的三个特征图大小为13 * 13,26 * 26,52 * 52。

当采用COCO数据集,即有80个类别时。
基于每个anchor,都有x、y、w、h、obj(前景背景)、class(80个类别),共85个参数。
因此会产生3 * (13 * 13+26 * 26+52 * 52)* 85 = 904995个预测结果

如果将输入从416 * 416,变为640 * 640,最后的三个特征图大小为20 * 20, 40 * 40, 80 * 80。
则会产生3 *(20 * 20 + 40 * 40 + 80 * 80) * 85 = 2142000个预测结果

anchor-free 机制

论文连接:CornerNet: Detecting Objects as Paired Keypoints

a. 输出的参数量:
anchor-free:当输入为640 * 640时,最终输出得到的特征向量是85 * 8400,即8400 * 85=714000个预测结果
anchor-based:当输入为640 * 640时,得到2142000个预测结果
足足少了2/3的参数量!!!

虽然最终得到的feature map尺寸是相同的,但是因为anchor-base需要在每个格子的中心点处生成3个anchor,而anchor-free只需在每个格子的中心点处生成一个box,因此参数量大大减小。

b. anchor的信息
在这里插入图片描述
上面分支下采样了5次,Decoupled Head①的输出为20 * 20 * 85大小,即有400 个box,所对应的box大小为32 * 32
中面分支下采样了4次,Decoupled Head②的输出为40 * 40 * 85大小,即有1600个box,所对应的box大小为16 * 16
上面分支下采样了3次,Decoupled Head③的输出为80 * 80 * 85大小,即有6400个box,所对应的box大小为8 * 8
在这里插入图片描述
有了这些anchor之后,接下来就需要进行标签分配, 即分配正样本anchor和负样本anchor,由正样本anchor回归出正样本的预测框。

c. 标签分配

在8400个预测框中,只有少部分是正样本,绝大多数是负样本。

合理分配正样本的anchor的必要性
假如第3、10、15个anchor是正样本anchor,则对应到网络输出的8400个预测框中,第3、10、15个预测框,就是相应的正样本预测框。
在训练过程中,在生成的anchor基础上,网络不断地进行预测,不断地进行迭代,从而持续更新网络参数,让网络预测的越来越准。

但是,实际上分配为正样本的anchor可能也随着网络的更新在不断变化,这就对网络的预测造成了挑战。

论文采用的方法为:初步筛选 + SimOTA

① 初步筛选

初步筛选的方式主要有两种:根据中心点来判断、根据目标框来判断;

(1) 根据中心点来判断

规则:寻找anchor_box中心点,落在gt_boxes矩形范围的所有anchors。

multi positives

SimOTA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值