이미지 증강 관련 배경지식
matploblib.pyplot imread()
두 번째 방법:
PIL(pillow) - flip, rotation, zoom이 모두 가능
세 번째 방법:
OpenCV로 불러오는 방법 (Computer Vision - 특히 영상처리 관련)
포토샵에서 이미지 사이즈를 줄이듯 조정.
이미지 사이즈 축소
장점: 빠른 연산.
단점: 이미지 왜곡(크게 만들어도 동일)
이미지 사이즈 확대
장점: 정확도 상승 (학습량 확대)
단점: 시간 소요
# 접기
tf.keras.layers.RandomFlip
# 돌리기
tf.keras.layers.RandomRotation
# 확대
tf.keras.layers.RandomZoom
# 자르기
tf.keras.layers.RandomShear
# 밝히기
tf.keras.layers.RandomBrightness
# RGB값 변경
tf.keras.preprocessing.image.random_channel_shift
# whitening 효과는 불러올 때 지정
datagen = ImageDataGenerator(zca_whitening=True)
레이어 구성
# validation split을 통해 학습:검증 비율 = 8:2로 분할
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rescale+1/255.0, validation_split=0.2)
num_classes = len(class_names)
model = Sequential([
layers.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
layers.Conv2D(filters=16, kernel_size=3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(units = 128, activatioin = 'relu'),
layers.Dense(num_classes)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 유의사항
합성곱 신경망은 공간적인 특성 맵을 벡터로 바꾸기 위해
종종 flatten 층과 전역 풀링 층으로 끝납니다.
그리고 일련의 밀집층(MLP)로 처리하여
분류나 회귀 출력을 만들게 됩니다.