【问题标题】:Save tensorflow object detection augmented images保存 tensorflow 对象检测增强图像
【发布时间】:2019-05-22 06:33:40
【问题描述】:

有没有办法在所有预处理/增强之后查看 tensorflow 对象检测 api 训练的图像。

我想验证一切看起来是否正确。我能够验证在推理中查看图表后调整大小的调整大小,但对于增强选项,我显然无法做到这一点。

在过去使用 Keras 时,我能够做到这一点,但我发现我太激进了。

【问题讨论】:

标签: tensorflow object-detection-api


【解决方案1】:

【讨论】:

    【解决方案2】:

    API 提供增强选项的测试代码。在input_test.py 文件中,函数test_apply_image_and_box_augmentation 就是为此而生的。你可以重写这个函数,将自己的图片传递给tensor_dict,然后保存augmented_tensor_dict_out进行验证,也可以直接可视化。

    编辑: 由于这个答案很久以前就得到了回答,但仍未被接受,因此我决定通过示例提供更具体的答案。我写了一个名为augmentation_test.py的小测试脚本。

    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    
    import functools
    import os
    from absl.testing import parameterized
    
    import numpy as np
    import tensorflow as tf
    from scipy.misc import imsave, imread
    
    from object_detection import inputs
    from object_detection.core import preprocessor
    from object_detection.core import standard_fields as fields
    from object_detection.utils import config_util
    from object_detection.utils import test_case
    
    FLAGS = tf.flags.FLAGS
    
    class DataAugmentationFnTest(test_case.TestCase):
    
      def test_apply_image_and_box_augmentation(self):
        data_augmentation_options = [
            (preprocessor.random_horizontal_flip, {
            })
        ]
        data_augmentation_fn = functools.partial(
            inputs.augment_input_data,
            data_augmentation_options=data_augmentation_options)
        tensor_dict = {
            fields.InputDataFields.image:
                tf.constant(imread('lena.jpeg').astype(np.float32)),
            fields.InputDataFields.groundtruth_boxes:
                tf.constant(np.array([[.5, .5, 1., 1.]], np.float32))
        }
        augmented_tensor_dict = 
            data_augmentation_fn(tensor_dict=tensor_dict)
        with self.test_session() as sess:
          augmented_tensor_dict_out = sess.run(augmented_tensor_dict)
        imsave('lena_out.jpeg',augmented_tensor_dict_out[fields.InputDataFields.image])
    
    
    if __name__ == '__main__':
      tf.test.main()
    

    您可以将此脚本放在models/research/object_detection/ 下,然后使用python augmentation_test.py 简单地运行它。要成功运行它,您应该提供任何图像名称“lena.jpeg”,增强后的输出图像将保存为“lena_out.jpeg”。

    我使用“lena”图像运行它,这是增强前和增强后的结果。

    .

    请注意,我在脚本中使用了preprocessor.random_horizontal_flip。结果准确地显示了输入图像在random_horizontal_flip 之后的样子。要使用其他增强选项对其进行测试,您可以将random_horizontal_flip 替换为其他方法(它们都在preprocessor.py 以及配置原型文件中定义),您可以将其他选项附加到data_augmentation_options 列表中,例如示例:

    data_augmentation_options = [(preprocessor.resize_image, {
            'new_height': 20,
            'new_width': 20,
            'method': tf.image.ResizeMethod.NEAREST_NEIGHBOR
        }),(preprocessor.random_horizontal_flip, {
        })]
    

    【讨论】:

      猜你喜欢
      • 2019-09-12
      • 2021-06-06
      • 2018-10-21
      • 2019-04-22
      • 1970-01-01
      • 2020-01-15
      • 2021-01-31
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多