데이터를 분석하다보면 애로점 중의 하나가 데이터가 적은 경우이다. 이러한 문제를 해결하기 위해서 데이터 증식을 사용하면 성능을 좀더 높여볼 수 있다. 이와 같은 데이터 증식은 기존 데이터에 적절한 변형을 추가하여 새로운 데이터를 만들어 내는 방법이다.
데이터 증식은 모든 문제를 해결해줄 것인가?
이 방법은 딥러닝의 고질적인 무네인 일반화 문제의 대응책으로 언급이 되지만 근본적인 문제 해결방법은 아니다.
데이터 증식의 장점은 무엇인가?
1. 다양한 데이터를 입력시켜 모델을 보다 견고하게 만들수 있다. 모델을 테스트 하는 경우 더 높은 성능을 기대할 수 있다.
2. 수집된 데이터가 적은 경우에 강력한 힘을 발휘한다.
텐서플로에서는 ImageDataGenerator라는 API함수를 제공한다.
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(horizontal_flip = True,
vertical_flip = True,
shear_range = 0.5,
brightness_range = [0.5, 1.5],
zoom_range = 0.2,
width_shift_range = 0.1,
height_shift_range = 0.1,
rotation_range = 30,
fill_mode = ‘nearest’)
width_shift_range : 임의의 크기만큼 너비 방향으로 이동시킨다.
height_shift_range : 임의의 크기만큼 높이방향으로 이동시킨다.
brightness_range : 이미지의 발기 정도를 조정한다.
shear_range : 시계반대방향으로 밀림 강도를 조절한다.
zoom_range : 임의의 비율만큼 이미지를 확대/축소 시킨다.
rotation_range : 이미지를 임의로 회전시킨다.
rescale : 이미지 픽셀값의 크기를 조절한다.
fill_mode : 이미지 변환 시에 새로 생기는 픽셀을 채울 방법을 결정한다.
horizontal_flip : True일 경우 임의로 이미지를 수평방향으로 뒤집는다.
vertical_flip : True일 경우 임의로 이미지를 수적방향으로 뒤집는다.
preprocessing_function : 사용자 정의 전처리 함수 또는 전처리 함수를 적용한다.
댓글 없음:
댓글 쓰기