Bounding box(bbox) 预测

2023-05-16

在出现Bounding box预测之前,一般都是通过滑动窗口进行目标检测。本文前两部分介绍滑动窗口算法,这样是为了更好介绍 bounding box如何引出、为了解决什么问题而引出的。也可直接跳跃到第三部分看有关bounding box内容。

一、滑动窗口

简单来说,就是那个框,在图片上移动,就看框里面有没有你要找的目标
在这里插入图片描述
其实就是用不同大小的图,在图片上从左到右,从上到下的搜索,找到你要的目标,因为目标的大小不一样,所以很多时候你看你需要很多个尺寸的框来搜索,所以基本是属于穷举法啦,找到适合的为止。
在这里插入图片描述
然后将每个尺寸的框input到网络中进行预测。假设向滑动窗口卷积网络输入14x14x3的图片,经过卷积、池化、全连接(通过卷积层代替的全连接层,参考论文:Sermanet, Pierre, et al. “OverFeat: Integrated Recognition, Localization and
Detection using Convolutional Networks.” Eprint Arxiv (2013). )神经网络最后的输出层,即softmax单元的输出是1×1×4。
在这里插入图片描述
滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多小方块,卷积网络要一个个地处理。如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。

二、卷积滑动窗口的实现

以前的滑动窗口是用很多不同大小的窗口进行移动(根据步长来移动),把图片分成很多个小窗口(如:14x14),然后把每个窗口喂给分类器,如果给出较高的分类分数,那就说明这个窗口有物体,那就留着,这样处理完所有窗口。
假设输入给卷积网络的图片大小是14x14x3,测试图片是16x16x3,现在给输入图片加一个黄色条块,在最初的算法中,会将蓝色区域输入给卷积网络,生成0或1分类。接着窗口步幅为2像素,向右滑动2像素变成绿色方框,然后输入卷积网络,生成0或1分类。下面以此类推,,,我们在这个 16×16×3 的小图像上滑动窗口,卷积网络运行了 4 次,于是输出了了 4 个标签。
在这里插入图片描述
结果发现,这4次操作很多计算是重复的。所以在执行滑动窗口卷积的卷积网络中,可以使卷积网络在这4次向前传播中共享很多权值。从一开始操作中,卷积网络运行同样的参数,使得相同的5x5X16的过滤器进行卷积操作,得到12x12x16的输出层,然后进行2x2x16的最大池化,输出6x6x16,,,最后经过1x1x4的卷积得到2x2x4的输出层。最终,输出层的蓝色方块是图像左上角14x14的输出,右上角的方块是图像右上14x14的输出。
所以该卷积操作的原理是我们不需要把输入图像分割成四个子集,分别执行前向传播,而是把它们作为一张图片输入给卷积网络进行计算,其中的公共区域可以共享很多计算,就像这里我们看到的这个 4 个 14×14 的方块一样。
以上就是在卷积层上应用滑动窗口算法的内容,它提高了整个算法的效率。不过这种算法仍然存在一个缺点,就是边界框的位置可能不够准确。因此提出了Bounding box预测。

三、Bounding Box预测(Bounding box predictions)

