스터디📖/ML, DL

Tensorflow 이미지 분류(CNN) - 1, 2, 3, 4강 데이터와 차원 & 이미지 데이터 이해

호프 2021. 9. 28. 18:48

https://opentutorials.org/module/5268/29784

 

오리엔테이션 - Tensorflow 102 - 이미지 분류(CNN)

수업소개 텐서플로우 102 수업에서 다루고 배우는 것이 무엇인지  소개하고,  이미지를 학습시키는 딥러닝 모델을 만든다는 건 어떤 의미가 있는지를 확인합니다.  강의 영상의 Tensorflow 101 링

opentutorials.org

2강 데이터와 차원

차원

  • 표의 열 (칼럼) :
    칼럼의 숫자가 N 개 = 각 데이터는 N차원 공간의 한 점으로 표시 가능
    관측치 = N차원 공간의 한 점
    변수의 개수 = 공간의 차원수
  • 포함 관계 :
    배열의 깊이 = 차원수 라고 하는 경우도 있음.

4차원 공간에 표현되는 관측치 이지만, 배열의 깊이는 모두 다름.

이미지 파일 하나가 데이터의 관점에서는 관측치 하나.

여러 차원의 형태로 구성되어 있는 데이터의 모습을 tensor 라고 함.

  • 데이터 공간의 맥락: 차원수 = 변수의 개수
  • 데이터 형태의 맥락: 차원수 = 배열의 깊이

3강 이미지 데이터셋 구경하기

컴퓨터에게 이미지는 숫자들의 모임.

Mnist 손글씨 이미지셋(흑백)

28 x 28 2차원 형태, 각각 (0(black) ~255(white)) 사이 숫자들 중 하나를 값으로 가짐

Mnist 데이터 셋의 개수가 60000개 이므로 Mnist 셋: (60000, 28, 28)

 

Cifar10 이미지 셋(컬러)

RGB 세 개의 값을 가짐 -> 개별 cifar 셋 = (32, 32, 3) 의 3차원 형태

cifar10 데이터 셋의 개수가 5000 이므로 cifar10 셋: (5000, 32, 32, 3)

 

 

이미지 크기: 2448 x 3264 픽셀
--> 2448 x 3264 x 3(color) 개의 숫자가 들어있음.
학습할 때는 사이즈를 충분히 줄인 후에 사용함.

4강 이미지 구경하기 (실습)

colab 으로 실습 진행. 소스코드 드라이브에 업로드

###########################
# 라이브러리 사용
import tensorflow as tf
 
###########################
# 샘플 이미지셋 불러오기
 
(mnist_x, mnist_y), _ = tf.keras.datasets.mnist.load_data()
print(mnist_x.shape, mnist_y.shape)
 
(cifar_x, cifar_y), _ = tf.keras.datasets.cifar10.load_data()
print(cifar_x.shape, cifar_y.shape)
 
###########################
# 이미지 출력하기
 
print(mnist_y[0:10])
import matplotlib.pyplot as plt
plt.imshow(mnist_x[4], cmap='gray')
 
print(cifar_y[0:10])
import matplotlib.pyplot as plt
plt.imshow(cifar_x[0])
 
 
###########################
# 차원 확인
d1 = np.array([1, 2, 3, 4, 5])
print(d1.shape)
 
d2 = np.array([d1, d1, d1, d1])
print(d2.shape)
 
d3 = np.array([d2, d2, d2])
print(d3.shape)
 
d4 = np.array([d3, d3])
print(d4.shape)
 
###########################
# (5, ), (5, 1), (1, 5) 비교
 
x1 = np.array([1, 2, 3, 4, 5])
print(x1.shape)
print(mnist_y[0:5])
print(mnist_y[0:5].shape)
 
x2 = np.array([[1, 2, 3, 4, 5]])
print(x2.shape)
 
x3 = np.array([[1], [2], [3], [4], [5]])
print(x3.shape)
print(cifar_y[0:5])
print(cifar_y[0:5].shape)