问题标签 [yolo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - 使用 YOLO v2 检测多个类时的问题和失败,而单类检测几乎准确
对于一个课程项目,我正在训练一个单通道网络来检测图像中的多个仪器符号。下面显示了这些类的一个非常小的子集。
Image_Class_1 Image_Class_2 Image_Class_3 Image_Class_4
我正在使用 YOLO v2 来训练和检测图像中的多个类。由于此类符号的数据集不存在,因此我通过以下两种方式对上面显示的四个符号执行了数据扩充。
- 以 0.5 度的步长旋转每种符号类型,为每个类别提供 720 个图像。
- 此外,获得的 720 幅图像通过高斯模糊(5x5 滤波器)。
这将数据集扩充为每类 1440 张图像。
YOLO v2 的配置文件仅在以下几行进行了更改:
- 第 3 行:批次 = 64
- 第 4 行:细分 = 64(细分大小为 8 会使 CUDA 内存不足)。
- 第 244 行:类 = 4
- 第 237 行:过滤器 =(类 + 5)*5 = 45。
用于训练的图像大小为 500x500,整个数据集分为 80% 和 20% 的比例用于训练和测试。
网络训练运行到 3100 次迭代,平均损失为 0.048。
然而,训练结果让我有点困惑,因为在多类检测的情况下结果相当出乎意料。在测试图像的单类分类中,网络表现符合预期(虽然对两个类来说不是很好,也许可以改进)如下所示:
检测类_2_图像(概率 = 78%) 检测类_1_图像(概率 = 98%) 检测class_3_image(概率= 98%)
但是,当我尝试对测试图像执行多类检测时,检测和分类完全失败,如下图所示:
Multi-class Detection biased for class_3
如果我改变测试图像中符号之间的空间距离,那么边界框和类预测会变得更加随机。因此,我对这个问题有几个问题:
- 由于 YOLO 也隐式执行数据增强,我的数据增强过程是否会干扰训练?
- 我是否需要将图像大小调整为精确的 416X416 作为 YOLO v2 所需的输入?
- 我知道 YOLO v2 是一个非常重的 CNN 架构,它可能不适用于此类图像,但单类分类结果很有希望不容忽视。那么有人能弄清楚为什么它在多类检测方面完全失败了吗?
- 我应该按原样使用 YOLO v2 还是对其进行修改以检测图像中的这些符号?我想如果我修改我可能会失去更多并进一步恶化检测。
python - Estimator API:AttributeError:“NoneType”对象没有属性“dtype”
我已经查找了此问题的先前答案,但尚未解决。我正在从头开始实施 YOLO 算法(用于对象检测)并且在训练部分遇到问题。
对于训练,我是 tf.estimator API,并且在 tensorflow示例中使用类似于 CNN MNIST 代码的代码。我收到以下错误:
主文件中损失函数相关代码如图所示(类似CNN MNIST官方示例):
以前对类似问题的回答表明损失函数没有返回任何内容。但是,当我尝试使用随机生成的数组的损失函数时,它可以正常工作并产生正常值。
另外,如果我从损失函数返回一个像 10.0 这样的常量,我仍然会得到同样的错误。
我不知道现在如何进行。另外,有什么方法可以打印损失函数返回的损失。显然,tf.estimator API 自己启动一个 tensorflow 会话,如果我尝试创建另一个会话(为了打印损失函数返回的值),我会得到其他错误。
machine-learning - yolo算法的坐标输出代表什么?
我的问题类似于这个话题。当我开始思考 yolo 算法的输出时,我正在观看 Andrew Ng 的关于边界框预测的讲座。让我们考虑这个例子,我们使用 19x19 的网格和只有一个具有 2 个类的感受野,所以我们的输出将是 => 19x19x1x5。最后一个维度(大小为 5 的数组)表示以下内容:
我不明白 X,Y 坐标是表示相对于整个图像大小的边界框,还是只是和感受野(过滤器)。在视频中,边界框被表示为感受野的一部分,但逻辑上感受野比边界框小得多,而且人们可能会修改过滤器的大小,因此相对于过滤器定位边界框是没有意义的。
那么,基本上图像边界框的坐标代表什么?
python - 使用 keras 或 tensorflow 为 YOLO 自定义损失函数时遇到问题
我正在尝试为 YOLO 定义自定义损失函数,以检测单个类对象的存在并定位其中心(有点地标检测),如从 Andrew NG 那里学到的。49 个网格的每个网格输出一个深度仅为 3 个单位的向量(7*7*3)。第一个通道表示该网格中对象的概率,其他两个预测我的对象中心的坐标以进行地标检测。我最近一直在努力研究张量演算以避免错误的损失函数,但在提高准确性方面遇到了麻烦。
我只是减去所有三个通道,y_true
但y_pred
将第二和第三通道的结果与第一通道矩阵相乘,y_true
因为如果第一通道没有预测对象本身的存在,我们不想考虑在第二和第三通道中预测的坐标。
conv-neural-network - 在 YOLOv3 中计算所有三个尺度的损失
我目前正在尝试使用Estimator API在 TensorFlow中实现YOLOv3。但是,我被困在损失函数上。YOLOv3 在三个尺度上进行预测,我不知道如何计算所有这些尺度的损失。我已经看过论文,也试图在暗网源代码中找到损失函数,但无法弄清楚。我还查看了另一个实现YOLOv3 TensorFlow 实现的损失函数的代码,但这并没有真正帮助我理解损失的计算。
有人可以解释如何在考虑所有三个尺度的预测的同时准确计算训练损失吗?
python - 如何使用暗网检测视频中的对象?
我正在使用暗网来检测图像中的对象,这非常有帮助。此外,我还想从计算机中的视频中检测对象。
我安装了 Open CV,但我的电脑没有 GPU。我认为我应该更改我的 darknet.py 文件中的某些内容。但是我应该添加什么代码?你能给我一个明确的指示吗?预先感谢。
python - ImportError:没有名为“generate_xml”的模块
我正在尝试使用 yolo 模型创建一个关于实时车辆分类的项目。当我尝试注释车辆图像时,会弹出此错误:
我用来训练的来源可以在这里找到。
computer-vision - 关于 Yolo 目标检测算法的概念问题
我的理解是,Anchor Boxes(在 Yolo v2 算法中)的动机是在 Yolo 的第一个版本(Yolo v1)中,不可能在同一个网格框中检测多个对象。我不明白为什么会这样。
此外,作者的原始论文(Yolo v1)有以下引用:
“每个网格单元预测 B 个边界框和这些框的置信度分数。这些置信度分数反映了模型对框包含对象的置信度以及它认为框预测的准确度。”
这不是表示一个网格单元可以识别多个对象吗?在他们的论文中,他们将 B 视为 2。为什么不将 B 视为任意更高的数字,比如 10?
第二个问题:Anchor Box 尺寸如何与 Bounding Box 尺寸相关联,以检测特定对象?一些网站说 Anchor Box 只定义了一个形状,而另一些网站说它定义了一个形状和一个大小。无论哪种情况,Anchor Box 是如何与 Bounding Box 绑定的?
谢谢,桑迪普
deep-learning - YOLO 中的锚盒:它们是如何决定的
我已经阅读了几个YOLO
教程,但我发现如果要将图像划分成的每个单元格的锚框是预先确定的,我发现有些难以理解。在我浏览的其中一个指南中,图像被分成13x13 个单元格,并且它表示每个单元格预测5 个锚框(比它大,这是我的第一个问题,因为它还说它会首先检测小块中存在什么物体预测框之前的单元格)。
小细胞如何预测比它更大的对象的锚框。也有人说,每个单元在预测其锚框之前进行分类,如果只有一小部分对象落在单元内,那么小单元如何在不查询相邻单元的情况下对其中的正确对象进行分类
E.g.
假设13 个单元格中的一个只包含一个穿着 T 恤的男子的白色口袋部分,该单元格如何正确分类一个人存在而不与相邻单元格相关联?在尝试定位单个对象时使用普通的 CNN,我知道边界框预测与整个图像相关,所以至少我可以说网络在决定框应该在哪里之前知道图像上各处发生了什么。
PS:我目前对 YOLO 工作原理的看法是,基本上每个单元格都被分配了预先确定的锚框,在每一端都有一个分类器,然后选择每个类别得分最高的框,但我确信它不会在某个地方加起来.
更新:在这个问题上犯了一个错误,它应该是关于如何决定常规边界框而不是锚/先前框。所以我将
@craq
的答案标记为正确,因为这就是根据 YOLO v2 论文决定锚框的方式