Python 在tensorflow中为不同大小的输入图像调整边界框的大小

Python 在tensorflow中为不同大小的输入图像调整边界框的大小,python,tensorflow,Python,Tensorflow,我正在研究图像中的目标检测问题,我正在使用tensorflow进行神经网络计算。我有650x650像素大小的图像,以及一组与这些图像对应的标签。标签只是图像中对象的边界框,框坐标对应于650x650像素图像中的坐标 现在,我想将这些图像的大小调整为1280x1280。似乎我可以使用tf.image.resize\u images()函数将图像大小调整为我想要的大小。但是,我仍然需要根据新坐标调整边界框的大小 tensorflow是否有相应的功能来调整图像标签的大小?我想另一种方法是通过将标签框乘

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

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


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

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

这样,

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

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

您可能希望了解当前最先进的算法是如何实现其边界框逻辑的。我想那是不可能的。但“调整图像大小”要求您提及
新高度
新宽度
,即1280 x 1280。因此,您无论如何都可以访问该比例,即在本例中,
scale=(1280/650)
,您可以将边界框编号乘以
scale
,然后设置
dtype=int
,这样就不会有浮点值。可能有一个1像素的误差,但如果你训练像Yolo这样的东西,它应该是好的。是的,这是有道理的。我通常使用
gdal\u translate
调整图像大小,但看到了这个tensorflow函数。所以我只是想知道Tensorflow或者现在是否已经有了某种辅助函数。但是,是的,我可以按照你的建议做。如果我使用
tf.image.resize\u with_pad()
来调整图像大小,这种方法似乎失败了。我必须自己做吗?