浅谈目标检测之YOLO(You Only Look Once)v1

news2024/11/16 3:50:00

简介:本文章要介绍的YOLOv1算法,它与之前的目标检测算法如R-CNN等不同,R-NN等目标检测算法是一种两阶段(two-stage)算法,步骤为先在图片上生成候选框,然后利用分类器对这些候选框进行逐一的判断;而YOLOv1算法是一阶段(one-stage)算法,是一种端到端的算法,它把目标检测看成回归问题,并把图片输入到单一的神经网络,然后就得到了图片中要识别物体的边界框以及分类概率等信息。

在这里就会有疑问了,什么是端到端的算法呢?

就是指输入原始数据,输出的直接就是最后的结果。原来的输入端不是直接的原始数据,而是在原始数据中提取的特征。端到端通过减少人工预处理和后续的一些处理,尽可能地使模型从原始输入到最后的输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。

一、论文摘要部分

图1

我们提出了一个新的目标检测方法YOLO。以前的目标检测工作是用分类器进行检测的。相反,本篇文章将目标检测表示为空间分离的边界框和相关的分类概率的回归问题。在一次评估中,使用单个神经网络从整个图像中预测边界框以及分类概率。由于整个的检测管道为单一神经网络,因此可以被优化为直接对端到端的性能检测。

我们的架构非常快。基本的YOLO模型以每秒45帧速度实时处理图像。一个更小版本的网络,快速YOLO,处理速度每秒155帧的同时mAP(mean average precision)可达其它实时探测器的两倍。相比于其它的检测系统,YOLO会产生更多的定位错误,但是不太可能会预测假阳性(比如人脸识别项目时,把鞋子上的图案误认为人脸也对其进行打框)。最后,YOLO学习了目标的非常泛化的表示。当把自然图像泛化到其他领域,像艺术品,它胜过其它检测方法,包括DPM,R-CNN。

 二、YOLO模型主要优点

1总结为:YOLO实现实施目标检测非常快速,不需要复杂的通道。

图2

2、YOLO在进行预测时,对图像做全局预测。YOLO在进行训练和测试时查看的是整个图像,因此

隐式地编码上下文信息关于类别和其外观一样。

图3

3、YOLO学习目标的一般化表示,即相比于其它的目标检测算法,YOLO具有更好的泛化性。

图4

三、Unifed Decetion统一检测(预测阶段)

我们将目标网络的独立部分整合到单个神经网络中。网络使用整个图像特征预测每个边界框。这意味着我们的网络对整张图和图像中的所有目标进行全局推理。YOLO设计可以实现端到端训练和实时的速度,同时保持较高的平均精度。

我们的是系统将输入的图像分成S×S的网络,若果目标的中心落入某个网络单元(grid cell)中,那么该网络单元就会负责检测该目标。

每个网络单元都会预测B个边界框和每个框对应的置信度分数(confidence scores),这些置信度分数反映了该模型对于那个框内是否包含目标,以及它对自己边界框预测的准确度。我们将置信度定义为,如果该单元不存在目标,则Pr(Object)=0,相应的置信度分数也为0,否则的话为1,我们希望置信度分数等于预测框与真实标签框之间联合部分的交集(IOU)。

每个网格单元还预测了C类的条件概率,Pr(Classi|Object)。这些概率是以包含目标的网格单元为条件的。我们只预测每个网格单元的一组类别概率,而不考虑框B的数量。

在测试时,我们将条件类概率和单个框的置信度预测相乘:

 这给我们提供了每个框的特定类别的置信度分数,这些分数既是对该类出现在框里的编码,又是对预测的框与目标匹配程度的编码。

思想

我们的系统把输入图像划分为S×S的网格,对于每个网格单元(grid cell),会预测B个边界框,每个框均有一个置信度分数,对于这些框要求生成框的中心点需要在grid cell内。

详细介绍

对于每个边界框由5个预测组成:x, y, w, h, confidence。

1、x, y代表的是边界框(bounding box)的预测框中心坐标相对于其所在的网格左上角的偏移量,取值范围在0-1之间。

图5

 如图5所示,绿色虚线框覆盖掉黑色网格的代表grid cell,坐标代表该grid cell的左上角坐标为(0,0);红色和蓝色框分别代表该grid cell所包含的两个bounding box,红色和蓝色分别表示这两个bounding box的中心坐标。有一点很重要,bounding box的中心坐标一定要在该grid cell的内部,因此红色和蓝色坐标可以归一化为0-1之间,分别以(0.5,0.5)和(0.9,0.9)为例。

2、w, h分别指的是该bounding box的宽和高,表示相比于原始图像的宽和高(448*448像素),但也归一化到了0-1之间,若该像素宽和高分别为44.8和44.8,则归一化之后为w=h=0.1。

所以,对于当前的红色框,其对应的x = 0.8,y = 0.5,w = 0.1,h = 0.2。

图6

