Слой случайного вращения Keras создает черные линии?

#keras #conv-neural-network #data-augmentation

#keras #conv-нейронная сеть #увеличение данных

Вопрос:

Я пытаюсь дополнить свой набор данных изображений с помощью 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? Я попытался установить interpolation=’ближайший’, но это не помогло.

Ответ №1:

Используя 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()
 

Выводит:

введите описание изображения здесь