论文解读 | YOLO系列开山之作:统一的实时对象检测

news2024/9/25 11:09:18

原创 | 文 BFT机器人 

图片

01

摘要

YOLO是一种新的目标检测方法,与以前的方法不同之处在于它将目标检测问题视为回归问题,同时预测边界框和类别概率。这一方法使用单个神经网络,可以从完整图像中直接预测目标边界框和类别概率,实现端到端的性能优化。

YOLO的速度非常快,基本模型每秒可以处理45帧图像,而快速版本每秒可处理155帧,同时仍然具有很高的准确率。虽然在定位方面可能会产生一些误差,但不太可能出现背景误报。它能够学习通用的目标表示,不仅在自然图像中表现出色,还在其他领域(如艺术品)中表现优于其他检测方法,包括DPM和R-CNN。

02

介绍

将目标检测重新定义为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。这种系统被称为YOLO(You Only Look Once),它允许在一次图像观察中实时预测存在的物体以及它们的位置。

YOLO的核心思想是使用一个简单的卷积神经网络,同时预测多个边界框和它们的类别概率,如图一。与传统方法相比,YOLO有三个主要优点:

速度快:由于将检测视为回归问题,不需要复杂的处理管道。YOLO的基本网络以每秒45帧的速度运行,快速版本更快,超过150fps。这意味着可以实时处理流媒体视频,延迟低于25毫秒,并且精度优于其他实时系统。

全局推理:YOLO在进行预测时可以看到整个图像,而不像其他方法使用滑动窗口或区域提议。这使得它能够隐式地编码关于物体及其外观的上下文信息,减少了背景误报。与其他方法相比,YOLO的边界框数量较少。

通用性:YOLO能够学习通用的目标表示,表现出色不仅在自然图像中,在其他领域(如艺术品)的测试中也表现出色,超过了其他顶级检测方法,如DPM和R-CNN。

然而,尽管速度快且通用性强,YOLO在精确度方面仍然落后于一些最先进的目标检测系统,特别是在精确定位小物体方面存在挑战。研究进一步探讨了这些权衡和挑战。

图片

图一

03

统一检查

核心思想和工作原理

统一神经网络模型:YOLO将目标检测的独立组件整合到一个单一的神经网络中,该网络利用整个图像的特征来预测每个边界框,同时可以同时预测图像中所有类别的边界框。这使得网络能够进行全局推理,同时处理整个图像和所有对象。

端到端训练和实时速度:YOLO的设计旨在实现端到端的训练,同时保持实时处理速度,并且能够保持高平均精度。

S×S网格划分:输入图像被分成S×S网格单元,其中每个网格单元负责检测其中心位于该单元的物体。

每个网格单元的预测:每个网格单元预测了B个边界框和这些边界框的置信度得分,该得分反映了模型对于盒子内是否有物体的自信程度以及预测的准确度。置信度分数定义为Pr(Object) * IOU_truth_pred,如果单元格中没有对象,则置信度分数为零。

边界框预测:每个边界框由五个预测组成,包括 (x, y) 坐标表示相对于网格单元边界的框的中心,以及宽度和高度相对于整个图像的预测。最后,置信度预测表示预测框与真实框之间的交集。

类别概率预测:每个网格单元还预测了 C 个条件类别概率 Pr(Class_i|Object),这些概率取决于包含对象的网格单元。无论边界框数量如何,每个网格单元只预测一组分类概率。

图片

网络设计

检测网络有24个卷积层,后面是2个全连接层。交替的1 × 1卷积层减少了前一层的特征空间。在ImageNet分类任务上以一半的分辨率(224 × 224输入图像)预训练卷积层,然后将分辨率提高一倍用于检测。

图片

训练

预训练:他们在ImageNet 1000类竞争数据集上对卷积层进行了预训练,使用了模型的前20个卷积层、平均池化层和完全连接层。这个预训练过程提高了模型的性能。

检测模型转换:然后,他们将模型转换为执行目标检测。为了增加性能,作者添加了四个卷积层和两个随机初始化权重的完全连接层。因为检测需要更多的视觉信息,所以他们将网络的输入分辨率从224×224增加到448×448。

最后一层预测:模型的最后一层用于预测类别概率和边界框坐标。边界框的宽度和高度被标准化到0和1之间,并且x和y坐标参数化为特定网格单元格位置的偏移量。

激活函数:最后一层使用线性激活函数,而其他层使用漏整流线性激活函数。

损失函数:作者使用平方和误差作为优化目标,尽管它不完全符合他们最大化平均精度的目标。为了解决训练中的不稳定性问题,他们增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。

图片

04

结论

该论文介绍了一种名为YOLO的目标检测统一模型。YOLO模型的构建简单,能够在完整图像上进行训练,与以前的分类器方法不同,它使用了与检测性能直接相关的损失函数进行训练,并且整个模型进行了联合训练。

其中的快速版本YOLO是文献中最快的通用对象检测器,推动了实时对象检测领域的进展。此外,YOLO还能够成功应用于新领域,使其成为依赖于快速和强大的对象检测的应用程序的理想选择。

作者 | 不加糖

排版 | 小河

审核 | 猫

若您对该文章内容有任何疑问,请与我们联系,我们将及时回应。如果想要了解更多的前沿资讯,记得点赞关注哦~

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

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

相关文章

二叉树的概念、存储及遍历

一、二叉树的概念 1、二叉树的定义 二叉树( binary tree)是 n 个结点的有限集合,该集合或为空集(空二叉树),或由一个根结点与两棵互不相交的,称为根结点的左子树、右子树的二叉树构成。 二叉树的…