3、对于每个网格(grid cell),不管有多少个Bounding(B),都只负责预测一个目标,预测C个条件概率的类别(物体属于每一种类别的可能性)。综上,如图7所示,每个图像有S×S个网格,每个网格要预测B个Bounding box,且每个框要有5个参数,同时还要预测C个类别的可能性,合并这些就是一个张量(S × S × (B * 5 + C))。

图7

 四、网络设计(design network)

我们将此模型作为卷积神经网络来实现,并在Pascal VOC检测数据集[9]上进行评估。网络的初始卷积层从图像中提取特征,而全连接层负责预测输出概率和坐标。

YOLO V1有24层卷积层,后面是2个全连接层;一些卷积层交替使用1x1的reduction层以减少特征图的深度。对于最后一个卷积层,它的输出为一个形状为(7, 7, 1024)的tensor,然后tensor展开,使用2个全连接层作为线性回归的形式,全连接层最后一层的输出为7*7*30的参数量,然后reshape为一个(7,7,30)的张量Tensor,也就是说YOLO V1的网络结构对于一张图像的检测最终输出的是一个7*7*30的 Tensor 张量,其中Tensor包括 SxSx(Bx5+C),B表示每个网格单元使用的边界框数目,C表示数据集中要分类的类别概率的数目,针对论文中提出的每个输入图像别分为7x7的网格,每个网格使用2个边界框去检测目标物体,同时针对Pascal voc数据集的类别数目为20。

网络中的激活函数皆选择的Leaky Relu激活函数,避免了Relu激活函数带来的Dead Area的情况出现,同时在大于0的区间达到了Relu的同等效果,可以使得网络很快的收敛,也很好的避免了梯度的消失。

网络中更多的使用了1x1和3x3的小卷积核,避免了大卷积带来的巨大的参数数目,加快了网络的训练,同时也使得预测的速度得到了大大的提升。

YOLOv1的基本网络架构图:

五、损失函数

目标检测的损失函数主要是由三部分组成,分别为分类损失、定位损失、边界框置信度损失。

1、分类损失

若检测到目标,则每个单元格的分类损失是每个类别的条件类别概率的平方误差:

 其中,表示是否目标出现在单元(cell)i中,pi(c)表示为第i个网格分类的概率,表示网格i中出现c类的概率。

2、定位损失

定位损失测量预测的边界框位置和大小的误差,并且只计算负责检测的边界框。

其中, 表示第i个网格中第j个边界框预测其是否负责相关检测;(xi,yi,wi,hi)中的(x,y)表示第i个网格单元中框的中心位置坐标,(w, h)则表示边界框的宽度和高度。
此外,在每张图像中,许多网格单元不包含任何对象。这使得这些单元格的“置信度”得分趋近于零,往往压倒了包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。

为了解决这个问题,我们增加了边界框坐标预测的损失,减少了不包含对象的框的置信度预测的损失。我们使用两个参数,λcoord和λnoobj来实现这一点。设λcoord = 5, λnoobj =0.5。

3、边界框置信度损失

如果在框中检测到目标,则置信度损失为下面两个式子中的上者,若在框中未检测到目标,则置信度损失为下者。

 综上,最后YOLOv1算法的总损失为三部分的总和。

Reference

[1]http://t.csdnimg.cn/KIqRm
http://t.csdnimg.cn/KIqRm 论文

[2]http://t.csdnimg.cn/KIqRm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1839686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell中的流程控制

条件判断在流程控制中的重要性 有了条件判断才能进行if判断即分支流程,才能进行case的多分支流程,才能进行for循环和while循环。 单分支流程判断 如上图所示,在shell编程中常使用英文状态下的分号来在Linux控制台一次性执行多条命令&#x…

FPGA中复位电路的设计

复位电路也是数字逻辑设计中常用的电路,不管是 FPGA 还是 ASIC 设计,都会涉及到复位,一般 FPGA或者 ASIC 的复位需要我们自己设计复位方案。复位指的是将寄存器恢复到默认值。一般复位功能包括同步复位和异步复位。复位一般由硬件开关触发引起…

把Deepin塞进U盘,即插即用!Deepin To Go来袭

前言 小伙伴之前在某篇文章下留言说:把Deepin塞进U盘的教程。 这不就来了吗? 事实是可以的。这时候你要先做点小准备: 一个大小为8GB或以上的普通U盘 一个至少64GB或以上的高速U盘 一个Deepin系统镜像文件 普通U盘的大概介绍&#xff1…

Xtuner微调

环境安装 studio-conda xtuner0.1.17 conda activate xtuner0.1.17 进入家目录 (~的意思是 “当前用户的home路径”) cd ~ 创建版本文件夹并进入,以跟随本教程 mkdir -p /root/xtuner0117 && cd /root/xtuner0117 拉取 0.1.17 的版…

海外盲盒APP开发,盲盒出海热!

当下,盲盒作为一种热门的娱乐休闲模式,在全球消费市场中都非常火热,各种热门盲盒商品刚一上线就受到了秒杀,受到了各地年轻消费者的追捧! 盲盒全球化对于我国盲盒企业来说是一个新的机会,有助于我国盲盒快…

