文章目录

一、任务描述

二、设计思想

三、发展历程

  1. YOLOv1

  2. YOLOv2

  3. YOLOv3

  4. YOLOv4

四、总结

一、任务描述

目标检测是为了解决图像里的物体是什么,在哪里的问题。输入一幅图像,输出的是图像里每个物体的类别和位置,其中位置用一个包含物体的框表示。

简单说下YOLOv1,v2,v3,v4各自的特点与发展史
需要注意,我们的目标,同时也是论文中常说的感兴趣的物体,指我们关心的类别(行人检测只检测人,交通检测只关心交通工具等),或者数据集包含的类别,并不是图像里所有的物体都是目标,比如建筑,草坪也是物体,但他们常常是背景。

从计算机视觉的角度看,目标检测是分类+定位,从机器学习的角度看,目标检测是分类+回归。

二、设计思想

目标检测架构分为两种,一种是two-stage,一种是one-stage,区别就在于 two-stage 有region proposal 过程,类似于一种海选过程,网络会根据候选区域生成位置和类别,而 one-stage 直接从图片生成位置和类别。

今天提到的 YOLO 就是一种 one-stage 方法。YOLO 是 You Only Look Once 的缩写,意思是神经网络只需要看一次图片,就能输出结果。

简单说下YOLOv1,v2,v3,v4各自的特点与发展史
YOLO 一共发布了四个版本,其中 YOLOv1 奠定了整个系列的基础,后面的系列就是在第一版基础上的改进,只为提升性能。

YOLOv1 的检测方法如下:

①将输入图像划分为 S×S 网格(grid),比如这里划分成 7×7=49 个 grid,如果目标的中心落入网格单元,则该网格单元负责检测该目标。注意不是整个物体落入单元格,只需要物体中心在即可。

简单说下YOLOv1,v2,v3,v4各自的特点与发展史
把图片划分成 49 个网格

②每个网格单元预测 B(文中 B=2) 个边界框和这些框的置信度得分。这个分数反映这个框包含物体的概率 Pr(Object) 以及预测框的位置准确性 IOU,所以置信分数也由这两部分定义;

③每个 bounding box 都要包含 5 个预测值,x, y, w, h, confidence。(x,y)框中心是相对于网格单元的坐标,w 和 h 是框相当于整幅图的宽和高,confidence 代表该框与 ground truth 之间的 IOU(框里没有物体分数直接为 0 )

简单说下YOLOv1,v2,v3,v4各自的特点与发展史
定位:每个网格都要预测 B = 2 个框框,49 个网格就会输出 98 个边界框,每个框还有它的分数

④因为位置和类别需要同时预测,所以每个单元格除了输出 bounding box 也输出物体的条件概率(该物体属于某一类的概率,当然这些概率以包含对象的网格单元为条件)。每个网格单元输出一个概率集合,不考虑这个 grid 预测几个 bounding box。

简单说下YOLOv1,v2,v3,v4各自的特点与发展史
分类:每个网格输出一个类别概率,也就是说一个网格只能属于概率最大的那一类

④测试阶段,在测试时,我们将条件分类概率与各个框的置信度预测相乘,作为每个框特定于每个类的置信分数(这个分数编码了类别和位置两部分信息)。

与 R-CNN 系列方法相比:

i) R-CNN 及其变体采用 region proposals 而不是滑动窗口法找物体,是一种多阶段方法。调网络的时候需要分开调,运行慢。

ii)YOLO 与 R-CNN 相似的地方是在网格单元找可能的边界框,用 CNN 提取特征。不同的是,加在网格单元的空间限制有助于防止同一个目标的重复检测,预测的边界框也少(98 个),还有把多个阶段结合成一个阶段。

三、发展历程

1、YOLOv1

问题背景

之前 two-stage 方法如 R-CNN 把检测问题分成两部分,先生成候选区域(region proposal),再用分类器对区域分类,多阶段训练导致不易优化。

创新点

把检测当作回归问题,用一个网络输出位置和类别,实现了一个 unified system,从检测的角度是 one-stage的

训练流程

和 R-CNN 差不多

首先 ImageNet 1000类 竞赛数据集上对卷积层进行预训练

然后再把网络根据检测任务微调

检测流程

a) 输入一幅多目标图像

b) 将图像划分成多个网格

c) 通过网络得到每个网格的分类概率,以及各网格预测的框+置信度

d) 针对每个框,把概率与置信分数相乘,作为每个框特定于每个类的置信分数

e) 输出位置和类别信息

优点

快。因为回归问题没有复杂的流程(pipeline)。

可以基于整幅图像预测(看全貌而不是只看部分)。与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试期间会看到整个图像,因此它隐式地编码有关类及其外观的上下文信息。因为能看到图像全貌,与 Fast R-CNN 相比,YOLO 预测背景出错的次数少了一半。

