Tensorflow·keras로 CNN을 구축해 이미지 분류해 본다(실장편 1)

이 기사에서는 CNN을 Tensorflow·keras로 구축해 나갈 것입니다. CNN의 개요는 지난 기사
Tensorflow·keras에서 CNN을 구축하여 이미지 분류해 보기(개요편)
에서 썼습니다.
이번에는 데이터 다운로드와 데이터 확인까지 씁니다. 전제가 되는 환경등은 아래와 같습니다.

전제/환경



전제가 되는 환경과 버전은 아래와 같습니다.
· Anaconda3
· Python3.7.7
· pip 20.0
· TensorFlow 2.0.0

이 기사에서는 Jupyter Notebook에서 프로그램을 진행합니다. 코드 부분을 Jupyter Notebook에 복사하여 붙여넣어 실행하면 비슷한 결과를 얻을 수 있습니다.

이번에는 데이터 세트로서 CIFAR-10이라는 데이터 세트를 이용합니다. CIFAR-10 데이터 세트의 경우
The CIFAR-10 dataset을 참조하십시오.

데이터 다운로드



tensorflow는 데이터 세트를 MNIST처럼 자동으로 다운로드합니다.

code
import tensorflow as tf
#ヘルパー関数などもimport
import numpy as np
import matplotlib.pyplot as plt

from tensorflow.keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

결과
Downloading data from htps //w w. cs. 토론토. 에즈 / ~ k · 시후 r - 10-py 쵸. r. gz
170500096/170498071 [==============================] - 951s 6us/step

데이터 확인



우선은 각 데이터의 크기를 확인합니다. 데이터를 확인하는 것은 매우 중요하므로 반드시 확인합시다.

code
print('x_train.shape : ', x_train.shape)
print('x_test.shape : ', x_test.shape)
print('y_train.shape : ', y_train.shape)
print('y_test.shape : ', y_test.shape)

결과
x_train.shape : (50000, 32, 32, 3)
x_test.shape : (10000, 32, 32, 3)
y_train.shape : (50000, 1)
y_test.shape : (10000, 1)

CIFAR-10 데이터 세트는 위와 같은 데이터입니다. CIFAR-10 데이터 세트는 60000개의 이미지 데이터 세트입니다. 훈련용 데이터로 50000장, 평가용 데이터로 10000장으로 구성됩니다. 라벨은 10개 클래스로 분류됩니다. airplane,automobile,bird,cat,dog,frog,horse,ship,truck의 10 종류입니다. 이미지는 32×32×3 크기입니다. 세로 32, 가로 32, 컬러 이미지이므로 컬러 채널이 3이라는 형태로 표현되고 있습니다.

이제 실제 이미지를 살펴 보겠습니다.

code
plt.imshow(x_train[1])
plt.grid(False)
plt.show()

그 결과 다음과 같은 이미지가 표시됩니다.


shape를 보면 32×32×3이 되고 있습니다만, 데이터 자체를 보자 다차원의 배열이 되어 있는 것을 알 수 있습니다.

code
print(x_train[1])

결과(일부 발췌)
[[[154177187]
[126137136]
[10510495]
...
[91 95 71]
[87 90 71]
[79 81 70]]

[[140160169]
[145153154]
[125125118]
...
[96 99 78]
[77 80 62]
[71 73 61]]

[[140155164]
[139146149]
[115115112]
...

라고 하는 행렬이 되어 있습니다.

요약



지금까지 데이터를 실제로 확인했습니다. 이미지는 MNIST의 필기 문자 세트와 달리 다차원 배열로 표현되는 것으로 나타났습니다.
데이터 세트의 구조를 이해하면 처리의 이미지도 붙기 쉽다고 생각합니다.
다음번 이후는 데이터의 전처리, CNN의 구축에 들어갑니다.

좋은 웹페이지 즐겨찾기