【问题标题】:How do you augment 4 dimensional images?如何增强 4 维图像?
【发布时间】:2021-04-01 15:56:48
【问题描述】:

我有 3000 组左右的 7 张图像,每张图像大约为 144 x 256 灰度像素,我想增强这些图像中的每一个。我知道这适用于 3d 图像,例如 shape- (144, 256, 3),但我对数据增强还很陌生,并且不确定解决此问题的最佳方法。我想到的一个想法是检查每一组并制作几张图像的副本,每个副本都略微增强,但我不知道如何去做。这是我到目前为止的部分:

data_augmentation = keras.Sequential([
    layers.experimental.preprocessing.RandomFlip('horizontal', input_shape=(train_images.shape[1:])),
    layers.experimental.preprocessing.RandomZoom(0.1)
])

model = models.Sequential()
model.add(data_augmentation)
model.add(layers.Conv3D(512, (1, 3, 3), padding='same', activation='relu', input_shape=(train_images.shape[1:])))
model.add(layers.MaxPooling3D((1, 2, 2)))
model.add(layers.Conv3D(256, (1, 3, 3),  padding='same', activation='relu'))
model.add(layers.MaxPooling3D((1, 2, 2)))
model.add(layers.Dropout(0.3))
model.add(layers.Conv3D(256, (1, 3, 3),  padding='same', activation='relu'))
model.add(layers.MaxPooling3D((1, 2, 2)))
model.add(layers.Conv3D(128, (1, 3, 3),  padding='same', activation='relu'))
model.add(layers.MaxPooling3D((1, 2, 2)))
model.add(layers.Dropout(0.2))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(1))

这是我目前收到的错误消息和回溯:

Traceback (most recent call last):
  File "C:\Users\Mason Choi\PycharmProjects\Passion_project\main (test).py", line 50, in <module>
    layers.experimental.preprocessing.RandomZoom(0.1)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\training\tracking\base.py", line 517, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\sequential.py", line 144, in __init__
    self.add(layer)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\training\tracking\base.py", line 517, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\sequential.py", line 208, in add
    layer(x)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 952, in __call__
    input_list)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 1091, in _functional_construction_call
    inputs, input_masks, args, kwargs)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 822, in _keras_tensor_symbolic_call
    return self._infer_output_signature(inputs, args, kwargs, input_masks)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 862, in _infer_output_signature
    self._maybe_build(inputs)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 2685, in _maybe_build
    self.input_spec, inputs, self.name)
  File "C:\Users\Mason Choi\anaconda3\envs\Passion_project\lib\site-packages\tensorflow\python\keras\engine\input_spec.py", line 223, in assert_input_compatibility
    str(tuple(shape)))
ValueError: Input 0 of layer random_flip is incompatible with the layer: expected ndim=4, found ndim=5. Full shape received: (None, 7, 36, 64, 1)

Process finished with exit code 1

如果您需要更多信息,请告诉我!

【问题讨论】:

    标签: python image tensorflow keras data-augmentation


    【解决方案1】:

    要对 5D 张量图像应用数据增强,您可以:

    1. 将输入图像重塑为形状为 (batch_size * nb_sets, h, w, channels) 的 4D 张量。
    2. 照常应用转换。
    3. 将图像重新整形为形状为 (batch_size, nb_sets, h, w, channels) 的 5D 张量。

    例如,类似于以下内容的内容:

    ...
    model.add(layers.Lambda(lambda x: tf.reshape(x, (-1, 144, 256, 3))))
    model.add(data_augmentation)
    model.add(layers.Lambda(lambda x: tf.reshape(x, (-1, 7, 144, 256, 3))))
    ...
    

    注意:未经测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2011-06-03
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      相关资源
      最近更新 更多