首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >YOLO对象检测:该算法如何预测大于网格单元格的边界框?

YOLO对象检测:该算法如何预测大于网格单元格的边界框?
EN

Stack Overflow用户
提问于 2018-05-29 01:48:34
回答 3查看 6K关注 0票数 16

我正在努力更好地理解YOLO2 &3算法是如何工作的。该算法处理一系列的卷积,直到到达13x13网格为止。然后,它能够对每个网格单元内的对象以及这些对象的边界框进行分类。

如果您查看这张图片,您将看到红色的边框比任何单个网格单元格都要大。此外,包围框的中心是对象的中心。

我的问题是,当网络激活是基于单个网格单元时,预测的边界框如何超过网格单元的大小。我的意思是,网格细胞以外的所有东西都应该不为神经元所知,这些神经元可以预测在该细胞中检测到的物体的边界框。

更确切地说,这里是我的问题:

1.该算法如何预测大于网格单元格的边框?

2.算法如何知道对象的中心位于哪个单元格中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-29 05:38:13

网格单元以外的所有内容都应该不为神经元所知,这些神经元可以预测在该单元格中检测到的对象的边界框。

这不太对。这些细胞对应于图像的一个分区,如果物体的中心位于其中,神经元已经学会了响应。

然而,这些输出神经元的感受场要比细胞大得多,而且实际上覆盖了整个图像。因此,它能够识别和绘制一个包围框周围的对象远大于其指定的“中心单元”。

因此,一个细胞集中在输出神经元的接受场的中心,但它是一个小得多的部分。这也有点任意性,人们可以想象有重叠的细胞--在这种情况下,当一个物体集中在其细胞的重叠区域时,你会期望相邻的神经元同时激发。

票数 9
EN

Stack Overflow用户

发布于 2019-08-15 22:42:23

YOLO预测锚的偏移量。这些锚被初始化,使得有13x13组锚。(在Yolov3中,每个集合都有k=5锚,不同的yolo版本有不同的k。)锚被分散在图像上,以确保检测到所有部分中的对象。

锚可以具有任意大小和纵横比,与网格大小无关。如果您的数据集大多具有较大的前台对象,则应将锚初始化为较大。如果只需要对锚进行小的调整,YOLO就会学得更好。

每个预测实际上都使用来自整个图像的信息。通常,来自图像其余部分的上下文有助于预测。例如,车辆下方的黑色像素可以是轮胎,也可以是阴影。

该算法并不真正“知道”对象中心所在的单元格。但是在训练过程中,我们得到了来自地面真相的信息,我们可以训练它去猜测。经过足够的训练,它最终会很擅长猜测。工作的方式是,最接近地面真相的锚是分配给物体的。其他锚被分配给其他对象或背景。分配给背景的锚应该具有较低的置信度,而分配给对象的锚则根据其边界框的IoU进行评估。因此,训练加强了一个锚的高度自信和一个准确的包装箱,而其他锚给予低信心。在你的问题中的例子不包括任何低自信的预测(可能试图保持简单),但实际上,低自信的预测会比高自信的预测多得多。

票数 3
EN

Stack Overflow用户

发布于 2019-10-24 15:30:23

好吧,这不是我第一次看到这个问题,对于我在yoloquest中遇到的所有yoloquest体系结构来说,都有同样的问题,网络图在第一层或者图像被输入的那一刻没有暗示某种分类和本地化。它通过一系列卷积层和过滤器(没有忘记池,只是觉得它们是网络中最懒的元素,而且我讨厌游泳池,包括其中的单词)。

  • 这意味着在网络流的基本级别上,可以看到或表示不同的信息,从像素到轮廓、形状、特征等,然后才能正确地对对象进行分类或定位,就像在任何正常的CNN中一样。 由于表示边界框预测和分类的张量位于网络的末尾(我看到反向传播的回归)。我认为更恰当的说法是,该网络:
代码语言:javascript
运行
复制
1. divides the image into cells(actually the author of the network did this with the training label datasets)
2. for each cell divided, tries to predict bounding boxes with confidence scores(I believe the convolution and filters right after the cell divisions are responsible for being able to correctly have the network predict bounding boxes larger than each cell because they feed on more than one cell at a time if you look at the complete YOLO architecture, there's no incomplete one). 

因此,最后,我的看法是,网络预测一个单元的更大的包围盒,而不是每个单元都这样做--网络可以被看作是一个正常的CNN,它有each classification + number of bounding boxes per cell的输出,其唯一目的是应用卷积和特征映射来用forward pass检测、分类和定位对象。

forward pass暗示分裂中的相邻细胞不会向后/递归地查询其他细胞,通过下一个特征映射和卷积来预测更大的边界框,从而连接到以前细胞分裂的接受区域。此外,方框的中心化是一个函数的训练数据,如果它被更改为最左,它将不会是中心化(原谅语法)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50575301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档