学习到物体的通用表示(generalizable representations),泛化能力好。因此,当训练集和测试集类型不同时,YOLO 的表现比 DPM 和 R-CNN 好得多,应用于新领域也很少出现崩溃的情况。

缺点

空间限制:一个单元格只能预测两个框和一个类别,这种空间约束必然会限制预测的数量;

难扩展:模型根据数据预测边界框,很难将其推广到具有新的或不同寻常的宽高比或配置的对象。由于输出层为全连接层,因此在检测时,YOLO 训练模型只支持与训练图像相同的输入分辨率。

网络损失不具体:无论边界框的大小都用损失函数近似为检测性能,物体 IOU 误差和小物体 IOU 误差对网络训练中 loss 贡献值接近,但对于大边界框来说,小损失影响不大,对于小边界框,小错误对 IOU 影响较大,从而降低了物体检测的定位准确性。

  1. YOLOv2

问题背景

YOLOv1 检测性能低

当前的检测任务受数据集标签的限制(数据集必须有标签或通过分类赋予标签)。但是,标记检测图像比标记分类图像昂贵得多,所以检测数据和分类数据不是一个规模。

创新点

针对第一个问题,使用一些方法提升 YOLOv1 的性能,得到 YOLOv2。

针对第二个问题,提出了 ImageNet 和 COCO 数据集的结合方法,以及联合训练方法,训练 YOLOv2 后得到的模型叫 YOLO9000。

提升性能的方法

Accuracy: Batch Normalization, High Resolution Classifier, Convolutional With Anchor Boxes, , Direct location prediction, Fine-Grained Features, Multi-Scale Training

Speed: 提出一个新网络 Darknet-19

训练流程

论文提出了一种联合训练算法,该算法可以在检测和分类数据上训练目标检测器。利用标记的检测图像来学习精准定位,同时使用分类图像来增加其“词汇量”和健壮性。

一、分类检测数据集结合方法:

检测数据集的标签少且普通,分类数据集的标签多且具体,如果我们想在两个数据集上训练,就得把它们的标签合并起来。很多分类方法都用一个 softmax layer ,但它的前提是假设所有类互斥,但我们的数据集类别是不都是互斥的(有可能是包含关系,例如狗和金毛犬),所以我们使用了一个多标签模型来组合数据集(无互斥的要求),及使用多个 softmax 。大多数分类方法都假定标签采用扁平结构,但是对于组合数据集我们需要层次化的结构。

ImageNet 标签采用有向图结构。在这里,作者把数据集的结构简化为结构树(hierarchical tree)。通过改造图,最后得到一个 WordTree,这样每个节点/标签都有自己的概率,解决了类别之间不互斥的问题,就能在检测集和分类集上联合训练。

二、联合训练方法:

把检测和分类数据混合,训练过程中遇到带标签的检测图像,就基于 YOLOv2 整个损失函数进行反向传播,遇到分类图像,只反向传播网络的分类损失。

  1. YOLOv3

问题背景

YOLOv3 的提出不是为了解决什么问题,整篇论文其实是技术报告。

YOLOv3 在 YOLOv2 基础上做了一些小改进,文章篇幅不长,核心思想和 YOLOv2、YOLO9000差不多。

模型改进

边界框预测:定位任务采用 anchor box 预测边界框的方法,YOLOv3 使用逻辑回归为每个边界框都预测了一个分数 objectness score,打分依据是预测框与物体的重叠度。如果某个框的重叠度比其他框都高,它的分数就是 1,忽略那些不是最好的框且重叠度大于某一阈值(0.5)的框

类别预测:和 YOLOv2 一样,YOLOv3 仍然采取多标签分类

多尺度预测使用新网络 Darknet-53 提取特征

  1. YOLOv4

问题背景

YOLO 原作者之前宣布退出CV界,YOLOv4 的作者其实不是前三篇 YOLO 的一作

YOLOv4 是对 YOLOv3 的一个改进。它的改进方法就是总结了几乎所有的检测技巧,又提出一点儿技巧,然后经过筛选,排列组合,挨个实验(ablation study)哪些方法有效。

值得注意的是文章第二部分相关工作,简直就是目标检测的一个简单综述,阅读该部分,你就能了解模型及方法,如果它提到的每个方法你都了解,说明你在这个方向的研究较全面深入(我没达到)。

框架方法

下面这幅论文中的图介绍了 YOLOv4 检测器的构成及使用的训练方法,这些是经过大量实验选出的性能最好的组合

四、总结

回顾 YOLO 系列的发展,我们可以看出 YOLO 后期没有提出新颖的想法,更重视应用落地。

