【问题标题】:Why did I got 2 different feature map with the same kernel on the same image?为什么我在同一张图片上得到了 2 个不同的特征图和相同的内核?
【发布时间】:2020-09-18 21:00:22
【问题描述】:

我随机取了一个内核,并将其应用到 padding='valid'、stride=(1,1) 的图像上,内核的大小 = (3,3)。

这是正常的图像:

这是应用滤镜后的图像:

然后我把原图旋转了90度,变成了这样:

然后我在这个旋转的图像上应用了相同的过滤器,并将其作为输出:

然后我旋转了这个输出图像,使其旋转与之前的特征图相同。 在我旋转了这个旋转的特征图,并将其与之前的特征图进行比较后,我注意到它们并不相同。

这是两个特征图的图像:

如您所见,它们显然不一样。

这意味着特征图随着输入图像中特征位置的变化而变化。

但是为什么会这样呢? 例如:假设我们有一个检测“眼睛”的内核,在对位于图像中心的“眼睛”图像训练内核之后,我们给它一个图像,这一次,“眼睛”出现在顶部- 图像的左侧。它仍然会做得很好,因为它会在图像的每个 (5,5) 部分上搜索眼睛(假设内核的大小为 (5, 5)),所以特征出现在哪里并不重要在图片中。

那么,当我们改变输入图像中特征的位置时,为什么特征图会出现在'5'的例子中?

【问题讨论】:

  • 嘿 Dhruv,您是否尝试打印像素值?你能给我们提供你的代码吗?我认为发生的情况是,当您的滤镜在图像上移动时,它会将某些功能应用于该滤镜选择的像素值。如果您现在旋转该图像,您的滤镜将选择一组不同的像素,因为滤镜仍在以相同的方式(或更好的方向)在图像上移动

标签: machine-learning deep-learning feature-detection


【解决方案1】:

过滤器对旋转不是不变的:对于一个 3×3 像素的窗口,您有 9 个权重来表示窗口中的像素将在输出中表示多少,并且这些对旋转不是不变的。如果旋转内核权重,输出将是相同的。

假设您有一个具有这样权重的内核:

010
000
000

结果是将所有像素移动到底部一个位置。如果旋转图像,应用滤镜并向后旋转,所有像素都会向左移动。

【讨论】:

  • 你说'如果你旋转内核权重,输出将是相同的',但我认为输出不会相同,因为这次将乘以不同的值窗口中的像素值,因此我们会得到不同的输出像素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 2021-09-26
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2021-12-06
  • 2016-12-27
相关资源
最近更新 更多