是否有一种方法可以在所有预处理/增强后查看tensorflow对象检测api训练的图像。
我想确认一切看起来正确。我可以通过推论图后调整大小来验证调整大小,但显然不能对增强选项进行调整。
过去,在Keras的帮助下,我能够做到这一点,而我发现自己具有攻击性。
答案 0 :(得分:0)
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和config proto文件中定义),您可以将所有其他选项附加到{{ 1}}列表,例如:
data_augmentation_options
答案 1 :(得分:0)
这是实现问题 https://github.com/majrie/visualize_augmentation/blob/master/visualize_augmentation.ipynb 中提出的问题的代码。
它基于@danyfang 在以下问题 Visualizing augmented train images [tensorflow object detection api] 中的回答。