| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> YOLO-V1论文 -> 正文阅读 |
|
[人工智能]YOLO-V1论文 |
论文:https://arxiv.org/pdf/1506.02640.pdf 1. 介绍人类看一眼图像就能立即识别出目标:它是什么,它们在哪儿,它在做什么交互。人类的视觉系统非常快速和准确,允许我们执行复杂任务,比如开车,快速、准确的目标检测算法也可以让计算机做无人驾驶。 其次,YOLO 在进行预测时,会对图像进行全面的分析。与滑动窗口(sliding window)和基于区域选择(region proposal-based)的技术不同,YOLO 在训练和测试期间可以看到整个图像,因此它隐式地编码相关类别的上下文信息以及它们的外观。Fast R-CNN 是一种顶部检测方法,它会因为看不到更大的背景而将图像中的背景块误当成物体。与 Fast R-CNN 相比,YOLO 产生的背景错误不到一半。 第三,YOLO 有较好的泛化。在对自然图像进行训练和对艺术品进行测试时,YOLO 的检测效果远远优于 DPM 和 R-CNN 等顶级检测方法。由于 YOLO 具有高度的泛化性,它在应用于新域或意外输入时不太会崩溃。 YOLO 在精确度方面仍然落后于最先进的检测系统。虽然它可以快速识别图像中的物体,但它很难精确定位一些物体,特别是小的物体。我们在实验中进一步研究了这些权衡。 我们所有的培训和测试代码都是开源的。还可以下载各种经过训练的模型。 2 联合检测我们将目标检测的独立组件统一为一个单一的神经网络。我们的网络使用整个图像的特征来预测每个 bounding box。它还可以同时预测图像中所有类的所有 bounding box。这意味着我们的网络对整个图像和图像中的所有对象进行全局推理。YOLO 设计实现端到端训练和实时速度,同时保持较高的平均精度。 我们的系统将输入图像划分为一个 S × S S × S S×S 网格。如果一个对象的中心落在一个网格单元中,该网格单元负责检测该对象。 每个网格单元预测了 B B B bounding box 和这些 box 的置信度。这些置信度分数反映了该 box 中包含一个对象的确信程度,以及它 box 预测的准确性。我们将置信度定义为 P r ( O b j e c t ) ? I O U p r e d t r u t h Pr(Object)?IOU^{truth}_{pred} Pr(Object)?IOUpredtruth?。如果该单元格中不存在对象,则置信度得分应为0。否则,置信度等于预测框与标注框之间的 IOU。 每个边界框由 5 个预测组成:x,y,w,h 和置信度。(x, y) 坐标表示框的中心相对于网格单元格的边界。相对于整个图像,预测宽度和高度。最后,置信度预测表示预测框与标注框之间的 IOU。 每个网格单元还预测了 C C C 条件类概率 P r ( C l a s s i ∣ O b j e c t ) Pr(Classi |Object) Pr(Classi∣Object)。这些概率决定了网格单元包含的对象。我们只预测每个网格单元的一组类概率,无论 box B B B 的数量是多少。 在测试时,我们将条件类概率和对应 box 置信度相乘,
2.1 网络设计我们将该模型作为一个卷积神经网络来实现,并在 PASCAL VOC 数据集上对其进行评估。网络的初始卷积层从图像中提取特征,全连接层预测输出概率和坐标。 我们的网络架构是受 GoogLeNet 的启发,我们的网络有 24 层卷积,后面跟了 2 层全连接。与 GoogLeNet 使用的 inception 模块不同,我们简单地使用了 1 × 1 和 3 × 3 卷积层,类似于Lin et a。完整的网络如图3所示。 2.2 训练我们在 ImageNet 1000 类竞赛数据集上对卷积层进行预训练。对于预训练,我们使用图3中的前 20 个卷积层,然后是平均池化层和全连接层。我们对这个网络进行了大约一周的训练,并在 ImageNet 2012 验证集上获得了 88% 的 top 5 准确率,可以与 Caffe 的 Model Zoo 中的 GoogLeNet 模型相比较。我们使用 DarkNet 框架进行所有的训练和推理。 然后我们转换模型来做检测。Ren et al. 等人的研究表明,在预训练的网络中同时添加卷积层和连接层可以提高性能。在他们的例子之后,我们添加了四个卷积层和两个随机初始化权值的完全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从 224 × 224 提高到 448 × 448。 我们的最后一层预测了类别的概率和 bounding box。我们通过图像的宽度和高度对 bounding box 的宽度和高度进行归一化,使它们落在 0 和 1 之间。我们将 bounding box 的 x 和 y 坐标参数化为特定网格单元位置的偏移量,因此它们也被限制在 0 和 1 之间。 我们在最后一层使用线性激活函数,其他所有层使用下面的 leaky 激活函数: 我们优化了模型输出的 sum-squared error。我们使用 sum-squared error 是因为它很容易优化,但是它并不完全符合我们最大化平均精度的目标。它将 为了弥补这一点,我们增加了边界框坐标预测的损失,并减少了不包含目标的 box 的置信度的损失。我们使用 λ c o o r d λ_{coord} λcoord? 和 λ n o o b j λ_{noobj} λnoobj? 两个参数来实现这一点。设 λ c o o r d = 5 λ_{coord} = 5 λcoord?=5, λ n o o b j = . 5 λ_{noobj} = .5 λnoobj?=.5。 sum-squared 误差也同样加权了大框和小框的误差。我们的误差度量应该反映大框的小偏差比小框的小偏差更重要。为了解决这个问题,我们预测边界框的宽度和高度的平方根,而不是直接预测宽度和高度。 YOLO预测每个 grid cell 有多个 box。在训练时,我们只希望一个 bounding box 预测器对每个目标负责。我们指定预测框和标注框IOU最高的那个预测器来 “负责” 预测一个对象。这使得了 bounding box 预测器之间的专门化。每个预测器都能更好地预测物体的大小、纵横比或类别,从而提高整体召回率。 在训练过程中,我们优化了以下多部分损失函数:
注意,只有当 grid cell 中存在一个目标时,loss 函数才会惩罚分类错误(这就是前面讨论的条件类概率)。它也只会惩罚 bounding box 坐标误差,如果该预测器对 bounding box “负责”(即该网格单元中所有预测器 IOU 最高的那个)。 我们使用 PASCAL VOC 2007 年和 2012 年的训练和验证数据集对该网络进行了大约 135 次的培训。在 2012 年的测试中,我们还将 VOC 2007 的测试数据用于培训。在整个训练过程中,我们使用的 batch size 为 64,momentum 为 0.9,decay 为 0.0005。 我们的 learning rate 计划如下:对于第一个 epoch,我们慢慢地将 learning rate 从 0.001 提高到 0.01。如果我们以较高的学习率开始,我们的模型通常会因为不稳定的梯度而发散。我们继续用0.01 来训练 75 个 epoch,然后是 0.001 来训练 30 个 epoch,最后是 0.0001 来训练 30 个 epoch。 为了避免过拟合,我们使用了 dropout 和广泛的扩充数据。第一个连接层之后速率为 0.5 的 dropout 层阻止了层之间的协同适应。对于扩充数据,我们引入了高达原始图像大小 20% 的随机缩放和平移。我们还随机调整曝光和饱和度的图像高达 1.5 倍的 HSV 颜色空间。 2.3 推理和训练一样,预测只需要一次网络评估。在 PASCAL VOC 上,网络预测了每幅图像的 98 个 bounding box 以及每个 box 的类概率。YOLO 在测试时非常快,因为它只需要一个网络评估,而不像基于分类器的方法。 网格设计加强了 bounding box 预测中的空间多样性。通常,一个物体落在哪个网格单元中是很清楚的,而网络只能为每个物体预测一个 box。然而,一些大型目标或靠近多个 cell 边界的目标可以被多个 cell 很好地定位。非最大抑制可用于修复这些多重检测。虽然这不是关键的性能,因为它是 R-CNN 或 DPM,非最大抑制增加2- 3%的mAP。 2.4 YOLO 的限制YOLO对边界盒预测施加了很强的空间约束,因为每个网格单元只能预测两个盒子,并且只能有一个类。这种空间限制限制了我们的模型可以预测的附近物体的数量。我们的模型很难处理成群出现的小对象,比如鸟群。 因为我们的模型学会了从数据中预测边界框,所以它很难推广到新的或不寻常的纵横比或配置的对象。我们的模型也使用相对粗糙的特征来预测边界盒,因为我们的架构从输入图像有多个下采样层。 最后,当我们训练一个接近检测性能的损失函数时,我们的损失函数在小边界框和大边界框中对待错误是一样的。大盒子里的小错误通常是良性的,但小盒子里的小错误对借据的影响要大得多。错误的主要来源是不正确的本地化。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:51:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |