问题标签 [non-maximum-suppression]

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.

0 投票
3 回答
51235 浏览

computer-vision - 非最大抑制

我们已经了解到,您可以获得与atan(dy/dx)边缘正交的方向的梯度方向。现在我们有一个作业,我们应该将此方向离散化为四个类别(x 和 y 方向以及两个对角线),然后检查最佳匹配方向上的两个像素邻居以进行非最大抑制

我没有完全得到解决方案。显然我们有四种情况:

  1. abs(angle) < pi/8,所以梯度(大致)指向x方向,因此我们检查img(i, j-1)img(i, j+1)(假设图像原点在左上角)

  2. angle > pi/8 && angle <= 3*pi/8,所以梯度指向右上角。现在我认为我们需要检查img(i-1, j+1)img(i+1, j-1)但我们检查img(i-1, j-1)并且img(i+1, j+1)看起来像正交对角线。

其他两种情况是等价的。我试图改变这一点,但边缘看起来真的很奇怪,所以这似乎是正确的,但我不明白为什么。

谁可以给我解释一下这个?

0 投票
0 回答
4696 浏览

matlab - 非极大值抑制(细化算法)

我在应用这种细化算法时遇到问题,我不知道提供的代码有什么问题。输出图像与阈值图像几乎相同。 阈值图像 瘦身后

非MaxSupp:

坡度:

0 投票
1 回答
360 浏览

c++ - 如何在 C++ 中实现 imhmin()

我想在 C++ 中实现 matlab 的 imhmin() 函数。首先,我检查了算法。它抑制最小像素强度值。非最大抑制码为:

imhmin() 函数返回抑制值。但是,非最大抑制返回二进制值。我该如何处理?

0 投票
1 回答
295 浏览

c++ - Qt - 图像类 - 非最大抑制 - C++

在编码一些像素操作类的过程中,我实现了非最大抑制功能。

代码在这里:

现在非最大抑制之前和之后的结果图片非常奇怪。感觉就像一些线条开始突然出现。请观看所附图片(非最大抑制之前和之后)。

如果有任何帮助,我将不胜感激。

谢谢!

请忽略我在图像边缘的 3 像素错误,只是为了让您了解灰度和高斯差异后的图像

非最大抑制之前

非最大抑制后

你能看到添加的行吗?它是什么?

0 投票
1 回答
10765 浏览

python - 如何在 Python 中使用 OpenCVcornerSubPix()?

我正在尝试获取并绘制图像中的角点。现在,我有一个具有以下格式的元组列表:((row,column,scale)比例是因为我使用的是高斯金字塔),手动从 harrisCornerDetector 和 nonMaximumSupression 过程获得。这份清单是featuresy1

我的代码如下:

其中 image 是具有三个相同形状的灰度图像。如您所见,我将cornerSubPix这样的结构作为第二个参数:[(x1,y1,scale1),(x2,y2,scale2),...,(xn,yn,scalen)].

这引发以下错误:

出于这个原因,我想知道应该用什么类型、格式或结构featuresy1cornerSubPix()工作。这是我唯一做错的事情吗?没有太多关于此的文档。

谢谢!

0 投票
0 回答
659 浏览

python - tf.image.non_max_suppression 给出未初始化的张量

tf.image.non_max_suppression在 Faster-RCNN 网络中使用 tensorflow。张量流图构建成功并且运行也没有错误,但是在运行图时,输出是空张量,其维度取决于输入的大小为 0(例如,我得到形状为 (0,4) 的输出张量)。所以我用tfdbg工具来看看发生了什么。我发现张量值是Uninitialized tensor针对tf.image.non_max_suppression操作的。取决于 nms op 输出的所有后续张量也显示为Unintialized tensor.

我已经训练了这个 Faster-RCNN 网络并使用tf.train.Saver(..).save(..). 当我训练网络时,我使用 python numpy 函数来做 NMS,并使用 op wrapper 将其插入网络tf.py_func,然后在模型训练完成后,我决定将 python 函数更改为 tensorflow 实现。

