目标检测之yolo系列模型-yolov4/yolox

一、yolov4较yolov3的优化点

https://www.cnblogs.com/cucwwb/p/13166288.html

  • 总结:
    (1)对主干网络进行了修改,将原先的Darknet53改为CSPDarknet53,其中是将激活函数改为Mish激活函数,并且在网络中加入了CSP结构。
    (2)对特征提取过程的加强,添加了SPP,PANet结构。
    (3)在数据预处理阶段加入Mosaic方法。
    (4)在损失函数中做了改进使用了CIOU作为回归Loss。

M i s h ( ) = x × t a n h ( l n ( 1 + e x ) ) Mish() = x×tanh(ln^{(1+e^x)}) Mish()=x×tanh(ln(1+ex))

1.1 网络结构层面

(1) CSPDarknet53(借用CSP结构)

CSP是可以增强CNN学习能力的新型结构,CSPNet将底层的特征映射分为两部分,一部分经过密集块和过渡层,另一部分与传输的特征映射结合到下一阶段。
在这里插入图片描述

原文表达的作用:
加快网络的推理速度,减少对显存的使用,并且提升网络的学习能力。

  1. 更强的CNN的学习能力;
  2. 移除计算瓶颈;
  3. 减小使用的内存;

原文通过通道分割,但实际上不是,代码中是先用卷积下采样,然后分别输入两个conv结构中。
在这里插入图片描述

(2) SPP

优点:解决多尺度的问题
分别经过卷积和大小5X5,步距为1,padding为2;卷积和大小9X9,步距为1,padding为4;卷积和大小13X13,步距为1,padding为6;输出都是13X13X2046,和原始的拼接起来,最后的shape为13X13X2046。

此处输入图片的描述

附:卷积和的计算公式

o u t p u t = i n p u t − k e r a l + p a d d i n g ∗ 2 s t r i d e + 1 output = \frac{input - keral + padding * 2}{stride} + 1 output=strideinputkeral+padding2+1

(3) PAN(借用PANet)

上采样:FPN
上采样+下采样:PAN
特征融合:CONCAT策略,在深度方向进行拼接

1.2 优化策略

(1) mosaic 4张不同的图片拼接起来
(2) ciou

IOU:一般的iou,两个框的交集除以并集
GIOU:= i o u − ( ( A C − U ) / A C ) iou - ((AC-U)/AC) iou((ACU)/AC)
其中, AC为两个框的外接矩形的面积,U为两个框的并集的面积
缺点:

  1. 当两个框并列时,退化为IOU计算公式;
  2. 两个框,小框在大框中时,无法衡量两个框的位置关系,基于这一点提出DIOU

DIOU:= i o u − ( d 2 / c 2 ) iou - (d^2 / c^2) iou(d2/c2)
其中d为两个框中心点的距离,c为两个框外接矩形的对角线的距离
CIOU:= i o u − ( d 2 / c 2 + a v ) iou - (d^2 / c^2 + av) iou(d2/c2+av)
考虑到了距离和框的宽高
此处输入图片的描述

这也是两者在loss function上的区别:

YOLO V4相较于YOLO V3,只在bounding box regression做了创新,用CIOU代替了MSE,其他两个部分没有做实质改变。

(3) 消除grid网格敏感——预测目标中心点可以取到网格边界/增加正样本的数量 Eliminate grid sensitivity
  • 回顾yolov3
    预测目标边界框的时候,通过1X1卷积层滑动grid cell会针对每个anchor预测回归框参数以及每个类别的score分数,回归参数则为 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th,公式如下:虚线为anchor,蓝色为gt框。
    在这里插入图片描述
    问题在于sigmoid激活函数在0和1范围内取值,因此如果真实目标的中心点刚好落在grid cell边界上,是无法预测正确的。

  • yolov4的改进:修改激活函数
    在这里插入图片描述

二、yolox较yolov4的优化点

网络结构基于yolov5 v5.0构建的

2.1 网络更新–解耦检测头

加速收敛,提升AP,参数不共享;类别一个检测头,位置和objectness共用一个检测头;

需要注意的是,实验效果是跟yolov3进行比较,看结果是能更快的收敛,但网络是从yolov5借鉴的,所以效果就emmm值得商榷,结果如下:
在这里插入图片描述