ClickHouse进阶(十七):clickhouse优化-写出查询优化

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_大数据OLAP体系技术栈,Apache Doris,Kerberos安全认证-CSDN博客 📌订…

4G工业路由器,开启智能工厂,这就是关键所在

​提到工业物联网,首先联想到的就是数据传输。要把海量的工业数据从设备端传到控制中心,无线数传终端就发挥着重要作用。今天就跟着小编来看看它的“联”是怎么建立的吧! 原文:https://www.key-iot.com/iotlist/1838.html 一提到无线数传终端,相信大家首先想到的是…

Python 元组的常用方法

视频版教程 Python3零基础7天入门实战视频教程 下标索引用法和列表一样,唯一区别就是不能修改元素 实例: # 下标索引用法和列表一样,唯一区别就是不能修改元素 t1 ("java", "python", "c") # t1[1] "…

【PyTorch 攻略 (3/7)】线性组件、激活函数

一、说明 神经网络是由层连接的神经元的集合。每个神经元都是一个小型计算单元,执行简单的计算来共同解决问题。它们按图层组织。有三种类型的层:输入层、隐藏层和输出层。每层包含许多神经元,但输入层除外。神经网络模仿人脑处理信息的方式。…

虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型

文章来源:虹科云科技 点此阅读原文 基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键,利用Redis搭建大语言模型,能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大…

Docker启动Mysql容器并进行目录挂载

一、创建挂载目录 mkdir -p 当前层级下创建 mkdir -p mysql/data mkdir -p mysql/conf 进入到conf目录下创建配置文件touch hym.conf 并把配置文件hmy.conf下增加以下内容使用vim hym.conf即可添加(cv进去就行) Esc :wq 保存 [mysqld] skip-name-resolve character_set_…

设备树叠加层

设备树覆盖 设备树 (DT)是描述不可发现硬件的命名节点和属性的数据结构。内核(例如 Android 中使用的 Linux 内核)使用 DT 来支持 Android 设备使用的各种硬件配置。硬件供应商提供他们自己的设备树源 (DTS)文件,这些文件使用设备树编译器编…

UINT64整型数据在格式化时使用了不匹配的格式化符%d导致其他参数无法打印的问题排查

目录 1、问题描述 2、格式化函数内部解析待格式化参数的完整机制说明 2.1、传递给被调用函数的参数是通过栈传递的 2.2、格式化函数是如何从栈上找到待格式化的参数值,并完成格式化的? 2.3、字符串格式化符%s对应的异常问题场景说明 2.4、为了方便…

node 之 express 框架(初级)

一、express 热更新 1、安装扩展 npm install node-dev -D2、在根目录下的 package.json 文件中进行配置 3、之后的启动执行下面的命令即可 npm run dev二、mvc中的 模板引擎 1、ejs模板引擎的安装 npm install ejs -s2、在根目录下的app.js文件中配置 app.set(view engin…

我学编程全靠B站了,真香(第一期)

你好,我是Martin。 我是就读于B站大学2020届的Martin同学,反正我学习计算机真的是全靠 B 站了。 我是个刷视频狂魔,B站收藏夹里也收藏了很多编程类视频, 比如C/C、Go语言、操作系统、数据结构和算法、计算机网络、数据库、Pyth…

深入了解Python运算符和表达式:从基础到高级

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Python运算符和表达式是…

JavaScript 学习笔记(基础)

其是一门跨平台、面向对象的脚本语言(直译型语言),用来控制网页行为,能使网页产生交互效果!下面以 JS 代称 JavaScript 引入HTML结构文件有两类方式: 内部脚本 行联式嵌入式外部脚本* 基本语法&#xff1…

npm发布vue3自定义组件库--方法二

npm发布vue3自定义组件库 创建项目 vue create test-ui自定义组件 创建自定义组件,组件名称根据你的需求来,最好一个组件一个文件夹,下图是我的示例。 src/components 组件和你写页面一样,所谓组件就是方便实用,不…

NotePad++ 在行前/行后添加特殊字符内容方法

我们在处理数据时,会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多,我们可以自己手动的去添加,但如果达到了成百上千行,此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

华为云云耀云服务器L实例评测|cento7.9在线使用cloudShell下载rpm解压包安装mysql并开启远程访问

文章目录 ⭐前言⭐使用华为cloudShell连接远程服务器💖 进入华为云耀服务器控制台💖 选择cloudShell ⭐安装mysql压缩包💖 wget下载💖 tar解压💖 安装步骤💖 初始化数据库💖 修改密码&#x1f4…

JavaCTF记录

Springmvcdemo 在没有提升权限之前,整个环境只有Cookie是可控的,并且提升权限也是要通过cookie来,先看看它对cookie做了什么,看一下过滤器 public void doFilter(ServletRequest request, ServletResponse response, FilterChai…

Python实现猎人猎物优化算法(HPO)优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

Pyhton压缩JS代码

文章目录 1.安装依赖2.目录结构3.代码4.执行结果 1.安装依赖 pip install jsmin2.目录结构 3.代码 import jsmindef run(src_path, tgt_path):with open(src_path, "r", encodingutf-8) as input_file:with open(tgt_path, "w", encodingutf-8) as outpu…

外贸型CRM软件系统的作用

外贸企业在国际市场上面临着大量的竞争和风险,需要不断创新发展,提高自身的竞争力,但又受制于客户管理、业务效率、数据利用和风险控制等方面的不足。为了解决外贸企业面临的问题和挑战,外贸CRM系统应运而生。那么,什么…