【问题标题】:Is there any way where I can make a CNN output pixel locations?有什么方法可以让 CNN 输出像素位置?
【发布时间】:2020-06-16 15:25:47
【问题描述】:

我想训练一个 CNN,它将一个形状为 (1600, 800, 1) 的 numpy 数组作为输入,该数组将包含所有 0,除了在几个像素处我可以有 10 到 3100 范围内的值(这个 numpy 数组是不是图像),并且输出的大小应为 310,其中每个元素都是一对,其中包含输入中具有非零值的点的坐标(x,y)位置。

有没有办法做到这一点?非常感谢您对此的任何见解。提前致谢!

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!本网站不适用于“我该怎么做?”问题。如果您进行了尝试但没有按预期工作,那么我们可以帮助您。
  • 实际上我尝试实现香草 CNN,但准确度非常糟糕。对不起,我没有在问题中提到这一点!

标签: python computer-vision data-science conv-neural-network


【解决方案1】:

如果没有额外的帮助,普通的 CNN 通常无法推断出那种空间信息。已经有很多尝试来解决这个问题,其中之一是CoordConv。 tl;dr 是,如果您想像问题中那样对数组中的位置进行回归,向网络提供张量/矩阵/向量/包含(通常是标准化的)坐标的任何内容是很有用的。您可以在输入或不同级别执行此操作。例如,在您的情况下,您的输入可以修改为如下所示:

#Tensor of size 1x1x2x3100 
[0, ..., non_zero_val, 0, other_non_zero_val, 0, 0]
[0,  1 , ...                                  3099]/3099 #element-wise division just to normalise

【讨论】:

  • 哇,这真的很有帮助!谢谢!
  • 但是,为什么张量大小是 2x3100?
  • @ramanujanviki 您需要将大小为 D 的向量和(也)大小为 D 的索引向量共同提供给网络,所以我认为这样做的一种自然方法是将两者连接起来在 2xD 矩阵中。
  • 哦,有道理!谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 2020-06-02
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
相关资源
最近更新 更多