比如你的输入图像是 100×100 的,然后在图像上放一个网格。为了介绍起
来简单一些,我用 3×3 网格,实际实现时会用更精细的网格,可能是 19×19。
在这里插入图片描述
你需要这样定义训练标签,所以对于 9 个格子中的每一个指定一个标签
𝑦,𝑦是 8 维的,和你之前看到的一样,
𝑦 = [𝑝𝑐 𝑏𝑥 𝑏𝑦 𝑏ℎ 𝑏𝑤 𝑐1 𝑐2 𝑐3 ]T ,
𝑝𝑐等于 0 或 1 取决于这个绿色格子中是否有图像。然后𝑏𝑥、𝑏𝑦、𝑏ℎ和𝑏𝑤作用就是,如果那个格子里有对象,那么就给出边界框坐标。然后𝑐1、𝑐2和𝑐3就是你想要识别的三个类别,背景类别不算,所以你尝试在背景类别中识别行人、汽车和摩托车,那么𝑐1、𝑐2和𝑐3可以是行人、汽车和摩托车类别。这张图里有 9 个格
子,所以对于每个格子都有这么一个向量。
我们看看左上方格子,这里这个(编号 1),里面什么也没有,所以左上格子的标签向量
𝑦 = [0 ? ? ? ? ? ? ?]T
然后这个格子(编号 2)的输出标签𝑦也是一样,这个格子(编号 3),还有其他
什么也没有的格子都一样。
现在这个格子呢?讲的更具体一点,这张图有两个对象,YOLO 算法做的就是,取两个对象的中点,然后将这个对象分配给包含对象中点的格子。所以左边的汽车就分配到这个格子上(编号 4),然后右边车分配给这个格子(编号 6)。所以即使中心格子(编号 5)同时有两辆车的一部分,我们就假装中心格子没有任何我们感兴趣的对象,所以对于中心格子,分类标签𝑦和这个向量类似,和这个没有对象的向量类似,即
𝑦 = [0 ? ? ? ? ? ? ?]
而对于这个格子,这个用绿色框起来的格子(编号 4),目标标签就是这样的,
这里有一个对象,𝑝𝑐 = 1,然后你写出𝑏𝑥、𝑏𝑦、𝑏ℎ和𝑏𝑤来指定边界框位置,然后还有类别 1是行人,那么𝑐1 = 0,类别 2 是汽车,所以𝑐2 = 1,类别 3 是摩托车,则数值𝑐3=0,即
𝑦 =[1 𝑏𝑥 𝑏𝑦 𝑏ℎ 𝑏𝑤 0 1 0 ]T
右边这个格子(编号 6)也是类似的,因为这里确实有一个对象,它的向量应该是这个样子的,
𝑦 =[1 𝑏𝑥 𝑏𝑦 𝑏ℎ 𝑏𝑤 0 1 0 ]T
作为目标向量对应右边的格子。 所以对于这里 9 个格子中任何一个,你都会得到一个 8 维输出向量,因为这里是 3×3 的网格,所以有 9 个格子,总的输出尺寸是 3×3×8,所以目标输出是 3×3×8。因为这里有 3×3格子,然后对于每个格子,你都有一个 8 维向量𝑦,所以目标输出尺寸是 3×3×8。

参考:
Bounding Box是怎么得到的-RCNN目标检测初探