tf.image.non_max_suppression没有可学习的参数,所以我不明白为什么当我现在加载保存的模型并运行图形时,张量未初始化。我也尝试sess.run(tf.global_variables_initializer())在加载模型之前做,tf.train.Saver(..).restore(..)但没有任何变化,仍然看到Uninitialized tensorNMStfdbg和后续操作。

关于这种行为以及如何解决它的任何想法?

这就是我的使用方式tf.image.non_max_suppression

0 投票
1 回答
511 浏览

ios - IOS app中的Tensorflow对象检测开发——nonmaxsuppressionV2

我正在尝试使用 ssd_mobilenet_v1_coco 模型检测对象。我自己训练的模型文件 .pb 文件用于检测。成功构建后,单击运行按钮,我收到以下错误。

我可以在下面的链接中为已经训练好的 .pb 模型文件执行和启动 ios 应用程序。请给出解决上述问题并启动 ios 应用程序的解决方案。 https://github.com/JieHe96/iOS_Tensorflow_ObjectDetection_Example

0 投票
0 回答
65 浏览

python - 嵌套循环不会执行超过第一个内部 if 循环

编码和 Python 的新手。我有这段代码,由于某种原因,它只会通过我的第一个 if 语句。我已经看了好几个小时,老实说我不知道​​为什么?

所以基本上我希望它通过一个二维数组。我有另一个称为 shape 的二维数组(与 trex 相同的形状),其角度为 0、45、90。首先我查看点 [i,j] 的角度,然后根据它的角度,我希望它看起来在该点的邻居处的 trex 值。如果相邻点都低于中间点,那么我什么也不做。否则,我将中间点 ([i,j]) 设置为 0。但是当我运行我的代码时,它只会将角度为 0 的那些设置为 0。所以它永远不会归结为我的 elif 或 else 语句。我不知道为什么:'(希望这是有道理的,非常感谢任何帮助!

0 投票
2 回答
6070 浏览

tensorflow - 如何阅读 tensorflow 非极大值抑制方法源码?

我正在尝试在这一中阅读 Tensorflow 非最大抑制方法的源代码。它是从gen_image_ops文件中导入的,但我在 tensorflow 源代码中的任何地方都找不到该文件。

是否有任何来源可以访问此方法的代码?

0 投票
2 回答
2391 浏览

tensorflow - TensorFlow 高误报率和非最大抑制问题

我正在使用faster_rcnn_inception_v2_coco作为预训练模型在 Windows 10 上训练Tensorflow 对象检测。我在 Windows 10 上,在 NVIDIA GeForce GTX 1080、CUDA 9.0 和 CUDNN 7.0 上使用 tensorflow-gpu 1.6。

我的数据集仅包含一个对象“手枪”和 3000 张图像(2700 个训练集,300 个测试集)。图像的大小从 ~100x200 到 ~800x600。

我训练这个模型进行了 55k 次迭代,其中mAP约为 0.8,TotalLoss似乎收敛到 0.001。但是,但是,看到评估,在同一个检测到的对象上有很多多个边界框(例如thisthis),并且有很多误报(房屋被检测为手枪)。例如,在我拍摄的这张照片中(后来应用了模糊滤镜),模型将人和汽车检测为手枪,以及正确检测。

数据集与 tfrecords 和标签映射一起上传到此处。我使用了这个配置文件,其中我唯一更改的是:num_classes为 1、fine_tune_checkpoint、train 和 eval的input_pathlabel_map_path以及num_examples。 由于我认为多个框是一个非最大抑制问题,我将score_threshold(第 73 行)从 0 更改为 0.01,将iou_threshold(第 74 行)从 1 更改为 0.6。使用标准值,结果比这差得多。

我该怎么做才能获得良好的检测?我应该改变什么?也许我错过了一些关于参数调整的东西......

谢谢