简单说下YOLOv1,v2,v3,v4各自的特点与发展史

精品课程好课

【深度学习 特训课】三大专家级讲师联合授课,从基础的神经网络入手,逐步往各大热门应用领域深入,理论和实践完美结合,带你迅速、高效的入门深度学习。

不论你是在校生,还是已经工作的算法工程师,或者是打算转行深度学习相关岗位的人,这门课都是深度学习路上的必修课程。

【深度学习 特训课】限时1元秒杀– >https://www.julyedu.com/course/getDetail/339&from=CSDN

简单说下YOLOv1、v2、v3、v4各自的特点与发展史相关推荐

  1. 一文读懂 YOLOv1,v2,v3,v4 发展史

    YOLO 系列算法是目标检测 one-stage 类的代表算法,本文将从 问题背景,创新点等方面比较,了解它们的的发展历程. two-stage 相关: 一文读懂 R-CNN,Fast R-CNN,F ...

  2. 经典卷积神经系列(Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet)

    写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确.详细内容可以参考文中帖的链接,比较好!!! 经典的CNN:Inception v1\v2\v3\v4.Resnet.Resnext.D ...

  3. PyTorch 实现经典模型7:YOLO (v1, v2, v3, v4)

    YOLO (v1, v2, v3, v4) 网络结构 YOLO v3 网络结构 代码 Ref <机器爱学习>YOLO v1深入理解 <机器爱学习>YOLOv2 / YOLO90 ...

  4. android V1,V2,V3,V4签名详解

    前言 最近帮测试做了一点关于签名的需求,今天就和各位同学简单聊一聊关于签名的那些事儿. 如果问到 Android 为什么需要签名?大家都可能想到官网的解释: ❝ Android 系统要求所有 APK ...

  5. 论文记录1_YOLO系列(v1 v2 v3 v4)

    注:此文为阅读笔记,参考了很多论文,博客,如有侵权请联系,我附上原出处. 文章目录 准备知识: YOLO V1 创新点 grid cell 置信度 例子 网络架构 Backbone Neck Head ...

  6. 深度学习目标检测 RCNN F-RCNN SPP yolo-v1 v2 v3 残差网络ResNet MobileNet SqueezeNet ShuffleNet

    深度学习目标检测--结构变化顺序是RCNN->SPP->Fast RCNN->Faster RCNN->YOLO->SSD->YOLO2->Mask RCNN ...

  7. 深度学习之---yolov1,v2,v3详解

    (写在前面:如果你想 run 起来,立马想看看效果,那就直接跳转到最后一张,动手实践,看了结果再来往前看吧,开始吧······) 一.YOLOv1 简介 这里不再赘述,之前的我的一个 GitChat ...

  8. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2

    from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...

  9. UUID-五个版本-v1|v2|v3|v4|v5-使用说明

    1.UUID概要 UUID 的全称是 Universally Unique Identifier,中文为通用唯一识别码. 构成:由一组32位数的16进制数字所构成. 格式:以连字号分为五段,表现形式为 ...

最新文章

  1. c#中什么情况下用(int)什么情况下用Convert.ToInt32
  2. 宏基因组-微生物组文章目录索引(1803)
  3. yum使用、单用户模式、救援模式
  4. Handler Bundle Runnable
  5. Hive几种数据导入方式
  6. 最优传输理论和生成模型的几何观点
  7. JS设计模式七:发布-订阅模式
  8. 04-插入操作更新操作删除操作
  9. thymeleaf与jsp_PagingAndSortingRepository –如何与Thymeleaf一起使用
  10. 数据产品-核心能力学习
  11. c和java哪个好学_编程入门学习c++和Java哪个比较好
  12. Windows域环境下的网络问题
  13. 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
  14. 使用 vue_VUE使用ECharts教程
  15. 台式计算机可以发射无线网络,台式电脑无线网卡怎么发射WIFI信号!
  16. 计算机考研英语一历年国家线,历年考研英语国家线
  17. POJ 3368 Frequent values
  18. 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
  19. STEAM上的一款电路模拟神器 — CRUMB Circuit Simulator
  20. Android用自定义View画小猪佩奇

热门文章

  1. zxx学习日报1110
  2. 【计算机组成与设计:软件、硬件接口(1)】计算机概要与技术
  3. tipsy - Facebook-style tooltip plugin for jQuery
  4. 基于SVN的项目管理——集中与分散
  5. 我的前端学习之路-----HTML+css(一)
  6. go如何实现可选参数
  7. Codeforces 450 B. Jzzhu and Sequences
  8. 计算机教学在语文中应用,信息技术在语文教学中的运用3篇论文
  9. 烈焰手游服务器维护,烈焰手游7月20日-7月24日合服安排公告
  10. Node.js 初学者教程