[CS231N] 5. Convolutional Neural Networks
💡 Iamge Classification
Stanford University “CS231N” 강의를 듣고 정리하였습니다.
자막 : https://github.com/visionNoob/CS231N_17_KOR_SUB (크롬 확장 프로그램 Subtitles for Youtube)
2017 버전 강의 목차 및 슬라이드 : http://cs231n.stanford.edu/2017/syllabus.html
2017 버전 강의 동영상 링크 : https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv
2022 버전 강의 목차 및 슬라이드 : http://cs231n.stanford.edu/schedule.html
실습 과제 : https://github.com/cs231n/cs231n.github.io/tree/master/assignments
Lecture 5 : Convolutional Neural Networks
Fully Connected Layer
32x32x3 Image가 input값으로 들어오면 3072x1의 행렬로 길게 펴서 가중치(10x3072)와 곱하는 과정으로 activation(출력, 1x10)값을 얻음
Convolution Layer
Fully Connected Layer와 다르게 기존의 구조를 보존시켜 filter라는 가중치로 슬라이딩 하면서 내적을 수행하고 activation map이라는 결과를 얻음 (filter는 원하는 만큼 사용할 수 있음)
슬라이딩을 한 칸씩 하는 모습을 볼 수 있는데 슬라이딩하며 움직이는 칸을 Stride라고 함
\[(N-F)/\text{stride}+1\]공식을 통해 ($N$=input image의 열(행), $F$=filter의 열(행)) 출력사이즈를 계산 할 수 있음
Padding
input 주변에 공간을 더하는 것을 의미
- 여러개의 filter를 지나다 보면 이미지의 크기가 작아지고 데이터가 부족한 상황이 생길 수 있음
- 모서리 pixel은 중앙부 pixel 보다 적게 사용됨 → 모서리에 중요한 정보가 담겨 있는 이미지라면 손실이 발생
Zero-Padding
이미지 주변에 0이라는 pixel을 둘러 input image pixel을 많이 활용할 수 있게 함
이 경우 stride가 1이라면 output의 크기는 $(N+2-F)/1+1=7$으로 7x7을 출력 → 입출력 크기를 동일하게 만들어줌
Example
Input volume: $32\times32\times3$, 10 $5\times5$ filter with stride 1, pad2
-
Output volume size : $(32+2\times2-5)/1+1=32$, so $32\times32\times\times10$
-
Number of parameters in this layer : each filter has $(5\times5\times3+1)\times10=760$
$5\times5$ filter의 depth가 $3$ + bias값인 $1$ $\times$10개의 filter
Intuitively Understanding Convolutions for Deep Learning
Pooling Layer
Down sampling 할 때 사용 → layer들을 지나가면서 학습이 이루어지는 중간에 신경망의 계산 효율성과 메모리 요구량 감소등의 이유로 사용
MAX Pooling
depth에는 영향을 주지 않고 data를 공간적으로 줄여줌 (MAX Pooling이 일반적으로 쓰임)
지금까지 배운 과정들을 나타내면 아래와 같음
댓글남기기