C/S、B/S架构(详解)

一、CS、BS架构定义 CS架构(Client-Server Architecture)是一种分布式计算模型,其中客户端和服务器之间通过网络进行通信。在这种架构中,客户端负责向服务器发送请求,并接收服务器返回的响应。服务器则负责处理客户端的…

利用Python爬取天气数据并实现数据可视化,一个完整的Python项目案例讲解

要使用Python爬取天气数据并进行制图分析分几个步骤进行: 选择数据源:首先,你需要找到一个提供天气数据的API或网站。一些常见的选择包括:OpenWeatherMap、Weatherbit、Weather Underground等。 安装必要的库:你需要安…

数据库 | 试卷五试卷六试卷七

1. 主码不相同!相同的话就不能唯一标识非主属性了 2.从关系规范化理论的角度讲,一个只满足 1NF 的关系可能存在的四方面问题 是: 数据冗余度大,插入异常,修改异常,删除异常 3.数据模型的三大要素是什么&…

PythonWeb前端

摘要 学校的一门选修课,PythonWeb开发从入门到实践,用到的技术有Python,Flask,MySQL,前端三件套等,但因为是选修课,所以都只涉及到了一点点 Web前端基础 1.Web工作原理 概念: Web,万维网,一…

第21篇 Intel FPGA Monitor Program的使用<四>

Q:如何编译运行创建好的Intel FPGA Monitor Program工程呢? A:上一篇的Nios II汇编语言简易应用程序创建完成后,点击Intel FPGA Monitor Program的Action-->Compile即编译程序,在Info&Errors区域显示编译结果…

软件产品进行确认测试有什么好处?第三方软件测试机构分享

软件确认测试是一项旨在验证软件是否符合预期需求和规格的测试活动。通过确认测试,您可以确保软件的功能、性能和用户界面的符合程度,从而降低软件发布后出现问题的风险。 一、软件产品进行确认测试的好处   1、减少软件发布后修复问题的成本。通过及…

SpringBoot整合Minio(支持公有及私有bucket)

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: SpringBoot整合Minio(支持公有及私有bucket) ⏱️ 创作时间&#xff1…

机器学习课程复习——决策树

Q:这三个算法哪一个可以用来做回归? CART Q:这学期学过的分类算法有哪些? 支持向量机、决策树、k近邻、逻辑回归、朴素贝叶斯、ANN (注意区分分类算法与聚类算法) Q:计算题 根据以上条件,生成相应的决策树 1. ID3算法

Jenkins教程-5-gitee自动化测试任务构建

上一小节我们学习了Jenkins构建gitlab自动化测试任务的方法,本小节我们讲解一下gitee自动化测试任务的构建方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和gitee插件 点击进入Jenkins插件管理页面 安装完插…

mac禁用电池睡眠-mac盒盖连接显示器

mac禁用电池睡眠-mac盒盖连接显示器-mac断点盒盖连接显示器 讲解:mac盒盖的时候连接显示器会睡眠并断开和显示器的连接,只有在电池->选项->选择使用电源适配器的时候防止睡眠,才可以连接电源线外界显示器 但是苹果的电池相当于手机电…

Linux使用lrzsz实现虚拟机和本机进行文件传输

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、lrzsz是什么?二、使用步骤1.下载lrzsz2.文件传输 前言 提示:这里可以添加本文要记录的大概内容: 使用lrzsz代替xfpt进行…

大模型时代的具身智能系列专题(一)

通用具身机器人 具身智能定义 从图灵定义看,知识由感知、智能体环境交互获得,具身智能要拥有足够的知识完成机器人任务。从字面上理解就是具有身体的智能,可以从交互中学习并有可能涌现新能力。近期的具身智能更多和大模型和端到端有关&…

KVB投资安全小知识:你知道情绪面、技术面与基本面的关系吗?

摘要:当涉及到金融市场分析时,情绪面、技术面和基本面是三个重要的方面。它们相互交织,共同影响着市场的走势和投资者的决策。下面我来详细解释它们之间的关系。 情绪面的影响 情绪面指的是投资者情绪和市场情绪,它反映了市场参与…

曾从钦:共同做大露酒产业蛋糕,共建露酒产业命运共同体

执笔 | 尼 奥 编辑 | 扬 灵 6月15日,由中国酒业协会主办、五粮液股份公司承办的以“文化焕新,价值绽放”为主题的第三届中国露酒T5峰会在四川省宜宾市召开,参会企业对当前露酒产业现状、结构性矛盾、品类价值表达等议题进行深入探讨和交…

ARM功耗管理框架之LPI

安全之安全(security)博客目录导读 思考:功耗管理框架?SCP?PPU?LPI?之间的关系?如何配合? 目录 一、功耗管理框架中的LPI 二、LPI分类 三、Q-Channel和P-Channel对比 四、Q-Channel和P-Ch…