yolo v1

前言


相比同年的fast-rcnn和ssd都没有优势

详解


  • B=2,Pr(Object)为0或者1
  • 在v1中没有anchor的概念,预测的xywh是直接预测的box的位置,不像fast-rcnn和ssd中预测的这四个值都是相对我们anchor的回归参数。
  • 在预测时,输出的结果既包含了该box为某一个目标的概率,又包含了重合程度,与fast-rcnn和ssd直接预测的目标概率不一样。

    Backbone: GoogLeNet with no inception modules

Neck: None

Head: YOLO [fc(1570)->77(52+20)]



存在的问题:

  • 对群体小目标效果很差,比如一群鸟。因为对每个cell只预测2个bounding-box,而且属于同一个类别,意味着一次只能预测一个物体,所以导致网络的召回率极低。
  • 目标出现新的尺寸的时候,效果差。
  • 主要错误的原因就是定位不准确的问题,因为它是采用直接预测box位置,而不是fast-rcnn和ssd预测先对anchor的回归参数。
  • 由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。

yolo v2

前言


通过使用voc,imagenet数据集联合训练,能够识别的类别超过9000.

详解

效果:


  • 对训练收敛有很大帮助
  • 减少所需使用的正则化处理
  • 能够提升2个百分点map,帮助正则化模型


  • 采用基于anchor 偏移的预测可以简化目标边界框预测,使网络更加容易收敛和学习。

  • 使用anchor会使得map小幅度降低,但是召回率会有很大提升,从而意味着模型有更大的提升空间。

  • 在fast-rcnn和ssd的时候,作者并没有明确给出为什么要采用预测的anchor或者default-box,而是根据工程经验得出的。

  • anchor的聚类,采用k-means获取anchor

  • 在直接使用基于anchor的方式去训练,在训练前期会特别不稳定,不稳定的主要因素就来自预测x,y导致的。因为xy没有被限制,所以在加上偏移量tx和ty后,中心点可能出现在图像的任意一个地方。

  • 解决办法就是对tx和ty进行一个函数限制(sigmoid)。使得xy最终肯定在自己的grid-cell内。

  • 使用box聚类和限制txty,带来了5个点的提升。


    Backbone: darknet19
    Neck: None
    Head: passthrough [conv->1313anchor*(5+20)]

  • 77卷机使用33加1 * 1卷机替代。减少计算量小,防止过拟合;网络可以做的更深,更好的提取特征。

  • 使用全局平均池化代替fc,适应图像多尺度的输入。

  • 信息融合:结合更多底层的信息。最后的13x13,去融合26x26的特征图。即passlayer。

  • 效果提升1个百分点。

  • 多尺度训练
  • 每迭代十个batch,就把网络的输入尺寸进行随机的选择,由于v2的缩放因子是32,所以网络的输入尺寸都是32的整数{320,352,…,608},


yolo v3

前言


基本上只是整合了当时比较主流的网络的优点,比如FPN,基本没有太多的创新点。

详解




  • 表面darknet与resnet很像,但是仔细看会发现darknet是没有最大池化下采样层的。即用卷积代替池化。

  • 卷积核的个数更少,使得参数量和计算量变少。


    Backbone: darknet53
    Neck: None
    Head: [conv->1313anchor/3*(5+classes)]
    [conv->2626anchor/3*(5+classes)]
    [conv->5252anchor/3*(5+classes)]

  • 使用resnet的残差结构,提高特征提取能力。

  • 因为提高了提取特征的能力,所以检测头也从1个提高到3个。

  • 和v2一样

  • 正样本:针对每一个gt都会分配一个与之iou最大的bbox。
  • 如果预测结果与gt有重合且超过阈值,但iou不是最大,则直接丢弃这个预测结果。
  • 剩下的样本为负样本

yolo v3 spp



损失

yolo v3中使用的定位损失,差值平方的计算方法,即L2损失(MSE)。






  • 考虑到了重叠面积

  • 考虑到了两个中心的距离

  • 在diou的基础上,还考虑到了两个box的长宽比;

  • iou这部分可参考:https://blog.csdn.net/leonardohaig/article/details/103394369


    focal loss可参考:https://www.cnblogs.com/king-lps/p/9497836.html

  • 对于两阶段的faster-rcnn的正负样本不平衡问题不显著的原因是因为第二阶段使用的achor是第一阶段筛选后的,只有两千个左右,而一阶段的yolo有上万个。

  • 降低简单负样本的权重(损失贡献),增加难的负样本的权重。

  • gamma=0时退化为CE loss,一般取值2

yolo v4

前言

Yolo 系列的原作者在推出了 YoloV3 后宣布退出 CV 界。俄罗斯的程序员 Alexey Bochkovskiy 凭借自己的摸索复现了 Yolo 系列全部模型,并总结了最接近几年目标检测的各种套路。就在前几个推出了 YoloV4.

YoloV4 将最近几年 CV 界大量的trick 集中在一套模型中。这篇论文不仅仅可以看作是一个模型的学习,更能看成是一个不错的文献总署。更有意思的是作者提出了 backbone,neck,head 的目标检测通用框架套路。

