如何增强四维图像?

2024-09-24 08:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一批大约3000组的7幅图像,每幅图像大约有144×256个灰度像素,我想放大每幅图像。我知道这适用于3d图像,例如形状-(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

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


Tags: inpyprojectaddmodellayerslineusers
1条回答
网友
1楼 · 发布于 2024-09-24 08:25:58

要对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))))
...

注意:未测试

相关问题 更多 >