【卷积神经网络】YOLO 算法原理

news2024/11/23 2:47:51

在计算机视觉领域中,目标检测(Object Detection)是一个具有挑战性且重要的新兴研究方向。目标检测不仅要预测图片中是否包含待检测的目标,还需要在图片中指出它们的位置。2015 年,Joseph Redmon, Santosh Divvala 等人提出第一个 YOLO 模型,该模型具有实时性高、支持多物体检测的特点,已成为目标检测领域热门的研究算法。本文主要介绍 YOLO 算法及其基本原理。

目录

1 YOLO 算法介绍

2 YOLO 算法原理

2.1 滑动窗口的卷积实现

2.2 非极大值抑制

2.3 Anchor Box


1 YOLO 算法介绍

        在目标检测算法的发展过程中,人们一开始采用 Proposal + 图像分类的思路,Proposal 用于预测目标位置,分类用于识别目标的类别。这类算法被称为 Two-stage 算法,例如 R-CNN,Faster R-CNN 算法。

        2015 年,Joseph Redmon, Santosh Divvala 等人在《You Only Look Once: Unified, Real-Time Object Detection》论文中提出 YOLO 模型,开启了 YOLO 算法的研究热潮。经过后来人们的不断改进,YOLO 算法已经发展成为一个庞大的家族,后来人们把第一个 YOLO 模型称为 YOLO v1 模型。

YOLO 检测算法的大致处理步骤:

(1)调整输入图像的大小为 448 x 448;

(2)使用卷积网络对输入图像执行一次预测;

(3)对预测结果进行非极大值抑制。

        YOLO 模型使用单个卷积网络同时预测多个边界框,以及对应框的类别概率。与传统的目标检测方法相比,这种统一的模型有以下优点:

        (1)YOLO 的预测速度快,由于模型将检测框转化为回归问题,因此只用一个网络同时输出目标的位置与分类信息;

        (2)YOLO 模型在进行预测时对图像进行全局推理。与基于滑动窗口和区域建议的技术不同,YOLO 在训练和测试期间看到整个图像,因此它隐式地学习关于类别及其形状的上下文信息。

参考论文链接:

[1] You Only Look Once: Unified, Real-Time Object Detection

[2] YOLO9000: Better, Faster, Stronger

2 YOLO 算法原理

        YOLO 算法把输入图像分成 S x S 个方格,每个方格输出一个 B x 5 + C 维的张量。这里,B 是每个方格预测方框(Bounding box)的数目,C 表示需要检测的对象类别数目。如果检测目标的中点落在某个方格内,那么目标物体就由该方格进行检测与输出。

        YOLO 算法采用了相对坐标的方法,并使用 Logistic 激活函数,使每个坐标的取值落在区间 0 到 1。目标检测网络在每个边界框处预测 5 个值,分别是 t_{x}, \, t_{y}, \, t_{w}, \, t_{h} 和 t_{o}. 如果单元格相对图像左上角偏移记为 (c_{x}, c_{y}),并且先验边界框宽度、高度分别记为 p_{w}, \, p_{h},对应的预测结果为:

b_{x} = \sigma (t_{x}) + c_{x}

b_{y} = \sigma (t_{y}) + c_{y}

b_{w} = p_{w} \, e^{t_{w}}

b_{h} = p_{h} \, e^{t_{h}}

Pr(object) * IOU(b, object) = \sigma (t_{o})

2.1 滑动窗口的卷积实现

        YOLO v1 检测网络有 24 个卷积层,以及最后的 2 个全连接层。中间交替的 1×1 卷积层用于减少先前层的特征数量。

        相比 YOLO v1 模型,YOLO v2 输出层使用卷积层代替全连接层。这样处理之后,间接地使用卷积算子实现滑动窗口的功能,滑动窗口移动的步长是卷积运算的步长。最终检测网络只需执行一次检测过程,就可以同时输出不同区域的预测结果。