2.2 Anchor-Free机制以及优缺点

  • anchor-free机制
    在每个grid cell来预测四个参数 t x , t y , t w , t h t_x, t_y, t_w, t_h tx,ty,tw,th,这里是相对特征层的,还原到原图需要乘以步距。可以看到跟anchor没关,是个anchor-free的网络。
    此处输入图片的描述

  • 优点:

  1. 使用类似分割的思想来解决目标检测问题;
  2. 不需要调优与anchor相关的超参数;
  3. 避免大量计算GT boxes和anchor boxes 之间的IoU,使得训练过程占用内存更低。
  • 缺点:
    https://m.fx361.com/news/2022/0413/10766620.html
    1.正负样本极端不平衡;
    2.语义模糊性(因为主要靠关键点检测,如果两个目标中心点距离太近,更甚重叠,就会造成语义模糊);
    现在这两者大多是采用Focus Loss和FPN来缓解的,但并没有真正解决。
2.2.1 (附录) Anchor-based机制的优缺点
  1. 优点:
    (1)使用anchor机制产生密集的anchor box,使得网络可直接在此基础上进行目标分类及边界框坐标回归;
    (2)密集的anchor box可有效提高网络目标召回能力,对于小目标检测来说提升非常明显。

  2. 缺点:
    (1)anchor机制中,需要设定的超参:尺度(scale)和长宽比( aspect ratio)是比较难设计的。这需要较强的先验知识。
    (2)冗余框非常之多,会造成正负样本严重不平衡问题,也是one-stage算法难以赶超two-stage算法的原因之一。
    (3)网络实质上是看不见anchor box的,在anchor box的基础上进行边界回归更像是一种在范围比较小时候的强行记忆。
    (4)基于anchor box进行目标类别分类时,IOU阈值超参设置也是一个问题。
    ————————————————
    版权声明:本文为CSDN博主「ytusdc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ytusdc/article/details/107864527

此处输入图片的描述

2.3 更先进的正负样本匹配策略(simOTA)

一句话解释:目标时怎样以最低的成本(cost)将GT分配给对应的样本,公式为:
在这里插入图片描述
最小化cost可以理解为让网络以最小的学习成本学习到有用的知识。

步骤

(1)预筛选grid cell
根据GT box和fixed center area来选取grid cell
在这里插入图片描述
(2)cost具体计算公式
在这里插入图片描述
(3)计算得到grid去预测哪个GT代价更小
(3.1) 计算grid与GT的cost矩阵
在这里插入图片描述
(3.2) 计算grid与GT的IoU矩阵
在这里插入图片描述
(3.3) 在grid与GT的IoU矩阵中计算grid的数量
在这里插入图片描述
(3.4)最后根据grid数量取cost矩阵中cost最小的 grid对应的gt框,再得到分配矩阵,1为正样本,0为负样本

(3.5) 如果同一个grid分配给了多个GT框的话,选取cost最小的那个GT。

三、focal loss

3.1 背景

针对one-stage的模型,目的是解决正负样本不均衡的问题。(负样本会有1w-10w,权重小,数量多也会过多关注)

3.2 做法

降低易分样本的loss贡献,让网络专注于学习难分的样本,达到平衡样本的目的,因为负样本数量巨多,就会有很多的易分样本。

3.3 更细节

类别不平衡问题是目标检测任务中常见的问题之一,即在标注数据中,某些类别的样本数量远远大于其他类别的样本数量。这会导致模型对于少数类别的识别能力较弱,易于因为平衡问题导致分类性能下降。Focal Loss正是为了解决这一问题而提出的一种损失函数。

Focal Loss是一种动态平衡损失函数,它主要通过调整难易样本的权重,使得难以分类的样本更受重视,而易分类的样本则更加忽略,从而解决了数据类别不平衡的问题。具体而言,Focal Loss将正常的二元交叉熵损失函数分解为两个部分,分别考虑易分和难分样本的权重:

F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t) = -(1-p_t)^\gamma \log(p_t) FL(pt)=(1pt)γlog(pt)

其中, p t p_t pt是预测概率, 1 − p t 1-p_t 1pt是样本权重, γ \gamma γ 是调整因子,用于平衡易分和难分样本的权重。 γ \gamma γ 取值越大,难分样本获得的权重越多,容易分样本的权重越少。

Focal Loss的原理是通过平衡权重,让难分样本在损失函数中所占据的比例变大,从而给予更大的惩罚,在训练中更容易识别这些样本。在实验中,Focal Loss已经被证明可以提高目标检测的性能和准确性,特别是在类别不平衡问题比较严重的数据集中表现更为突出。


参考:
yolo系列:
https://blog.csdn.net/ThomasCai001/article/details/123593690?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22123593690%22%2C%22source%22%3A%22ThomasCai001%22%7D
yolov3:https://blog.csdn.net/leviopku/article/details/82660381
yolox:https://www.bilibili.com/video/BV1JW4y1k76c/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=82b50e78f6d8c4b40bd90af87f9a980b

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thomas_Cai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值