卷积神经网络

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bounding box(bbox) 预测 的相关文章

  • 盒子(Box)

    Box Time limit 3 000 seconds Ivan works at a factory that produces heavy machinery He hasa simple job he knocks up woode
  • 浅谈linux - virtual box设置共享文件夹

    概述 本文用于展示在virtual box虚拟机创建共享文件夹 xff0c 实现windows和ubuntu文件互传 注意 开发环境 xff1a VirtualBox 6 1 ubuntu 16 04 另外 xff0c 小编所有文章均是自己
  • CentOS在virtual box中启动后网络未连接的解决

    场景 xff1a Virtual Box虚拟机环境 xff0c 网络连接方式是Internal CentOS7系统 xff0c 启动为命令行模式 xff0c 配置静态IP xff1a 192 168 3 2 启动后网络显示未连接 解决步骤
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • 【标注工具】旋转的 bbox 转普通 bbox

    目的 xff1a 实现以旋转目标检测的前提下 xff0c 将旋转标记框转为普通的标记框 相关连接 xff1a 实例分割 语义分割时旋转Bounding Box导致边框变宽 xff1a https www jianshu com p bb12
  • ECCV2022_Point-to-Box Network for Accurate Object Detection via Single Point Supervision 论文阅读

    ECCV2022 P2BNet 论文阅读 文章目录 ECCV2022 P2BNet 论文阅读0 Abstract 0 1 MIL multiple instance learning 多示例学习 1 Introduction 1 0 WSO
  • add a wifi AP for armbian box (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2022 03 26 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 http blog csdn net quqi99 无线网卡的
  • Bounding box(bbox) 预测

    在出现Bounding box预测之前 xff0c 一般都是通过滑动窗口进行目标检测 本文前两部分介绍滑动窗口算法 xff0c 这样是为了更好介绍 bounding box如何引出 为了解决什么问题而引出的 也可直接跳跃到第三部分看有关bo
  • white/black-box attack(黑盒白盒攻击基础)

    基本概念 攻击方法分类标准 xff1a 假正性攻击 false positive 与伪负性攻击 false negative 假正性攻击 xff1a 原本是错误的但被被攻击模型识别为正例的攻击 eg 一张人类不可识别的图像 xff0c 被D
  • css流体布局下发宽度分离原则与box-sizing的使用

    学习完了CSS世界的总结 因为默认的box sizing 为content box宽度作用在内容 所以当出现 box width 100px border 1px solid red 或 box width 100px padding 20
  • 常见的3d bounding box标注工具

    0 简介 对于3d bounding box而言 xff0c 近几年随着自动驾驶的火热 xff0c 其标注工具也日渐多了起来 xff0c 本篇文章不讲具体的算法 xff0c 这里主要聚焦于这些开源的3d bounding box标注工具 x
  • Virtual Box+Ubuntu20.04+ROS2 Foxy配置

    ROS从最早的正式版本Box Turtle到现在也十几年了 而ROS2出来也挺久了 xff0c 一直没机会看看 好久也没弄ROS xff0c 这几天捣鼓了捣鼓 目录 1 Virtual Box安装Ubuntu20 04 2 ROS2 Fox
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • CSS3 box-sizing 属性

    CSS3 box sizing 属性 常规盒模型 内容区 padding border margin 如果在页面中设置100100的div 那么padding会撑大div 并且border也是在100100的基础上面进行增加像素的 box
  • matlab通过两点画线问题&&plot,line的用法和区别。

    先马 1 LINE并不等同于PLOT 我查过HELP 很多属性不同 2 对与外框的问题 PLOT可以用法BOX控制 LINE无外框 3 图形删除的问题 PLOT可用HOLD ON或OFF控制 LINE要是用DELET 因此建议使用PLOT
  • 边界椭圆

    我被分配了一个图形模块的作业 其中一部分是计算一组任意形状的最小外接椭圆 椭圆不必与轴对齐 这是使用 AWT 形状在 java euch 中工作的 因此我可以使用形状提供的所有工具来检查对象的包含 相交 您正在寻找椭圆体最小包围体积 htt
  • Box.COM 与 Android 应用程序集成-OAuthActivity-NullpointerException?

    我正在整合BOX COM与我的 android 应用程序 所以我正在使用BoxAndroidLibraryV2 and BoxJavaLibraryV2与我的申请 我可以运行示例 Android 应用程序BoxSDKSample 因此 我从
  • 如何消除 Spotfire 箱形图中的异常值

    提前感谢您的帮助 问候 拉杰 将值添加到MAX 即使可能 值也会扭曲数据 不过 有两种技巧可以做到这一点 右键单击 gt 属性 gt Y 轴 gt 设置MIN范围值和MAX将值范围设置为可以消除所有异常值的值 这实际上只适用于所有值都彼此接
  • pythonplotlygraph_objects框标记的属性outliercolor不起作用(可能是错误)

    我想我在类plotly graph objects box Marker中发现了一个错误 因为属性outliercolor不起作用 我按照参考文献https plotly github io plotly py docs generated
  • Nodejs:如何向浏览器发送可读流

    如果我查询框 REST API 并返回可读流 处理它的最佳方法是什么 怎么发送到浏览器呢 免责声明 我对流和缓冲区很陌生 所以其中一些代码非常理论化 你能在响应中传递readStream并让浏览器处理它吗 或者您是否必须将块流式传输到缓冲区

随机推荐