2.2 非极大值抑制

        把输入图像分成多个方格的设计思路,增强了网络检测多个物体的能力。通常一个待检测的对象由一个方格进行预测,然而对于较大的检测对象,同一个对象可能会触发多个预测框,非极大值抑制(Non-max suppression)可以解决这个问题。

非极大值抑制的大致过程如下:

(1)选择预测得分最高的预测框;

(2)遍历剩下的预测框,逐个计算 IoU 值;

(3)如果 IoU 值超过阈值(通常设为 0.5 或 0.6),则丢弃预测框,否则保留;

(4)选择预测得分第二高的预测框,重复 (2)~(3)步骤。

2.3 Anchor Box

        当图像中存在两个物体,且这两个物体的中点均落在同一个方格中时,目标检测网络只能输出其中一个物体的位置结果。这时就需要引入 Anchor box 的设计思路。
        Anchor box 的思路是,预先定义两个形状不同的预测框,然后重新定义预测标签。预测标签同时包含 anchor box1 与 anchor box2 的预测信息。在训练网络时,检测对象会分配给包含其中点的方格,并且具有较高 IoU 值的 anchor box。

        由于这些预测框带有先验信息,因此也被称为先验框。

        相比手工选择的方式,YOLO v2 模型对训练集的标注框进行了 k-means 聚类。在聚类个数 k 取 5 时,模型在召回率与复杂性之间折衷。

【参考文献】

[1] Joseph Redmon, et al. “You only look once: Unified, real-time object detection.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[2] Joseph Redmon, et al. “YOLO9000: Better, Faster, Stronger”  Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017.

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

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

相关文章

No173.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

队列概念|循环队列的实现

前言 今天我们将学习循环队列实现,我们首先介绍队列的概念和结构,之后一步步讲解循环队列由来与实现。 一、队列的概念与结构 1、队列的概念 队列: 只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。队列是…

3.72 Command Buffer及URP概述

一、Command Buffer 1.概念 CommandBuffer携带一系列的渲染命令,依赖相机,用来拓展渲染管线的渲染效果。而且可以指定在相机渲染的某个点执行本身的拓展渲染。Command buffers也可以结合屏幕后期效果使用。 简单来说就是可以在渲染流程中插入一些自定…

群智能算法之模拟退火算法

