일반적으로 딥러닝 모델을 학습시키기 위해서는 데이터셋이 필요하다.
대표적인 이미지 데이터셋인 이미지넷(ImageNet)은 약 1,400만 장의 이미지를 가지고, CIFAR-10도 6만장의 이미지 데이터를 가지고 있다.
문제는 큰 규모의 데이터셋을 만드는 것은 큰 비용이 드는 일이다. 특히 직접 데이터셋을 만든다면 더 많은 비용이 발생한다.
만약 직접 어떤 분류 모델을 만들기 위해 이미지 데이터셋을 모은다고 했을때 몇 만장의 데이터셋을 구하는 것은 쉽지 않을 것이다. 예를 들어 약 3,000장의 데이터를 구했다고 했을때 이 정도의 데이터만 가지고 모델을 학습시키는 것에는 무리가 있다.
하지만 이런 데이터셋을 최대한 활용할 수 있는 방법이 Data Augmentation이다.
Data Augmentation은 데이터셋을 증강시켜 실질적인 학습 데이터셋의 규모를 키울 수 있는 방법이다. 일반적으로 하드디스크에 저장된 이미지 데이터를 메모리에 로드하고, 학습시킬때 변형을 가하는 방법을 사용한다. 이를 사용하면 1장의 이미지 데이터가 여러 이미지 데이터로 늘어나게 된다.
대표적인 Image Augmentation 기법을 확인해보자
Flip은 이미지 대칭 기능으로 좌우 혹은 상하를 기준으로 이미지를 반전시킨다.
주의할 점은
Gray Scale은 RGB 3가지 채널을 하나의 채널로 변경한다.
아래 이미지는 흑백이 아닌 다른 색상으로 표현, RGB 각 채널마다 Weight(가중치)를 주고 Weighted Sum(가중합)을 해줌, 가중치의 합이 1이 된다.
Saturation은 RGB 이미지를 HSV 이미지(Hue(색조), Saturation(채도), Value(명도) 3가지 요소로 색을 표현)로 변경, Saturation에 offset 적용 이미지를 선명하게 해준다. 그리고 다시 RGB 이미지로 변경해준다
Brightness는 밝기를 조절한다. RGB 채널의 값들을 더해주면 밝아지고, 빼면 어두워진다.
(255,255,255)는 흰색
(0,0,0)은 검은색
Rotation은 이미지 각도를 변환한다. 90도의 경우 일반적으로 이미지 형태가 사각형을 유지하기 때문에 크기만 조절해주면 사용 가능하지만, 90도가 아닐 경우는 후 처리를 해줘야 한다.
Crop은 이미지 일부를 자른다. Random Crop(무작위 크롭), Center Crop(중앙 크롭)을 주로 사용한다.
크로핑할때 주의해야 할 점
아래 사진은 Center Crop
위에서 설명한 방법 외에도 다양한 Augmentation 기법이 있다.