Day12_20221005
GOAL
- Convolution의 정의
- Convolution 연산방법과 기능에 대한 학습
- 기본적인 Convolutional Neural Network(CNN) 구조에 대한 학습
KEYWORD
- Convolution
- Continuous convolution
- Discrete convolution
- 2D image convolution
- Convolution Neural Networks
- Convolution layer & Pooling layer
- 이미지에서 유용한 정보를 추출하는 layer
- Fully connected layer
- classificatoin 과 같이 decision making 을 하는 layer
CNN 파라미터는 Stride 와 Padding 에 따라 계산될 수 있음- =
- : output size
- : output channel size
- : input size
- : input channel size
- : padding size
- : kernel size
- : stride size
- Parameter의 수 =

Kernel 을 stride 만큼 움직이면서 겹치는 셀의 값을 곱해 모두 더한 값이 output cell 의 값이 된다.

예를 들어 값이 모두 인 convolution filter 가 있다고 생각해보면
각 픽셀 값의 평균이 output 을 이루게 되므로 blur 효과가 있다.
filter 의 값에 따라 추출 ( 강조 ) 되는 이미지의 특성이 달라진다.


참고 한 번의 convolution 을 하고 나면 activation function 을 적용해준다. 
CNN 은 convolutional layer , pooling layer , dense layer 로 구성되어 있다.
참고Parameter 의 숫자를 줄이기 위해 dense layer 를 축소하고 convolutional layer 를 깊이 쌓는 것이 요즘 동향
왜?Parameter 의 숫자가 늘어날수록 학습이 어렵고 Generalization Performance 가 떨어진다고 알려져 있기 때문이다.
어떤 network 를 볼 때 각 layer 의 parameter 숫자와 network 전체 parameter 규모에 대한 감이 있어야 한다.


Parameter의 수 =
Parameter의 수 =

참고 Alexnet 은 GPU 사양 문제로 모델을 2개로 나누어 학습함

Dense Layer 에서 parameters 갯수를 줄이기 위해 사용된다.
사용 목적예를 들어 bottleneck architecture
잘 정리하던 내용이 날아가서 GooLeNet 까지는 머리에 남은 내용만 정리함
GOAL
- 주요 network 에 대한 구조를 살펴보자.
Network Description AlexNet 최초로 Deep Learning을 이용하여 ILSVRC에서 수상 VGGNet 3x3 Convolution을 이용하여 Receptive field는 유지하면서 더 깊은 네트워크를 구성. GoogLeNet Inception blocks 을 제안. ResNet Residual connection(Skip connection)이라는 구조를 제안. h(x) = f(x) + x 의 구조
DenseNet Resnet과 비슷한 아이디어지만 Addition이 아닌 Concatenation을 적용한 CNN.
Gradient vanishing 문제를 개선하기 위해 ReLU function 이 사용됨
filter size 가 11인 것이 특이점 - 현재는 parameter 수를 줄이기 위해 filter size 를 크게 잡지 않는다.
3x3 filter 를 사용해 parameter 의 수를 줄였다.
5x5 filter 와 같지만, parameter 의 수는 절반 3x3 계산 : 3x3x128x128 + 3x3x128x128 = 294,9125x5 계산 : 5x5x128x128 = 409,600]Receptive field 를 동일하게 유지하면서 parameter 의 크기를 줄일 수 있다. ( 이런 이유로 요즘은 filter size 가 7 을 넘어가는게 잘 없다! )
Network In Network (NIN) 과 Inception Block 으로 구성됨
Inception block 은 1D CONV 연산으로 parameter 의 수를 줄인다.



다시보기
참고 ResNet 논문 설명


GOAL
- Segmantic segmentation 의 정의와 핵심 아이디어
- Object detection 의 정의와 핵심 아이디어, 여러 종류들에 대한 학습
Segmantic 방식의 문제점, detection 방식의 문제점 그리고 흐름에 대한 이해를 해보자

Image 를 다시 fully connected convolution layer 로 전달하여 heat map 을 생성
Flatten 과정을 거쳐서 dense layer 로 전달하던 것을 convolutional layer 로 전달
Convolution layer 를 거치면서 heat map 형태로 추출


참고 Parameter 의 수, architecture 의 크기 계산 관점에서 convolution 의 역연산으로 이해하면 좋다.

사실 상 convolution 연산을 복원하는 것은 불가능하지만 직관적인 이해만 가져가자구 !
이미지 안에 어느 물체가 어디 있는지 dectection
이미지에서 selective search 를 통해 모든 bounding box 를 찾고, 전체에 대해 AlexNet을 수행한다.
단점 : 매우 느리고 정확하지 않다.1 ) Bounding box 를 찾기 - 약 2000개의 selective search
2 ) 각각의 proposal 에 대해 AlexNet을 이용하여 feature 계산
3 ) linear SVMs 를 이용해 분류

이미지 안에서 CNN 을 한 번만 수행하여 feature map 에 해당하는 sub tensor 를 가져온다.
1 ) 이미지 기반으로 bounding box 를 추출
2 ) 이미지 전체에 대해 convolution feature map 을 만든다.
3 ) bounding box 에 해당하는 convolutional feature map 의 Tensor 만 가져온다.

Convolution layer 는 한 번 돌지만 convolutional feature map 에 해당하는 Tensor 를 추출해 가져오는 것만 Region 별로 수행
R-CNN 보다 빠르고 정확하다.

R-CNN의 문제점 : 추출된 모든 bounding box에 대해 CNN 을 해야한다.
참고 SPPNet 과 유사하지만 ROI pooling 을 추가하여 bounding box 도출과 classification 을 한다는 점이 다르다.
1 ) Input 을 받아 semantic search 를 통해 bounding box 를 뽑는다.
2 ) convolutional feature map 을 한 번 얻는다.
3 ) 각 region 에 대해 ROI pooling 으로부터 fixed lenght feature 를 얻는다.
4 ) 분류값과 bounding box 도출

임의의 boundary 를 추적하는 selective search 대신 학습을 통해 bounding box의 candidate 를 가져오자.

Region Proposal Net + Fast R-CNN +
bounding box 추출을 neural network 에 맡긴다.
bounding box 안에 물체가 있을지 없을지를 판단한다.

anchor box
미리 정해놓은 bounding box 의 크기
Region proposal 과정 없이 bounding box 와 classification 을 한 번에 추출
1 ) 이미지를 SxS 격자로 나눈다.
2 ) 각 cell 을 B bounding box 로 예측한다. ( 논문에서 B = 5 )
SxSx(B*5+C)의 channel 을 갖는 tesnor 를 도출한다.