1.模拟退火算法简介: 2.模拟退火算法的关键点: (1)随机的更新可行解x,判断可行解x对应的函数值和原来函数值之间的大小:如果优于原来的函数值,则让新的可行解x为问题的解;否则以一定的概率(大于…

centos7 部署 Flink

1. 准备 安装的前提是虚拟机里已安装了jdk 去官网下载 Flink 所有版本下载地址:https://archive.apache.org/dist/flink/ 找到下图的安装包,下载即可 下载完后,将其上传至虚拟机的某个地方,本人将其放在 /home/flink/ 下 解压…

nacos面试题

Nacos中保证的是CP还是AP? 通常我们说,Nacos技能保证CP,也能保证AP,具体看如何配置,但其实只不过是Nacos中的注册中心能保证CP或AP,Nacos中的配置中心其实没什么CP或AP,因为配置中心的数据是存在…

2023.10.28 关于 synchronized 原理

目录 synchronized 特性 synchronized 优化机制 锁升级(锁膨胀) 其他优化机制 锁消除 锁粗化 synchronized 特性 开始时是乐观锁,如果锁冲突频繁,就转为悲观锁开始是轻量级锁,如果锁被持有的时间较长&#xff0c…

水果百科网站 vue+uniapp微信小程序设计与实现

设计并实现了鲜而廉水果微信小程序。系统选用java语言,应用Springboot框架, MySQL为后台数据库。系统主要包括用户、水果百科、水果视频、交流论坛等功能模块。 经过认真细致的研究,精心准备和规划,最后测试成功,系统可…

[导弹打飞机H5动画制作]飞机与导弹的碰撞检测

界面参考: 代码参考: this.btnShootTruck.addEventListener("click", startShoot); var _this = this; _this.ShootFire.stop(); _this.ShootFire.alpha = 0; //_this.AsyPlaneObj.gotoAndStop(0); _this.AsyPlaneObj.alpha = 1; _this.AsyPlaneObj.BombPlaneObj.al…

【vtk学习笔记2】vtk编程中的基本对象

一、VTK编程中的基本对象 数据可视化一般需要一个数据源,可以来说具体的算法,如有限元、边界元等,也可以是测量数据,如医学检测数据等。这些基础数据经过变换处理,变成计算机图形流水线支持的数据,最后显示…

redis实现分布式延时队列

文章目录 延时队列简介应用场景案例:考虑:实现:整体思路:具体实现生产者消费者 运行结果 redis分布式延时队列优势redis分布式延时队列劣势 延时队列简介 延时队列是一种特殊的消息队列,它允许将消息在一定的延迟时间…

【系统安全】等保二级、三级自查对比

目录 1、定义:二级 VS 三级 2、要求:二级 VS 三级 3、适用企业、单位 1、定义:二级 VS 三级 等保:全称网络安全等级保护,是指对信息系统进行分级,对不同等级的信息系统进行不同的安全保护和监管的工作。…

仿写知乎日报第二周

新学到的 新学到了WKWebView&#xff1a; WKWebView是是苹果推崇的一个新的类&#xff0c;它用于将一个网页嵌套在软件里。这里我是将点击cell后的内容中放入WKWebView对象。WKWebView的使用&#xff1a; 首先&#xff0c;要导入这个类&#xff1a; #import <WebKit/WebK…

3.7 移动端TB(D)R架构基础

一、各类电子设备功耗对比 桌面级主流性能平台&#xff0c;功耗一般为300W&#xff08;R7/I7X60级别显卡&#xff09;&#xff0c;游戏主机150-200W入门和旗舰游戏本平台功耗为100W主流笔记本为50-60W&#xff0c;超极本为15-25W&#xff0c;旗舰平板为8-15W旗舰手机为5-8W&am…

《python语言程序设计》(2018版)第5章编程题 第41题第3次路过。总结一下。没有走完的路

这道题最大的需要就是能够进行两个数值的对比&#xff0c;同时还能让更多的数值依次进入到对比中。 这道题的解题版本 这个版本只是能统计出谁是最大数。但是无法统计最大数出现了多少次。 number "" count 0 data_number 0 while number ! 0:number eval(inpu…

No172.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

MinIO安装

Minio是一个开源的分布式对象存储服务器&#xff0c;它兼容Amazon S3服务接口。它可以用于构建私有云存储&#xff0c;为应用程序提供可扩展的对象存储功能。 安装 docker安装 docker run -d -p 9000:9000 -p 50000:50000 --name minio \ -e "MINIO_ROOT_USERadminpili…

泰州市旅游景点门票预订管理系统 vue+uniapp微信小程序

本文从管理员、用户的功能要求出发&#xff0c;泰州市旅游景点管理小程序中的功能模块主要是实现用户、景点类型、景区信息、门票预定。经过认真细致的研究&#xff0c;精心准备和规划&#xff0c;最后测试成功&#xff0c;系统可以正常使用。分析功能调整与泰州市旅游景点管理…

Leetcode—275.H指数II【中等】

2023每日刷题&#xff08;十三&#xff09; Leetcode—275.H指数II 算法思想 实现代码 int minValue(int a, int b) {return a < b ? a : b; }int hIndex(int* citations, int citationsSize){int left, right;left 0;right citationsSize - 1;while(left < right) …

AD教程(一)工程组成及创建

AD教程&#xff08;一&#xff09;工程组成及创建 工程组成 原理图库 绘制电阻模型、芯片模型、电容模型等&#xff0c;即将元件模型绘制出来。 原理图 将绘制的原件模型放置到原理图中&#xff0c;然后再添加连接的导线、网络标号。器件和器件之间的连接关系&#xff0c;在原…