본문 바로가기

데이터 다루기/Vision (Tensorflow)

[Vision] Image Augmentation

728x90
반응형

1. 사용할 패키지 불러오기.

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import tensorflow_datasets as tfds

from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist

import를 활용하여 사용할 패키지를 불어왔습니다.

2. 데이터 불러오기.

이번 실습에서 사용할 데이터는 꽃 사진입니다.

(train_ds, val_ds, test_ds), metadata = tfds.load(
    'tf_flowers',
    split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'],
    with_info=True,
    as_supervised=True,
)

위에서 처럼 데이터를 불러올 때, split 인자를 활용해서 Train, Validation, Test 데이터 셋으로 분할 할 수 있습니다.

그리고 metadata를 같이 불러옴으로써, 데이터셋에대한 information을 불러올 수 있습니다.

get_label_name = metadata.features['label'].int2str

image, label = next(iter(train_ds))
_ = plt.imshow(image)
_ = plt.title(get_label_name(label))

우리는 위의 튤립 사진을 통해 Image augmentation을 수행하겠습니다.

def visualize(original, augmented):
  fig = plt.figure()
  plt.subplot(1,2,1)
  plt.title('Original image')
  plt.imshow(original)

  plt.subplot(1,2,2)
  plt.title('Augmented image')
  plt.imshow(augmented)

위 함수는 Original 이미지와 Augmentation이 수행된 이미지의 차이를 시각적으로 비교해주는 함수입니다.

3. 이미지 증강

(1) 이미지 뒤집기

flipped = tf.image.flip_left_right(image)
visualize(image, flipped)

(2) 이미지를 회색조로 만들기

grayscaled = tf.image.rgb_to_grayscale(image)
visualize(image, tf.squeeze(grayscaled))
_ = plt.colorbar()

(3) 이미지 채도 계수 포화시키기

saturated = tf.image.adjust_saturation(image, 3)
visualize(image, saturated)

(4) 이미지 밝기 변화시키기

bright = tf.image.adjust_brightness(image, 0.4)
visualize(image, bright)

(5) 이미지 중앙 자르기 (Cropping)

cropped = tf.image.central_crop(image, central_fraction=0.5)
visualize(image,cropped)

(6) 이미지 회전시키기

rotated = tf.image.rot90(image)
visualize(image, rotated)

 

반응형