文章目录

  • 一、yolov4较yolov3的优化点
    • 1.1 网络结构层面
      • (1) CSPDarknet53(借用CSP结构)
      • (2) SPP
      • (3) PAN(借用PANet)
    • 1.2 优化策略
      • (1) mosaic 4张不同的图片拼接起来
      • (2) ciou
      • (3) *消除grid网格敏感——预测目标中心点可以取到网格边界/增加正样本的数量* Eliminate grid sensitivity
  • 二、yolox较yolov4的优化点
    • 2.1 网络更新--解耦检测头
    • 2.2 Anchor-Free机制以及优缺点
      • 2.2.1 (附录) Anchor-based机制的优缺点
    • 2.3 *更先进的正负样本匹配策略(simOTA)*
      • 步骤
  • 三、focal loss
    • 3.1 背景
    • 3.2 做法
    • 3.3 更细节

一、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=strideinput−keral+padding∗2​+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−((AC−U)/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​)=−(1−pt​)γlog(pt​)

其中, p t p_t pt​是预测概率, 1 − p t 1-p_t 1−pt​是样本权重, γ \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

目标检测之yolo系列模型-yolov4/yolox相关推荐

  1. 目标检测之yolo系列

    YOLO v.s Faster R-CNN 1.统一网络:YOLO没有显示求取region proposal的过程.Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过 ...

  2. 【目标检测】YOLO系列Anchor标签分配、边框回归(坐标预测)方式、LOSS计算方式

    1.YOLOv1 标签分配:GT的中心落在哪个grid,那个grid对应的两个bbox中与GT的IOU最大的bbox为正样本,其余为负样本,(由于是回归模型,不是分类模型,其解决类别不平衡的方式为各项 ...

  3. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv2详解及复现

    YOLO v2 Yolov2论文链接:YOLO9000: Better, Faster, Stronger yolov2的改进 从Yolov2论文的标题可以直观看到就是Better.Faster.St ...

  4. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv1详解及复现

    检测器通常能够被分为两类,一类是two-stage检测器,最具代表的为faster R-CNN:另一类是one-stage检测器,包括YOLO,SSD等.一般来说,two-stage检测器具有高定位和 ...

  5. yolo v3制作自己的数据_小白也能弄懂的目标检测之YOLO系列 第一期

    大家好,上期分享了电脑端几个免费无广告且实用的录屏软件,这期想给大家来讲解YOLO这个算法,从零基础学起,并最终学会YOLOV3的Pytorch实现,并学会自己制作数据集进行模型训练,然后用自己训练好 ...

  6. (学习笔记)【目标检测】YOLO系列简单归纳

    文章目录 絮絮叨叨 一.YOLO发展史 二.逐篇学习 1.You Only Look Once: Unified, Real-Time Object Detection 2.YOLO9000 3.YO ...

  7. 【目标检测】YOLO系列——YOLOv1详解

    本篇是关于目标检测算法YOLOv1的学习笔记.网上的博客大多是摘抄翻译论文中的重点内容加上自己的理解,或者是梳理论文的大致思路,在没看过原文的情况下可能总会有些看不懂的地方.所以强烈建议博客搭配原文食 ...

  8. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)

    一.源码下载及requirments 源码下载地址:https://github.com/ultralytics/yolov5 (持续更新中) 本人所用环境如下: pytorch:1.8(因为cuda ...

  9. 【目标检测】yolo系列yolo x学习笔记(2021年旷视)

    目录 一.速度和检测效果 二.yoloX的改进点 2.1 Decoupled Head(解耦头) 2.2数据增强:Mosaic + MixUp 2.3 Anchor Free 2.4 Label As ...

最新文章

  1. [vijos1234]口袋的天空最小生成树
  2. 爬虫爬取https://www.exploit-db.com/老是跳过一个
  3. 了解Java的发展史
  4. tshark删除pcap文件中与网关通信的数据包
  5. 数据:以太坊矿工收入中的交易手续费占比达56%
  6. System.out.printf()的使用方法
  7. 微信小程序选择图片,查看图片信息,浏览图片,图片上传
  8. 欧拉函数知识点总结及欧拉函数打表代码(数论)
  9. 大厂的 404 页面都长啥样?看到最后一个,我笑了。。。
  10. 计算机的配置鼠标,电脑双鼠标怎么设置 电脑双鼠标设置方法
  11. PHP5.3.1 安装包VC9/VC6区别
  12. java 根据银行卡号来获取银行名称
  13. 软件开发项目 衡量指标_不衡量开发人员—衡量项目
  14. ArcGIS根据矢量图层范围裁剪影像
  15. MySQL Shell 安装与基本使用
  16. Excel必知必会——count,counta,countif,countifs
  17. MySQL 5.7.17.0 下载安装笔记
  18. 百度地图LBS应用开发代码
  19. 我一个高考英语94的渣渣是怎么通过四六级的(学习方法技巧)
  20. 《自然-机器智能》:神经形态技术可使大型深度学习网络节能16倍

热门文章

  1. 20.1-Android12 系统源码下载
  2. 笔记本电脑java版下载教程_Java面向对象编程笔记本 PDF 下载
  3. 汉字和数字站几个字节,估算内存占用情况
  4. Linux---使用nice、cpulimit 和 cgroups管理系统资源
  5. Sql server 2008镜像配置步骤
  6. oracle oaf界面个性化,个性化EBS标准OAF页面(EO,+SQL全版本).doc
  7. 数据挖掘与数据分析应用
  8. SpringBoot整合腾讯云COS(上传)
  9. tzoj3315 买火车票(线段树+区间修改+区间查询)
  10. 微信-小程序人员流动信息管理系统计算机毕业设计javaweb