一、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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