首页 > 解决方案 > Keras RandomRotation 层产生黑线?

问题描述

我正在尝试使用 Keras RandomRotation 来扩充我的图像数据集。这是代码:

  data_augmentation = tf.keras.Sequential([
      keras.layers.experimental.preprocessing.RandomRotation(
         0.5,
         fill_mode='reflect',
         interpolation='bilinear')
      ])
  im = data_augmentation(valid_images[0:1])[0]
  plt.imshow(im)
  plt.show()

在此处输入图像描述

不幸的是,生成的图像包含黑线。我确实喜欢反射填充模式,所以我想保留它。您能否建议我可以摆脱黑线并产生更平滑的图像?Numpy 也可以这样做吗?我尝试设置插值='最近的',但这没有帮助。

标签: kerasconv-neural-networkdata-augmentation

解决方案


使用scipy.ndimage.rotate

import tensorflow as tf
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import scipy

img = np.array(Image.open("s.jpg"))
im = scipy.ndimage.rotate(img, 30, mode='reflect', reshape=False)
plt.imshow(im)
plt.show()

输出:

在此处输入图像描述


推荐阅读