我已经创建了一个数据集并将其保存到TFRecord文件中。问题是图片的大小不同,所以我想保存图片的大小。所以我使用了TFRecordWriter并定义了如下特性:
example = tf.train.Example(features=tf.train.Features(feature={
'rows': _int64_feature(image.shape[0]),
'cols': _int64_feature(image.shape[1]),
'image_raw': _bytes_feature(image_raw)}))
我希望我可以使用TFRecordReader读取和解码图像,但问题是我无法从文件中获取行和列的值,因为它们是张量。所以我该怎么做才能动态地读取大小并相应地重塑图像。谢谢你们
我建议的工作流程如下:
cropped_image
具有恒定的张量大小,然后可以抛出到无序批处理中。您可以使用
tf.shape(image)
动态访问解码图像的大小。您可以对生成的子元素进行计算,然后使用类似bbox_begin = tf.pack([bbox_h_start, bbox_y_start, 0])
的方法将它们缝合在一起。只需要在其中插入您自己的逻辑来确定裁剪的起点,以及如果图像的起点小于您的管道所需的起点,您要执行的操作。如果您只想将升迁如果图像小于目标尺寸,则需要使用
tf.control_flow_ops.cond
或等效的。但是可以使用min和max操作来设置裁剪窗口的大小,以便在它小于请求的维度时返回完整图像,然后无条件地调整最大大小为500x500。裁剪后的图像将已经是500x500,因此调整大小应该成为一个有效的no-op您可以用动态的
shape
参数调用tf.reshape
。相关问题 更多 >
编程相关推荐