YOLO v1(2016.5)
文章目录
- Abstract
- Introduction
- 过去方法存在的问题
- 我们提出的方法解决了...
- Unified Detection
- Network Design
- Training
- Inference
- Comparison to Other Detection Systems
- Deformable parts models
- R-CNN
- Other Fast Detectors
- Deep MultiBox
- OverFeat
- MultiGrasp
- Experiments
- Conclusion
原文链接
代码
Abstract
我们提出了一种新的目标检测方法YOLO,先前在目标检测方面的工作将分类器重新用于执行形式检测。相反,我们将目标检测框架视为空间分离边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像中预测边界框和类别概率。由于整个检测管道是一个单一的网络,因此可以直接对检测性能进行端到端的优化
我们的统一架构非常快。我们的基本YOLO模型以每秒45帧的速度实时处理图像。一个更小的网络版本,Fast YOLO,每秒处理惊人的155帧,同时仍然达到其他实时探测器的两倍mAP。与最先进的检测系统相比,YOLO会产生更多的定位错误,但背景误差小得多
最后,YOLO学习对象的通用表示,当从自然图像泛化到其他领域(如艺术品)时,它优于其他检测方法,包括DPM和R-CNN
Introduction
过去方法存在的问题
当前的检测系统使用分类器来执行检测,最近的一些方法,如R-CNN,首先使用区域生成方法在图像中生成潜在的边界框,然后在这些候选框上运行分类器,然而这些复杂的管道是缓慢的和难以优化的,因为每个单独的组件必须单独训练
我们提出的方法解决了…
我们将目标检测重新定义为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,你只看一次(YOLO)图像,以预测什么物体存在和他们在哪里
用YOLO处理图像是简单和直接的。(1)将输入图像的大小调整为448 × 448,(2)在图像上运行单个卷积网络,(3)通过模型的置信度对结果检测进行阈值
单个卷积网络同时预测多个边界框和这些框的分类概率,YOLO在完整的图像上进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一的模型有几个优点:
首先,YOLO非常快
其次,YOLO在进行预测时对图像进行全局推理,因此,YOLO的背景误差很小
第三,YOLO学习对象的通用表征,YOLO是高度可泛化的,当应用到新的领域或意想不到的输入时,它不太可能崩溃
YOLO在精度上仍然落后于最先进的探测系统。虽然它可以快速识别图像中的物体,但很难精确定位某些物体,尤其是小物体
Unified Detection
我们将目标检测的独立组件统一到一个单一的神经网络中,YOLO设计使端到端训练和实时速度,同时保持高平均精度
我们定义置信度as Pr(Object) ∗ IOU truth pred
每个边界框由5个预测组成:x, y, w, h和置信度
置信度预测表示预测框与任何真实框之间的IOU
Pr(Classi|Object):条件类概率
条件类概率 × 个体置信度预测 = 类别置信度预测
这些分数编码了该类别出现在框中的概率以及预测框与该对象的匹配程度
Network Design
网络的初始卷积层从图像中提取特征,而全连接层预测输出概率和坐标
我们的检测网络有24个卷积层,后面是2个全连接层,交替的1 × 1卷积层减少了前一层的特征空间。我们在ImageNet分类任务上以一半的分辨率(224 × 224输入图像)预训练卷积层,然后将分辨率提高一倍用于检测
Training
我们对最后一层使用线性激活函数,所有其他层使用以下漏整流线性激活
每张图像中,许多网格单元不包含任何对象,这可能导致模型不稳定,导致训练在早期出现分歧,我们使用两个参数,λcoord和λnoobj来实现这一点。设λcoord =5, λnoobj = .5
我们对模型输出中的和平方误差进行了优化
我们的误差度量应该反映出大盒子里的小偏差比小盒子里的小偏差影响小。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度
1obji 表示目标是否出现在单元格 i 中,1objij表示单元格 i 中的第 j 个边界框预测器“负责”该预测
损失函数只在对象存在于该网格单元中时惩罚分类错误(因此前面讨论了条件类概率)。它也只有在预测器“负责”地面真值框(即在该网格单元中具有最高的预测器IOU)时才会对边界框坐标误差进行化
为了避免过拟合,我们使用dropout和广泛的数据增强
Inference
就像在训练中一样,预测测试图像的检测只需要一次网络评估。在PASCAL VOC上,网络预测每张图像的98个边界框和每个框的类概率。YOLO在测试时非常快,因为它只需要一个网络评估,不像基于分类器的方法
网格设计加强了绑定框预测的空间多样性。通常情况下,一个对象落在哪个网格单元是很清楚的,网络只预测每个对象的一个框。然而,一些较大的物体或靠近多个单元边界的物体可以被多个单元很好地定位。非最大抑制可以用来固定这些多重检测。虽然不像R-CNN或DPM那样对性能至关重要,但非最大抑制在mAP中增加了2- 3%
Comparison to Other Detection Systems
目标检测是计算机视觉中的一个核心问题。检测管道通常首先从输入图像中提取一组鲁棒特征(Haar [25], SIFT [23], HOG[4],卷积特征[6])。然后,使用分类器[36,21,13,10]或定位器[1,32]来识别特征空间中的对象。这些分类器或定位器要么在整个图像上以滑动窗口的方式运行,要么在图像中的某些区域子集上运行[35,15,39]。我们将YOLO检测系统与几个顶级检测框架进行了比较,突出了关键的相似点和不同点
Deformable parts models
可变形部件模型(DPM)使用滑动窗口方法进行对象检测[10]。DPM使用一个不相交的管道来提取静态特征,对区域进行分类,预测高分区域的边界框等
我们的系统用一个卷积神经网络取代了所有这些不同的部分。该网络可以同时进行特征提取、边界框预测、非最大值抑制和上下文推理。与静态特征不同,该网络在线训练特征,并针对检测任务对其进行优化。我们的统一架构带来了更快、更准确的模型
R-CNN
R-CNN及其变体使用区域候选框而不是滑动窗口来查找图像中的对象。选择性搜索[35]生成潜在的边界框,卷积网络提取特征,支持向量机对边界框进行评分,线性模型调整边界框,非最大压缩消除重复检测。这个复杂管道的每个阶段都必须精确地独立调整,结果系统非常慢,在测试时每个图像需要40多秒
YOLO与R-CNN有一些相似之处。每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分。然而,我们的系统对网格单元候选框施加了空间约束,这有助于减少对同一目标的多次检测。我们的系统提出的边界框也少得多,每张图像只有98个,而选择性搜索大约有2000个。最后,我们的系统将这些单独的组件组合成一个单一的、共同优化的模型
Other Fast Detectors
Fast 和 Faster R-CNN专注于通过共享计算和使用神经网络提出区域而不是选择性搜索[14]b[28]来加速R-CNN框架。虽然它们在速度和准确性上都比R-CNN有所提高,但两者的实时性仍然不足
Deep MultiBox
与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣的区域[8],而不是使用选择性搜索。MultiBox还可以通过用单个类预测代替置信度预测来执行单个对象检测。然而,Multi- Box不能执行通用的目标检测,仍然只是在一个更大的检测管道中,需要进一步的图像补丁分类
YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统
OverFeat
OverFeat可以有效地进行滑动窗口检测,但它仍然是一个不相交的系统。Over- Feat优化了定位,而不是检测性能。与DPM一样,本地化器在进行预测时只看到本地信息。OverFeat不能对全局上下文进行推理,因此需要大量的后处理来产生连贯的检测
MultiGrasp
我们的工作在设计上与Redmon等人的抓取检测工作相似。我们对边界框预测的网格方法是基于MultiGrasp系统对抓点的回归。然而,抓握检测是一个比物体检测简单得多的任务。MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域,它不需要估计物体的大小、位置或边界,也不需要预测物体的类别,只需要找到一个适合抓取的区域。YOLO预测图像中多个类别的多个对象的边界框和类别概率
Experiments
首先,我们将YOLO与其他基于PASCAL VOC 2007的实时检测系统进行了比较。为了理解YOLO和R-CNN变体之间的差异,我们探讨了YOLO和Fast R-CNN (R-CNN b[14]的最高表现版本之一)在VOC 2007上的错误。基于不同的误差分布,我们表明YOLO可以用于快速R-CNN检测的重分,并减少背景假阳性的误差,从而显着提高性能。我们还介绍了VOC 2012的结果,并将mAP与当前最先进的方法进行了比较。最后,我们在两个艺术品数据集上证明了YOLO比其他检测器更好地泛化到新的领域
Conclusion
我们的模型构造简单,可以直接在完整的图像上进行训练。与基于分类器的方法不同,YOLO是在直接对应于检测性能的损失函数上进行训练的,整个模型是联合训练的。Fast YOLO是最快的通用对象检测器,YOLO推动了最先进的实时对象检测。YOLO还可以很好地推广到新的领域,使其成为依赖于快速、健壮的对象检测的应用程序的理想选择
相关文章:

