참조: https://youtu.be/RuZ7SI-Yfec?si=-UtPWHupcOi5FuFw
이번 글에서는 이미지 데이터 어그멘테이션에 대해서 설명한다.
Image Data Augmentation은 하나의 이미지를 약간 변형하여 학습용 데이터의 개수를 늘려 모델이 더 많은 데이터를 학습할 수 있도록 하는 것이다. 따라서 학습에 사용할 이미지 수가 적을 수록 효과적이다.
위에서 보듯이 Keras에서는 이를 위한 함수들을 아래와 같이 제공하고 있다.
위 함수들에서 고려할 사항은, image를 그대로 사용하지 못하고 array로 변형해야 한다는 것이다.
코드로 확인해 보자.
위에서 언급한 것처럼 jpg 이미지를 불러온 뒤에 array로 변환하고 정규화까지 끝내고 사용하도록 한다.
원본이미지는 첨부한다.
이 이미지를 flow()를 통해서 변형을 해보자.
next()를 할때마다 batch_siz 만큼의 이미지가 생성된다.
(예전에는 data_gen.next()라고 써야 했지만, version이 올라가면서 next(data_gen)으로 문법이 변경되었다.)
위의 원본 이미지와는 회전되거나 반전되는 등 약간 달라진 것을 알수 있다.
하나 더 만들어보면 아래와 같다.
이번에는 flow_from_directory()를 이용해 보자.
위에서 첨부한 파일을 작업폴더에 압축해제하면 'test_dir'를 생성하고 그 하위에 폴더들이 있다.
flow_from_directory()는 주어진 dir에서 이미지들을 찾아낸다.
마찬가지로 원본이미지에서 약간의 변형이 일어난 것을 알 수 있다.
사진 위에 있는 숫자는 몇번째 dir를 나타내는 것으로 cat: 0, deer: 1, dog: 2 가 된다.
이런 방법을 사용하여 더 많은 데이터를 확보할 수 있다는 것을 알았다.
다음 글에서는 이를 앞에서 진행했던 cifar10 예제에 적용해서 모델의 성능이 개선되는지 테스트 해보도록 하자.
'AI > TensorFlow 학습' 카테고리의 다른 글
14. TensorFlow 2.x - RNN(Recurrent Neural Network) 소개 (0) | 2024.08.08 |
---|---|
13. TensorFlow 2.x - 개선된 CNN모델에 대한 CIFAR10 예제 (0) | 2024.08.08 |
11. TensorFlow 2.x - CNN CIFAR 10 예제 (0) | 2024.08.05 |
10. TensorFlow 2.x - CNN 소개 (0) | 2024.08.05 |
9. TensorFlow 2.x - Convolution 소개 (0) | 2024.08.02 |