张量流中的双线性上采样?

新手上路,请多包涵

我想在 TensorFlow 中做一个简单的双线性调整大小(不一定是整数因子)。例如,从 (32,3,64,64) 张量开始,我想要一个 (32,3,96,96) 张量,其中每个 64x64 已使用双线性插值重新缩放 1.5 倍。最好的方法是什么?

我希望它支持 > 1 的任意因子,而不仅仅是 1.5。

注意:对每个 64x64 的操作与 skimage.transform.rescale (scale=1.5, order=1) 的操作相同。

原文由 Alex I 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

tf.image.resize_images 应该做你需要的。它接受具有任意深度(通道数)的 3d(单个图像)和 4d(图像批次)张量。所以这应该有希望工作:

 # it's height, width in TF - not width, height
new_height = int(round(old_height * scale))
new_width = int(round(old_width * scale))
resized = tf.image.resize_images(input_tensor, [new_height, new_width])

双线性插值是默认值,因此您无需指定它。您也可以直接使用 resize_bilinear

原文由 etarion 发布,翻译遵循 CC BY-SA 4.0 许可协议

我建议 不要 使用任何 tf.image.resize_* 函数,因为它们有一个 无法修复 的严重错误

一组新的、不同的图像重采样函数显然正在开发中。同时,您可以在网络上找到一些示例,了解如何使用 转置卷积自行 完成此操作。不幸的是,每通道上采样的效率要低得多,但正确胜于快速。

编辑

他们最终在 TF 2.0 中修复了这个错误:

  • image.resize 现在考虑适当的像素中心 (…)。

此修复程序目前不通过渐变,这是…希望也能修复的错误。

原文由 P-Gn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题