KT AIVLE SCHOOL/교육 받은 것들

시각지능 딥러닝 (2) - Image Data Augmentation(1) -

y0.0ns 2023. 3. 17. 21:03

< Image Data Augmentation >

딥러닝 모델의 성능을 향상시키기 위해서는 위해서는 굉장히 많은 이미지 데이터가 필요하다. 하지만 저작권의 문제 등 이미지 데이터를 수집하는데 현실적인 어려움이 존재한다. 이러한 문제를 해결하기 위해 적은 이미지로 모델의 성능을 향상시키기 위해서 이미지를 인위적으로 변형시켜 데이터를 더 많이 만들어내는 것을 Image Data Augmentation라고 한다. 

Image Data Augmentation는 모델이 더 다양한 패턴과 형태를 인식하고 학습할 수 있도록 도와준다.

 

Image Data Augmentation은 이미지 회전, 자르기, 뒤집기, 색조 변경 등의 기술을 사용하여 이미지를 변형시킬 수 있다. 이러한 이미지 증강 기술을 적용하는 예시 코드는 다음과 같다.

이 사진을 변형하여 스무장의 이미지 데이터로 생성 할 수 있다.

from tensorflow.keras.preprocessing.image import ImageDataGenerator

aug = ImageDataGenerator(rotation_range=30,      # 이미지 회전
                         width_shift_range=0.1,  # 이미지 좌우 이동
                         height_shift_range=0.1, # 이미지 상하 이동
                         zoom_range=0.2,         # 확대/축소 범위
                         shear_range=0.2,        # 비스듬히 늘림
                         horizontal_flip=True,   # 가로 전환
                         vertical_flip=True,     # 세로 전환           
                         fill_mode='nearest')    # 이미지 회전, 이동, 축소할 때 발생하는 공간을 채우는 방식
       
imageGen = aug.flow(image,
                    batch_size=1,
                    save_to_dir='output',
                    save_prefix='image',
                    save_format='jpg' )

total = 0
for image in imageGen:
    # 루프가 돌면서 이미지가 한장씩 생성된다.
    total += 1
  
    # 20장 채우면 멈추자
    if total == 20:
        break
        
import os

plt.figure(figsize=(20,40))
for i, each in enumerate(os.listdir('output')):
    filepath = './output/' + each

    img = plt.imread(filepath)
    plt.subplot(5, 4, i+1)
    plt.imshow(img)

# os.listdir는 주어진 경로에 있는 파일과 디렉토리 리스트 형태로 반환한다.

위와 같은 과정을 거치면 스무장의 새로운 데이터가 생성된다.

결과물