tensorflow - 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() 函数的输入。有没有其他方法可以解决这个问题?
解决方案
tf.reshape()
如果您确定形状是这样的,您可以使用张量:
boxes = tf.reshape( tf.py_func(get_image_regions, [im_path], [tf.float32]), [ n, 4 ] )
这将修复图表其余部分的形状,并允许您将张量输入,tf.image.crop_and_resize()
但如果输入错误的大小数据,则会引发错误。
推荐阅读
- mysql - 使用 COUNT 后如何在子选择中获取 Max() 值
- python - 在 Pandas 中,如何返回包含部分字符串的多个实例的行
- github - 使用存储库 url 获取存储库元数据
- spinnaker - 需要 Spinnaker API 指导以删除 Spinnaker 管道
- php - 如何在 PHP 中获取“base64 字节数据”
- python - 虽然python登录系统中的循环不断重复并且不会中断
- appkit - 使用 ApplescriptObjc 处理 NSWindow 和 NSTextview 视图
- python-3.x - 在 Vagrant 框中全新安装 Ubuntu 18.04 时安装 python3-dev 的问题
- ios - MFMailComposeViewController - 无法取消或返回上一个视图
- java - 是否有创建和启动简单 html 页面的 Java 代码?