当前位置: 首页 > news >正文

YOLO V1中关于bounding boxs的部分要点

YOLO的核心原理预览

在这里插入图片描述

  • YOLO将输入的图片resize成448 x 448,并且为 S x S(S = 7)个grid,如果物体的中心落入该grid中,那么该grid就需要负责检测该物体。
  • 一次性输出所检测到的目标信息,包括类别位置

  • 对于每一个网格(grid),都会预测出B个bounding boxes(B=2),这个bounding boxes有5个量,分别是物体的中心位置(x,y)和它的高(h)和宽(w),以及这次预测的置信度(confidence score)。

  • Bounding Box指矩形框的中心 (x,y),矩形框的宽高(w,h)以及置信度c,这5个值的范围在0和1之间,通过Sigmoid函数来实现。

    矩形框中心 (x,y)的含义:每个Bounding Box相对于grid cell的偏移值,范围0~1

    矩形框的宽高 (w,h)的含义: 每个Bounding Box的宽高相对于整个图像的大小,范围0~1

  • 要注意:每个grid产生两个bounding boxs,如下左图中狗的中心点对应两个黄色框,以及自行车后轮外面的图像中心点对应的两个红色框,其中狗的中心点对应的两个bounding boxs(黄色),相对于自行车后轮外面的图像中心点对应的两个bounding boxs(红色)尺寸是不一样的,也说明bounding boxs的尺寸是根据目标自适应的:

  • 每个框还要负责预测这个框中的物体是什么类别的,共预测C个类。
    在这里插入图片描述

  • 综上,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C)。(S x S个网格,每个网格都有B个预测框,每个框又有5个参数(矩形框的中心 (x,y),矩形框的宽高(w,h)以及置信度c,这5个值的范围在0和1之间),再加上每个网格都有C个预测类,默认C=20,即可以将物体检测为20个类别)

  • 图像中包含物体对象的Bounding Box数量远远小于不包含物体的Bounding Box数量,因此若两者的权重相等,那么计算的损失函数会偏向于给出背景的结果。Yolo1算法论文设置包含物体的Bounding Box的权重为5,不包含的Bounding Box的权重为0。

    包含物体和不包含物体的权重分别记为:

    Yolo算法把定位和检测目标看成是一个回归问题,因此对于所有的输出变量,我们都使用和平方误差表示损失函数。

    每个grid cell包含了2个Bounding Box和1个条件类概率,grid cell结构和损失函数如下图:

其中:

 表示第i个grid cell的第j个Bounding Box是否包含物体对象,若包含,则等于1;若不包含,则等于0。

表示第i个grid cell是否包含物体对象,若包含,则等于1;若不包含,则等于0。

对于不同大小的Bounding Box,小的Bounding Box对于偏差的容忍度更低,比如千万富翁丢失1000块钱与普通家庭丢失1000块钱的意义不一样。为了缓和这个问题,我们对Bounding Box的宽和高取平方根。如下图:

YOLO-V1的网络架构:


输入图像大小: 448×448×3

过程中的参数含义:


损失函数:


①涉及的预测的位置参数值与对应的损失函数描述:
x, y, w, h :
对应的损失函数要尽量减小预测值与真实值之间的差距。
函数公式中 x, y 是使用 平方差值 来描述,而对于 w, h 使用了根号,是为了检测小物体时候,减小偏移量小的时候对于小物体的的敏感度。


损失函数中的系数,是相应的权重。

②关于置信度的损失函数(与类别有关):
平方置信度与真实值之间的差异(分为不同的情况讨论:前景(要检测的物体)、背景(无目标处))

③分类相关的损失函数:交叉熵损失函数
 

非极大值抑制:


只取出保留 IOU 数值最大的框。
YOLO-V1小结
YOLO-V1 整体网络架构简单,检测速度快。
网络中,每个 cell 只预测一个类别,若物体的位置重合时,检测困难。
每个点只有两个候选框,小物体考虑的少。

如何定位目标物体的grid cell和Bounding Box

我们知道了损失函数如何计算,yolo算法预测每个grid cell的Bounding Box?训练阶段,我们需要知道物体的实际grid cell和Bounding Box。

如何定位?若目标物体的中心点在某一个grid cell,则该目标物体属于这一个grid cell,然后以整个图像宽高为尺度,计算该物体所在grid cell的宽高。如下图的红框grid cell标记的狗:

相关文章:

  • Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考
  • 云计算运维面试
  • 拍摄视频的时候相机断电导致视频文件损坏,怎么修复
  • 一文了解芯片测试项目和检测方法 -纳米软件
  • 图像二值化阈值调整——Triangle算法,Maxentropy方法
  • 粤嵌实训医疗项目--day06(Vue + SpringBoot)
  • 2023年云计算的发展趋势
  • 取暖器/暖风机上架 亚马逊美国站UL1278测试标准要求
  • activiti命令模式与责任链模式
  • DDoS攻击剧增,深入解析抗DDoS防护方案
  • 设计模式之模版方法(TemplateMethod)
  • Spring Boot 整合xxl-job实现分布式定时任务
  • STM32GPIO——上拉、下拉电阻
  • uniapp在IOS手机下解决时间nan-an-nan问题
  • MYSQL迁移到人大金仓后的适配问题汇总
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【Leetcode】104. 二叉树的最大深度
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Angular 响应式表单 基础例子
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • es的写入过程
  • JAVA 学习IO流
  • JavaScript中的对象个人分享
  • Java反射-动态类加载和重新加载
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nodejs调试方法
  • php的插入排序,通过双层for循环
  • Python十分钟制作属于你自己的个性logo
  • Yii源码解读-服务定位器(Service Locator)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 人脸识别最新开发经验demo
  • 如何优雅地使用 Sublime Text
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 微信小程序实战练习(仿五洲到家微信版)
  • 译有关态射的一切
  • 用jQuery怎么做到前后端分离
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 【干货分享】dos命令大全
  • 1.Ext JS 建立web开发工程
  • C# - 为值类型重定义相等性
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (2.2w字)前端单元测试之Jest详解篇
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Forward) Music Player: From UI Proposal to Code
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (转)为C# Windows服务添加安装程序
  • (转载)Google Chrome调试JS
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net Core与存储过程(一)
  • .pyc文件是什么?