【问题标题】:Resize bounding boxes in tensorflow, for different size input images调整张量流中的边界框大小,用于不同大小的输入图像
【发布时间】:2018-10-22 22:41:30
【问题描述】:

我正在研究图像中的对象检测问题,并且我正在使用 tensorflow 进行神经网络计算。我有大小为 650x650 像素的图像,以及一组与这些图像相对应的标签。标签只是图像中对象的边界框,框坐标对应于 650x650 像素图像中的坐标。

现在,我想将这些图像调整为 1280x1280。似乎我可以使用 tf.image.resize_images() 函数将图像调整为我想要的大小。但是,我仍然需要将边界框的大小调整为新坐标。

tensorflow 是否有相应的函数来调整图像标签的大小?我想另一种方法是通过将标签框乘以某种比例因子等手动调整标签框的大小。

【问题讨论】:

  • 我想这是不可能的。但是调整图像大小希望您提及new_heightnew_width,即1280 x 1280。因此,无论如何您都可以访问比例尺,即在这种情况下为scale = (1280 / 650),您可以将您的边界框编号乘以scale然后设置 dtype=int 使您没有浮动值。可能有 1 个像素的误差,但如果你正在训练类似 Yolo 的东西,应该没问题。
  • 是的,这是有道理的。我通常使用gdal_translate 调整图像大小,但看到了这个 tensorflow 函数。所以我只是想知道 Tensorflow 或现在是否已经有某种辅助函数。但是,是的,我可以按照你的建议去做。

标签: python tensorflow


【解决方案1】:

您应该根据输入大小缩放边界框坐标:(x, y) --> (x/w, y/h),就像大多数对象检测算法一样。

这样,

  • 您可以动态更改输入大小(但保持相同的纵横比),而无需更改边界框标签。
  • 并且由于输出在 [0-1] 之间缩放,因此网络更容易预测这些分数,而不是绝对值。

你也应该尝试一下,

  • 具有预定义的一组具有特定高度纵横比的边界框,并使用它们的偏移量作为标签。

您可能想了解当前最先进的算法如何执行其边界框逻辑。一个yolo v2 example

【讨论】:

  • 如果我使用tf.image.resize_with_pad () 调整图像大小,这种方法似乎会失败。我必须自己做吗?
猜你喜欢
  • 2021-05-08
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
相关资源
最近更新 更多