1. 이미지 전처리
- 이미지를 학습에 사용하기 전 간단한 전처리를 거침
1) tflearn 이미지 전처리
- 필요한 함수들은 tflearn.data_preprocessing의 ImageProcessing 클래스로 제공
- 대표적인 함수로 add_featurewise_zero_center() / add_featurewise_stdnorm()
- zero_center는 샘플 값에서 패러미터로 주어진 mean 을 빼서 값을 이동
- mean을 지정하지 않을 시 모든 샘플의 평균으로
- stdnorm은 표준 편차 정규화 기능
- 인수로 주어진 std 패러미터로 스케일링
- 지정하지 않을 시 전체 샘플의 표준편차
- 입력층 생성시 data_preprocessing 값으로 ImageProcessing 객체를 지정
# 전처리용 객체 생성
img_prep = ImagePreprocessing()
# 객체에 사용할 기능 등록
img_prep.add_featurewise_zero_center()
img_prep.add_featurewise_stdnorm()
# 입력층 구성
network = tflearn.input_data(..., data_preprocessing = img_prep)
# input_data의 패러미터로 위에서 생성한 전처리용 객체 지정
2. 이미지 개수 확장
1) tflearn 이미지 개수 확장
- ImageAugmentation 클래스를 통해 다양한 함수 제공
- 입력층 생성 시 data_augmentation 패러미터의 값으로 해당 객체를 지정
- 다양한 함수 들 존재
- add_random_blur(sigma_max=5.0) - 0~sigma_max 사이의 랜덤값을 갖는 가우시안 필터로 이미지 블러링
- add_random_crop(crop_shape, padding=None) - crop_shape 크기로 이미지 자름, padding 지정시 해당 수만큼 0 패딩
- add_random_flip_leftright(self) - 좌우 반전
- add_random_flip_updown(self) - 상하 반전
- add_random_rotation(max_angle = 20.0) - -max_angle ~ max_angle 사이의 각도로 랜덤 회전
# 데이터 확장 용 객체 생성
img_aug = ImageAugmentation()
# 객체에 사용할 기능 등록
img_aug.add_random_blur(sigma_max=5.0)
# 입력층 생성
network = tflearn.input_data(..., data_augmentation = img_aug)
# data_augmentation 패러미터로 위에서 생성한 확장용 객체 지정
# 전처리와 구현과정 유사함