Сохранить дополненные изображения обнаружения объектов тензорного потока

Есть ли способ просмотреть изображения, на которых тренируется API обнаружения объектов тензорного потока после всей предварительной обработки/аугментации.

Я хотел бы убедиться, что все выглядит правильно. Я смог проверить изменение размера, посмотрев на изменение размера столбца графика в выводе, но я, очевидно, не могу сделать это для параметров увеличения.

В прошлом с Керасом мне удавалось это делать, и я обнаружил, что был слишком агрессивен.


person user27108    schedule 21.12.2018    source источник
comment
о каких видах аугментации вы говорите? Не могли бы вы привести пример кода?   -  person mrk    schedule 22.12.2018
comment
Как правило, вы можете увидеть это, добавив расширенные изображения в тензорную доску, если вы ее используете. Если нет, вы можете сохранить их в массивах numpy и построить их. Вы должны предоставить пример кода.   -  person Lau    schedule 22.12.2018
comment
Любая модель запускается с использованием API обнаружения объектов с конфигурационным файлом с любым из перечисленных параметров github.com/tensorflow/models/blob/master/research/   -  person user27108    schedule 22.12.2018
comment
Отвечает ли это на ваш вопрос? Визуализация дополненных изображений поездов [API обнаружения объектов tensorflow]   -  person user2672299    schedule 12.03.2021


Ответы (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', и вот результат до аугментации и после аугментации. лена

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, {
    })]
person danyfang    schedule 06.03.2019

Вот код для достижения того, что было задано в вопросе https://github.com/majrie/visualize_augmentation/blob/master/visualize_augmentation.ipynb .

Он основан на ответе @danyfang на следующий вопрос Визуализация увеличенных изображений поездов [API обнаружения объектов тензорного потока].

person user2672299    schedule 12.03.2021