首页 > 解决方案 > tf.image.crop_and_resize 与另一个 python 函数给出的 bbox

问题描述

我正在尝试在裁剪图像上测试现有网络。我有一个相当大的数据集,所以我使用的是 tensorflow 数据集 API。我首先创建了一个包含我感兴趣的所有图像名称的数据集,然后使用 flat_map() 函数将图像名称数据集映射到裁剪图像块的数据集。

所以,这就是问题所在。我不知道会为此图像生成多少个补丁,我有另一个 python 函数 get_image_regions 它返回一个 n×4 numpy 框数组。

所以我想使用类似的东西:

box = tf.py_func(get_image_regions, [im_path], [tf.float32])

获取框集并将该框用作 tf.image.crop_and_resize() 的输入

但是,由于 py_func 的返回值的形状和等级未知,因此它不能用作crop_and_resize() 函数的输入。有没有其他方法可以解决这个问题?

标签: tensorflowdeep-learning

解决方案


tf.reshape()如果您确定形状是这样的,您可以使用张量:

boxes = tf.reshape( tf.py_func(get_image_regions, [im_path], [tf.float32]), [ n, 4 ] )

这将修复图表其余部分的形状,并允许您将张量输入,tf.image.crop_and_resize()但如果输入错误的大小数据,则会引发错误。


推荐阅读