공부 내용
- Convolution
- Convolutional Neural Network(CNN)
Convolution
Convolution 종류
- 2D image convolution
- I는 전체 이미지 공간, K는 Convolution filter
- image에 대한 convolution 연산
2D image convolution
- Image에 Kernel을 convolution 연산하여 output 생성
- kernel을 이동시켜 가며 연산을 수행한다.
2D convolution 예시
- kernel 값에 따라 다음과 같은 효과를 줄 수 있다.
- Blur : 흐릿하게 처리
- Emboss : 강조
- Outline : 외곽선 처리
RGB image convolution
- 32 32 RGB image를 tensor로 수학적으로 표현
-> 5 5 3 filter를 사용해서 28 28 * 1 feature 생성
- filter 개수만큼 feature를 만들 수 있음
Stack of Convolutions
- Convolution Layer를 여러개 쌓을 수 있음
- 중간에 activation function 넣을 수 있음
- kernel의 채널은 input 채널과 같음
- filter 개수에 따라 output 채널 수 달라짐
Convolutional Neural Networks
- CNN은 convolutional layer, pooling layer, fully connected layer로 구성
- Convolution과 pooling layer는 feature 추출에 사용
- Fully connected layer : 결과 추출에 사용 (분류 등)
Stride
- Convolution 연산 시 커널의 이동 단위
-> stride가 커지면 그만큼 output의 크기가 줄어든다.
Padding
- Output의 크기 조절하기 위해 사용
-> Padding을 사용하면 Input과 Output 크기 같게 할 수 있음
- 가장자리에 0 넣으면 Zero padding
Stride, Padding에 따른 변화
- Stride와 Padding에 따라 output 크기 달라진다.
- Stride(1), Padding(1) : 이미지 크기 유지할 때 사용
Convolution 파라미터 수 계산
- Padding (1), Stride(1), 3 * 3 kernel일 때
- model의 파라미터 크기 : kernel_h × kernel_w × input_channel × output channel
-> ex) input 채널 128, output 채널 64일 때 파라미터 크기 ( 3 × 3 × 128 × 64 = 73,728)
1 * 1 Convolution
- 사용 이유 : output channel 감소
-> output channel을 줄임으로서 파라미터 수를 줄이는 효과
- bottleneck architecture 등에서 주로 사용