Tensorflow对象检测API

时间:2019-04-05 20:42:41

标签: object-detection-api

在所有预处理/增强后,有没有办法查看tensorflow object detection api所训练的图像。

我想确认一切看起来正确。我可以通过推论图后调整大小来验证调整大小,但显然不能对增强选项进行调整。

TIA

1 个答案:

答案 0 :(得分:0)

我回答了类似的问题here

您可以利用api提供的测试脚本并进行一些更改以满足您的需求。

我写了一个名为augmentation_test.py的测试脚本。它从input_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运行它(当然,您首先需要安装API)。要成功运行它,您应该提供任何图像名称“ lena.jpeg”,扩充后的输出图像将另存为“ lena_out.jpeg”。

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

lena_out

请注意,我在脚本中使用了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, {
    })]