Tensorflow 이미지 분류(CNN)
★공부 출처 : 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)이라고 출력이 된 것이다.
실습
+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)이라고 부른다.
필터의 이해
- 필터셋은 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를 해줘야 한다.