텐서플로우를 이용한 Image Augmentation

딥러닝 모델을 잘 학습시키위해서는 수많은 데이터를 확보해야한다.
수백~수천만장의 데이터셋을 만들기는 돈도 시간도 많이 들기에 현실적으로 힘든 부분이다.

우리는 데이터를 많이 모으기 힘든 경우에 Aumentation 기법을 사용하여 데이터셋의 규모를 키울 수 있다.

Image Augmentation 기법들 ( with 텐서플로우)

1) Flip

이미지를 좌우 또는 상하로 반전시키는 방법이다.
detection이나 segmentation 등 정확한 정답 영역이 존재하는 문제에 적용할 때는 라벨도 같이 좌우반전시켜줘야한다. 그리고 숫자나 알파벳 문자를 인식하는 문제에 flip을 적용할 땐 주의하자!

tf.image.flip_left_right(image_tensor) # 좌우반전
tf.image.flip_up_down(image_tensor) # 상하반전

2) Center Crop

이미지의 중앙을 기준으로 자르는 방법이다. central_fraction으로 얼마나 확대할 지 조절할 수 있다. central_fraction이 1이면 원본 이미지이고, 0에 가까워 질수록 확대를 더 하는 것이다.

tf.image.central_crop(image_tensor, central_fraction=1)

3) Random Crop

이미지를 랜덤으로 자르는 방법이다.

 tf.image.random_crop(image_tensor,size=[180,180,3])

4) Brightness

이미지의 밝기를 조절하는 방법이다.

random_brightness_tensor = tf.image.random_brightness(image_tensor,max_delta=128)
random_brightness_tensor = tf.clip_by_value(random_brightness_tensor,0,255)

tf.image.random_brightness()만 적용할 경우 이미지 텐서 값의 범위가 0~255를 초과할 수도 있다. 이 경우 plt.imshow()에서 rescale되어 밝기 변경 효과가 상쇄되어 보이기 때문에 tf.image.random_brightness() 다음에는 tf.clip_by_value()를 적용해줘야한다.

좋은 웹페이지 즐겨찾기