backbone, neck, head 其实非常的形象。它表示组成一个“人”的三个部分。从下到上就是 backbone, neck, head 。

backbone:各类卷积网络,目的是对原始图像做初步的特征提取。
neck:各类结构,目的是从结构上做“特征的融合”。主要为解决小目标检测,重叠目标检测等问题。
head:gd 编码,回归和解析。
YoloV3 就是一个典型的 backbone, neck, head 结构。

详解


Backbone: CSPDarknet53
Neck: FPN,SPP,PAN
Head: [conv->1313anchor/3*(5+classes)]
[conv->2626anchor/3*(5+classes)]
[conv->5252anchor/3*(5+classes)]

yolo v5

Backbone: Focus + CSPDarknet53
Neck: FPN,SPP,PAN,CSP结构
Head: [conv->1313anchor/3*(5+classes)]
[conv->2626anchor/3*(5+classes)]
[conv->5252anchor/3*(5+classes)]

【参考】
b站:霹雳吧啦Wz
csdn:https://blog.csdn.net/lemonbit/article/details/109281590

YOLO系列详解 目标检测相关推荐

  1. 【深度学习】:详解目标检测YOLO V1(You Only Look Once)算法

    YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法.Yolo系列算法属于One-Stage算法,是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速 ...

  2. 深度学习(十四)——Softmax详解, 目标检测, RCNN

    https://antkillerfarm.github.io/ Softmax详解 首先给出Softmax function的定义: yc=ζ(z)c=ezc∑Cd=1ezd for c=1,-,C ...

  3. 从零深入理解Yolo系列理论v1-v8 + 目标检测面试提问

    目标检测-Yolo系列发展 先验框/锚框/候选框 Anchor机制 Anchors Base原理 Anchors Free原理 YOLO v1 Yolov1网络结构 Yolov1实现方法 Yolov1 ...

  4. 万字长文详解目标检测算法,超大超全(2022最新)

    摘要 1 概述 2 目标检测回顾 2.1 two-stage 2.2 one-stage 3 目标检测配方 3.1 基础概念 3.1.1 损失函数 3.1.2 Anchor-based 和 Keypo ...

  5. 收藏 | 详解目标检测(MMdetection)-Runner

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨却道@知乎 来源丨https://zhuanlan.zhihu.com/p/268571921 编辑丨极 ...

  6. 【目标检测·yolo系列】YOLOV1目标检测论文(参考 同济子豪兄的解读)笔记

    YOLO V1 目标检测 object detection YOLOV1 预测阶段 前向推断 用图展示过程 预测阶段 后处理 NMS Non-Maximum Suppression 非极大值抑制 训练 ...

  7. 详解目标检测之Neck选择

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨曲終人不散丶@知乎(已授权) 来源丨https://zhua ...

  8. 详解目标检测的评价指标

    在人工智能领域,机器学习的效果需要用各种指标来评价.当一个目标检测模型建立好了之后,即模型训练已经完成,我们就可以利用这个模型进行分类识别.那么该如何去评价这个模型的性能呢? 今天我们从交并比,准确率 ...

  9. 华为-yolo系列详解

    [转载]https://www.huaweicloud.com/articles/1bbc978269862843879e580761883927.html

最新文章

  1. Java网络编程基础(三)---基于UDP编程
  2. python零基础实例-python零基础练手项目100+
  3. Go语言 XML生成和解析
  4. QT信号和槽函数学习笔记
  5. python 粒子动画_python-盒子中有很多粒子-物理模拟
  6. html点击事件传参 php,HTML通过事件传递参数到js详解及实例
  7. 2 年 6 个月 11 天,外包到阿里的修仙之路!| 原力计划
  8. python 调用 C++ code
  9. 动态修改服务器配置文件,asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)...
  10. 计算机发展的新用途应用,新时期计算机技术的应用及发展趋势
  11. 解决联想电脑插入耳机没有声音问题
  12. IBM笔记本使用法语输入法,如何键入法语特殊字符?
  13. echarts在中国地图上绘制各省指标
  14. 骑行运动,对青春期年青人有什么好处?
  15. PCI-E基础知识学习
  16. matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...
  17. 融媒体网络营销WSEO案例分享:两天内与大型网站有相同排名
  18. unraid下使用iyuu辅种
  19. oracle 00600 kccpb,ora-00600 [kccpb_sanity_check_2] 错误处理
  20. MAK vrforce 5.0 vrvantage3.0 vrengage 2.0

热门文章

  1. Python-pandas 笔记整理
  2. CIDR简介以及计算方式
  3. JS验证用户名必须以字母(不区分大小写)、数字、下划线(_)随意组合的字符
  4. 云计算 3.0 的发展面临哪三大挑战?
  5. VMware中的网络连接
  6. 35岁的程序员:第11章,故技重施
  7. 电子商务系统设计与实现-毕业设计(论文)开题报告
  8. 如何处理nexus3忘记admin密码
  9. Java并发编程之AQS以及源码解析
  10. 使用cf_nise_installer安装CloudFoundry出现not monitored问题