크크루쿠쿠

[Week2] DL CNN(Convolutional Neural Network) [Day3] 본문

DeepLearning/부스트캠프 AI Tech

[Week2] DL CNN(Convolutional Neural Network) [Day3]

JH_KIM 2021. 8. 11. 13:33

Convolution은 무엇인가?

Convolution

- Continuous convolution

- Discrete convolution

- 2D image convolution (우리가 아는 것)

 

padding 이나 stride를 고려하지 말고 보면

 

여러개의 feature map이 생기는 이유?

-> 여러개의 filter를 가짐으로써 가질 수 있다.

 

Stack of Convolutions

 

parameter 수는?

1차 conv -> 5x5x3x4

kernel size * input channel * output channel 로 parameter 수를 구할 수 있음.

 

CNN

 

 

고전적인 CNN model -> fc 가기 전에 feature를 뽑는과정임

-> parameter 수를 줄이고 generalize performance 를 위해 fully connected layer를 줄이는 방향으로 감.

 

ex) googlenet

 

Stride

얼만큼 옮기는가?

 

2D로 가게 된다면 x축과 y축 변수 2개 필요

 

Padding

끝 값들도 conv 하기 위해 덧대는 요소들

 

Convolution Arithmetic

 

fully connected 부분을 보면 parameter 수가 급증하는것을 볼 수 있음

-> 어떻게 줄이지?

1x1 Convolution

dimension을 줄이는 방법.

더 깊게 쌓으면서 parameter 수를 줄일 수 있음.

 

Modern CNN

ILSVRC

이미지넷 대회

1000개의 카테고리

over 1M images

2015년도부터 사람보다 DL 성능이 좋아짐

AlexNet

2개로 나누어진 network

-> GPU 성능으로 인해서

11x11 filter -> 왜? parameter만 늘어나는데 ( 나중에 이유 나옴 )

8layers network

- Key ideas

1. ReLU activation 사용 -> Overcome the vanishing gradient problem

2. 2GPU

3. Local response normalizaion, Overlapping pooling

4. Data argumentation

5. Dropout

-> 현재는 당연한 것이지만 2011년에는 최초 시도들이였음.

 

VGGNet

3 x 3 convolution filters 만 사용.

- Why 3 x 3 convolution?

filter 크기가 커질수록 하나의 filter로 고려되는 input의 크기가 커짐 -> receptive field가 커짐

같은 receptive field로 # of params를 줄일 수 있음.

 

GoogLeNet

같은 모양이 반복 -> Network-in-network (NiN)

Inception blocks

Concatenation도 중요하지만 중간중간에 있는 1x1 Conv가 매우 중요

-> can be seen as channel-wise dimension reduction

 

3x3 을 씀으로써 params 수를 줄였지만 중간에 1x1를 넣음으로써 더 줄일 수 있게 됨

receptive field 는 같음.

 

ResNet

generalizaiton performance

deeper neural networks are hard to train

-> 깊어져도 더 성능이 올라가는것이 아님

 

- identity map (skip connection)

-> 더 deep 하게 쌓아도 학습이 가능한것을 보여줌.

차원을 맞춰주기 위한 1x1 conv 하지만 Simple Shortcut이 이루어짐.

 

- Bottlenect architecture

 

DenseNet

ResNet idea 에서 더하는것이 아닌 함께가는것

-> DenseNet uses concatenation instead of addition

하지만 channel수가 계속 커짐

1x1 conv를 사용해서 줄여줌

-> Dense Block 으로 늘리고 1x1로 줄이는 방식

 

 

---> ResNet 이나 DenseNet을 사용시 효과가 좋음.

Computer Vision Applications

 

Semantic Segmantation

이미지를 픽셀별로 분류하는 것.

자율주행에 활용이 많이 됨. -> 자동차 앞에 무엇이 있는지 알아야함.

Fully Convolutional Network

dense layer가 없다.

이러한 과정을 convolutionalization 이라 한다.

기존 CNN 과 params 자체는 완벽히 일치함.

 

근데 왜 할까?

-> Transforming fully connected layers into convolution layers enables a classification net to output a heatmap

- 어떠한 size로 input으로 넣더라도 dimension이 줄기 때문에 늘려야함(?)

1. Deconvolution (conv transpose)

convolution의 역연산

 

역으로 복원하는건 불가능함

실제 연산

 

- Results

 

Detection

- R-CNN

region을 대충 있을곳 같은곳에서 뽑아서 CNN으로 계산으로 SVM으로 classify함

 

- SPPNet

RCN 에서의 문제는 뽑은 region을 전부 CNN에 넣어야함.

-> 이미지 안에서 한번만 돌려보자.

이미지 전체에 대해서 CNN에 넣고 나서 boundary 안에있는 tensor만 뽑아서 하자.

 

- Fast R-CNN

SPPNet과 동일한 컨셉.

마지막에 box 이동 

 

- Faster R-CNN

bounding box를 뽑는것도 학습을하자.

 

sliding window 에서 안에 물체가 있을것 같은지?

RPN

어떤 bounding box를 사용할지말지 찾아준다.

 

- YOLO (v1)

extremely fast object detection algorithm

그냥 이미지 한장에서 output을 뽑아줌

RPN 사용 X

S x S grid 로 쪼개줌.

bound 유효한지 + class map 동시진행

-> final detections

Comments