이번 시간에는 이미지를 학습시켜서 새로운 이미지를 보여주었을 때 어떤 것인지 구분하는 AI를 만들어보겠다.
그럼 사진을 뉴럴 네트워크, 즉 인공 신경망에 어떻게 집어넣을 수 있을까? 뉴럴 네트워크에는 무조건 숫자만 넣을 수 있다. 따라서 이미지를 숫자로 바꿔주는 전처리과정을 거쳐서 그 숫자를 넣어야 한다.
우리가 일상생활에서 사용하는 이미지는 보통 비트맵 (Bitmap) 이미지인데, 이는 하나 하나의 작은 픽셀들이 여러 개가 모여 하나의 이미지를 이루는 방식이다. 예를 들어서, 640X480의 해상도를 가진 이미지는 가로 640, 세로 480의 픽셀을 가진 것이다.
픽셀 하나 당 하나의 색상이 배정되어 있는데, 이 한 픽셀의 RGB 값을 노드 하나에 배정하는 식으로 학습을 시킨다.

색상이 있는 이미지는 Red, Green, Blue 세 가지 색상의 조합으로 이루어져 3개의 색상값이 있는 반면, 흑백 사진에 경우 단일 색상 조합만 있다. 따라서, 이번 이미지 구분 AI 만들기에는, 흑백 사진을 학습시켜보도록 하겠다.
이번에 우리가 사용할 텐서플로우 모듈은
keras.datasets.fashion_mnist
이다. 이는 keras에서 제공하는 패션 관련 이미지 데이터셋으로, 6만 개의 28X28 픽셀 의류 사진으로 구성되어있다.
import tensorflow as tf
(trainX, trainY), (textX, textY) = tf.keras.datasets.fashion_mnist.load_data()
여기서 trainX는 의류 이미지 6만 개, trainY는 각각의 이미지가 어떤 카테고리 (신발 혹은 바지 등등..) 인지 정답을 담고 있다. testX 와 testY는 테스트용 이미지와 정답이다.
print(trainX[0])
trainX의 첫 번째 이미지를 프린트해보면,

총 28개의 열과 행으로 이루어진 숫자 어레이가 나오게 된다.
이는, 28X28 픽셀로 이루어진 이미지이기에, 각각의 픽셀이 가진 색상값을 표현해준 것이다.
그럼 이 이미지의 숫자값을 내 화면에 이미지 형태로 어떻게 볼 수 있을까?
그건 바로 Matplotlib라는 라이브러리를 임포트하면 된다.
import matplotlib.pyplot as plt
plt.imshow(trainX[0])
plt.show()
임포트 후 이미지 출력 메소드를 입력하면,

이렇게 이미지가 나오게 된다.
다음 시간에는 모델을 만들고 학습시켜 보는 과정을 포스팅 해보겠다.