YOLO v1(2016.5)
文章目录 AbstractIntroduction过去方法存在的问题我们提出的方法解决了... Unified DetectionNetwork DesignTrainingInference Comparison to Other Detection SystemsDeformable parts modelsR-CNNOther Fast DetectorsDeep MultiBoxOverFeatMultiGrasp ExperimentsConclusi…...
SQL比较两次的字段集合,找出并返回差异,主要用于更新记录事件
Create PROCEDURE [dbo].[SysGetTableFieldsCompare] -- Description: <比较两次的字段集合,找出并返回差异,主要用于更新记录事件> -- Return 0- 成功, -1- 没有这个表 -- Rev: 1.00 -- FieldsSource Nvarchar(max) , FieldsTarg…...
muduo源码剖析之Acceptor监听类
简介 Acceptor类用于创建套接字,设置套接字选项,调用socket()->bind()->listen()->accept()函数,接受连接,然后调用TcpServer设置的connect事件的回调。 listen()//在TcpServer::start中调用 封装了一个listen fd相关…...

express session JWT JSON Web Token
了解 Session 认证的局限性 Session 认证机制需要配合 cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。 注意: 当前端…...

负载均衡策略 LVS
一、集群功能分类 1、LB (1) 概念: LB:负载均衡 (Load Balancing) 是一种分发网络流量的技术,LB 负载均衡的基本原理是将传入的网络流量分发到多个后端服务器,以确保这些服务器都承担相似的工作负载,从而避免某一台…...

