Python/머신러닝

Tensorflow 이미지 분류(CNN)

Rix 2022. 2. 12. 22:43

★공부 출처 : https://opentutorials.org/module/5268

 

Tensorflow 102 - 이미지 분류(CNN)

수업소개 이 수업은 코드로 딥러닝을 구현해보는 딥러닝 기초 수업입니다.  텐서플로우를 이용하여 가장 간단한 형태의 이미지 분류 딥러닝 모델을 작성합니다. 수업대상 초등학생부터 어르

opentutorials.org


데이터와 차원

차원의 2가지 의미

1. 표의 열

관측치 = N차원 공간의 한 점

변수의 개수 = 공간의 차원수

 

2. 포함관계

배열의 깊이와 관련이 있다. 

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

이미지 데이터 이해

컴퓨터에게 이미지란? 다음과 같이 인식이 된다.

컬러 이미지의 경우, RGB 3가지 속성이 들어있기에 (32,32,3)으로 표현됨.

이미지 안에는 굉장히 많은 양의 숫자가 들어있다.

 

x2는 [1, 2, 3, 4, 5]와 같이 요소가 5개 들어있는 것이 하나 있는 것이기 때문에 x2.shape를 했을 때, (1,5)라고 출력이 된 것이다.

x3는 [1] [2] [3] [4] [5]와 같이 요소가 1개 들어있는 것이 5개 있는 것이기 때문에 x3.shape를 했을 때, (5,1)이라고 출력이 된 것이다.

 

실습

구글에 cifar10 데이터셋이라고 치면 어떤 종류의 이미지인지 알 수 있다.

+matplotlib에 대해 더 자세히 알고 싶다면 다음 사이트를 참고하면 좋을 것 같다.

https://wikidocs.net/book/5011

 

Matplotlib Tutorial - 파이썬으로 데이터 시각화하기

## 도서 소개 - 이 책은 파이썬의 대표적인 데이터 시각화 라이브러리인 Matplotlib의 사용법을 소개합니다. - 30여 개 이상의 다양한 주제에 대해 1 ...

wikidocs.net

https://kongdols-room.tistory.com/category/Python/Matplotlib?page=2

 

'Python/Matplotlib' 카테고리의 글 목록 (2 Page)

이것저것 공부공간입니다.

kongdols-room.tistory.com


이미지셋 데이터를 표 형태의 데이터로 변형

데이터의 형태를 변형해주는 도구는 reshape이다.

 

가중치가 높다 --> 해당 픽셀값이 매우 중요하다는 의미

가중치가 낮다 --> 해당 픽셀값이 쓸모 없다는 의미

 

인공신경망에게 "특징 자동 추출기"라는 별명이 있다. 알아서 특징 찾아줌.

 

Flatten

reshape 대신 Flatten을 쓸 것이다.

Flatten layer는 추출된 주요 특징을 1차원 자료로 바꿔주는 layer이다.
이미지 형태의 데이터를 배열형태로 flatten하게 만들어준다.

reshape 사용 실습

round : 반올림하는 함수

 

flatten layer 실습


 

컨볼루션 (Convolution)

특정한 패턴의 특징이 어디서 나타나는지를 확인하는 도구

 

필터를 통해 특징을 잡아낸 컨볼루션의 결과를 특징맵(feature map)이라고 부른다.

필터의 이해
  1. 필터셋은 3차원 형태로 된 가중치의 모음
  2. 필터셋 하나는 앞선 레이어의 결과인 "특징맵" 전체를 본다.
  3. 필터셋 개수 만큼 특징맵을 만든다.

필터셋 하나하나가 3차원 형태로 되어있다.
F1이 흑백으로 되어 있는 것이라면 (5,5,1)로 표현되고, 컬러라면 (5,5,3)으로 표현된다.
그리고 총 3개이므로, (3,5,5,1) 혹은 (3,5,5,3)으로 표현될 수 있는 것이다.

 

28, 24, 20 순으로 숫자가 줄어든 이유
--> 필터의 사이즈가 5이기 때문에 줄어든 것이다. 필터의 사이즈에서 1을 뺀만큼 줄어든다. 즉, 4만큼 줄어든다.

 

실습

런타임 메뉴에서 런타임의 유형을 GPU로 바꿔주고 진행했다.

 

컨볼루션 연산의 이해


MaxPool2D

MaxPooling은 말 그대로 저 그룹 안에서 최대값을 뽑아내는 것이다.
사용하는 이유? Flatten 레이어 사용 이후에, 가중치 값을 작게 유지할 수 있게 하기 위함이다.

 

실습


Lenet

padding
--> padding을 same으로 주면, 컨볼루션의 결과인 특징맵의 사이즈가 입력 이미지와 동일한 크기로 출력이 된다. 

 

Lenet_Cifar10 실습

종속변수 원핫인코딩을 할 때 표의 형태가 아니라 2차원 형태이기 때문에 1차원 형태로 reshape를 해줘야 한다.