해당 게시글은 모두를 위한 딥러닝 강좌 시즌 1 - Sung Kim 강의를 바탕으로 작성하였습니다. 해당 이미지의 출처는 모두 해당 강의에 있습니다.
CNN의 기본적인 아이디어: 고양이 실험
고양이 어떤 형태의 그림에 대해서만 반응한다는 것을 알게됨
그림에따라 인식하는 뉴런의 신호가 달랐다 (입력을 나누어 받음)
해당 실험을 성공적으로 구현한 것이 CNN
과정
전체의 이미지를 받지 않고 일부분만 따로 처리한다. -> filter (고양이 실험처럼 )
Filter
여기서 filter는 우리가 사이즈를 정할 수 있다. 그리고 해당되는 값에서 한 점만 처리한다.
이것이 filter가 하는 일임
그렇다면 5x5x3 filter를 어떻게 한 값으로 만들어내는 것인가?
필터가 움직일 수 있는 범위만큼의 값이 만들어짐
한 칸식 움직인다 : stride 크기가 1임
stride가 1이면 5X5 만큼의 값을 얻을 수 있음
stride가 2면 3X3의 값을 얻을 수있음
일반화를 하면 다음과 같다.
따라서 이미지의(정사각형) 크기 N X N
필터의 크기 F X F
stride (간격)
해당되는 크기만큼 필터로 점을 모아 값이 만들어지는 갯수들을 알 수 있음
하지만 이미지의 사이즈가 작아질 수록 정보를 잃게됨
따라서 제로패딩을 통해서 방지해줌
ZERO Padding
- 이미지가 작아지는 것을 방지 (데이터 손실 방지)
- 테두리의 역할 (이미지 영역을 알려줌)
7 X 7 의 이미지를 패딩하면 9 X 9 의 크기가 됨
따라서 ConvFilter를 거치면서 이미지 사이즈가 작아졌던 것에서 (7X7 -> 5X5 가 되었던 것) 제로패딩을 통해서 7X7으로 아웃풋이 나오게됨
필터를 하나 더 만들어준다 (깊이를 깊게)
ConvNet Max pooling 과 Full Network
Pooling Layer
Pooling Layer (Samplig)
레이어를 뽑아내고 resize 한다.
한 레이어씩 뽑아내고 resize한 것을 쌓는다
4X4 이미지에서 stride가 2인 2X2의 필터를 이용해서
그렇다면 Out put으로 어떤 값을 내보낼 것인가?
-> 평균, min, max,... 등 여러 방법이 있겠지만 CNN에서는 MAX를 이용
Max Pooling
따라서 output으로는
Fully Connected Layer
쌓는 구성은 알아서 쌓을 수 있다. (강의 내용임)
'공부정리 > 모두를 위한 딥러닝 (강의 정리)' 카테고리의 다른 글
*Tensorflow (기본적인 operations) (0) | 2022.04.07 |
---|---|
2-1. Linear Regression(선형회귀) (0) | 2022.04.07 |
1. Machine Learning Basics (0) | 2022.04.07 |