驱动开发6 IO多路复用——epoll
核心操作:一棵树、一张表、三个接口 相关案例 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <sys…...
【python学习笔记——列表】
1、列表定义 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。 空列表 list[]非空列表 列表定义时例如list[‘csdn’, ‘is’ ,‘good’ ,2023],直接给列表内赋值 2、列表索引规则 列表名[start:stop:step],前闭后开,即取索引为start…...

TensorRT量化实战课YOLOv7量化:YOLOv7-PTQ量化(一)
目录 前言1. YOLOv7-PTQ量化流程2. 准备工作3. 插入QDQ节点3.1 自动插入QDQ节点3.2 手动插入QDQ节点 前言 手写 AI 推出的全新 TensorRT 模型量化实战课程,链接。记录下个人学习笔记,仅供自己参考。 该实战课程主要基于手写 AI 的 Latte 老师所出的 Tens…...

[微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)
坑一:回显问题 富文本组件: <editor id"editor" name"{{name}}" style"font-size: 28rpx;color: #C9CDD4" read-only"{{true}}" placeholder"{{placeholder}}" bind:input"onChange11"…...
USACO12OPEN Balanced Cow Subsets G(meet in the middle)
洛谷P3067 [USACO12OPEN] Balanced Cow Subsets G 题目大意 我们定义一个奶牛集合 S S S是平衡的,当且仅当满足以下两个条件: S S S非空 S S S可以被划分为两个集合 A , B A,B A,B,满足 A A A里的奶牛产量之和等于 B B B里的牛奶产量之和 …...
GIT常用操作记录
1、后悔药:强制回退到某个具体历史提交记录,并强制推送到远程仓库 强制回退到某个具体历史提交记录,即要删除它之后的所有提交,可以用 git reset 命令。 首先找到目标提交记录的ID,可以在github远程仓库的历史提交记…...

【ETL工具】Datax-ETL-SqlServerToHDFS
🦄 个人主页——🎐个人主页 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油!&…...
Kubernetes (K8S)概述
1、K8S 是什么? K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。 1.1 作用 用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。 可以…...

11月14号|Move生态Meetup相约浪漫土耳其
Move是基于Rust编程语言,由Mysten Labs联合创始人兼CTO Sam Blackshear在Meta的Libra项目中开发而来,旨在为开发者提供比现有区块链语言更通用的开发语言。Sam的目标是创建Web3的JavaScript,即一种跨平台语言,使开发人员能够在多个…...
mac vim没有颜色 问题
vim ~/.vimrc syntax on set nu! set autoindent...

Servlet核心API
目录 HttpServlet init destory service 实例:处理get、post、put、delete请求 1.通过postman得到请求 2.通过ajax得到请求 HttpServletRequest 常见方法 前端给后端传参 1.GET,query string 2.POST,form 3.POST,json HttpSeverletRespons…...

crs 维护模式 exclusive mode
How To Validate ASM Instances And Diskgroups On A RAC Cluster (When CRS Does Not Start). (Doc ID 1609127.1)编辑To Bottom [rootrac1 ~]# ps -ef|grep grid root 2477 1 1 20:47 ? 00:00:51 /opt/oracle.ahf/jre/bin/java -server -Xms32m -Xmx64…...

【OpenCV实现平滑图像形态学变化】
文章目录 概要目标腐蚀膨胀开运算结构元素(内核)小结 概要 形态学变化是一组简单的图像操作,主要用于处理二值图像,即只包含黑和白两种颜色的图像。这些操作通常需要两个输入,原始图像和一个内核(kernel&a…...
Ubuntu服务器中java -jar 后台运行Spring Boot项目
问:我在我的服务器中java -jar 运行springboot项目,但是我操作不了命令了,必须要终止掉才能执行后面的操作,怎么样才能让他后台运行呢?比如我的jar包名是tools-boot-0.0.1-SNAPSHOT.jar 使用nohup命令: 在…...
微服务parent工程和子工程pom文件配置注意
parent工程 重要配置: <!-- 父工程 --><packaging>pom</packaging><!-- 聚合 --><modules><module>../base</module><module>../gateway</module><module>../user-service</module><mod…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...