공부

[컴퓨터비전] 11, 12주차 정리

narlo 2022. 12. 14. 00:05

11주차

CNN Architectures

1. AlexNet

- 8개의 layer

- 227 * 227 * 3 입력 이미지 해상도 고정

 

output size:

p는 padding의 크기

k는 kernal, filter의 크기

s는 stride

 

파라미터 개수

filter size * 3(3차원) * 필터 개수

 

pooling의 경우에는 학습해야 할 파라미터의 개수가 0이다.

 

softmax : normalization, 각 클래스의 값의 합을 1로 만들어준다.

-> 0과 1 사이의 확률값으로

 

2. VGGNet

더 작은 필터를 사용, 깊어진 network

전부 3*3 filter 사용

 

3개의 3*3 conv

1개의 7*7 conv

=> receptive field는 같다.

파라미터 수는 27C^2, 49C^2으로 3개의 3*3 conv가 훨씬 적다.

 

깊어질수록 성능이 좋아지고, 더 non-linear하게 만들 수 있다.

 

메모리 : 이미지 크기

파라미터 : w의 개수

7 * 7 * 512를 그대로 stretch

이를 4096으로 만들기 위해 Fully Connected 연산

=> VGG는 Fully connected 연산에서 파라미터가 많다.

 

AlexNet, VGGNet 모두 입력 크기를 바꿔주면 동작하지 않는다.

 

3. GoogleNet

깊게 만들면서도 연산적으로 효율적인

더 적은 파라미터로도 좋은 성과

FC layers 마지막 클래스 개수를 맞춰주기 위한 하나 빼고 전혀 사용 X

 

Inception Module

병렬적인 연산의 장점

다양한 receptive field를 추출하여 조합해 사용할 수 있다.

각각의 출력의 해상도는 동일해야 함

결과들을 depth차원에서 연결(뒤에 이어붙이기)

concatenation 후 1*1 conv를 통해 feature map을 섞어주기

 

Computational complexity 문제

해결책 : bottlenect layers

1*1 conv를 이용해 feature channel size를 줄인다.

출력과 비슷한 구조가 중간중간 달려있다.

깊어짐에 따라 loss가 없어지는 문제

이를 보완하기 위해 중간중간에서도 예측해서 안쪽으로 loss를 잘 전달할 수 있도록

 

Average Pooling이용 -> 공간적인 크기를 평균내서 1로 만들어버림

1 * 1 * c(channel)의 벡터로 만들 수 있다.(fully connected layer 필요없음)

 


12주차

CNN architecture

4. ResNet

layer가 급증하였다 => 깊어진다 => 효율성, 정확도가 좋아진다

152 layer, 사람 그 이상의 성능

Connections

단순하게 layer를 이어붙인다고 좋아지지 않는다.

deep model은 표현능력은 더 좋지만, loss가 사라지는 문제, optimize문제 등

Residual Block을 이용하여 해결(입력을 출력부분에도 연결해줌)

H(x) = F(x) + x

F(x) = H(x) - x

출력과 x의 차이만 학습한다.

 

해상도가 높아 메모리를 많이 차지하는 문제

=> 7*7 conv, /2를 통해 이미지 크기를 줄여준다.

FC layer는 마지막 한개 뿐

 

ResNet 50+ 의 경우

bottleneck 사용

bottleneck : 1*1 conv를 통해 feature 크기를 바꿔준다.(googlenet과 유사)

 

Comparing Complexity

오른쪽으로 갈수록 연산량 증가

높은 곳에 위치할수록 정확도 높음

원의 면적 : 메모리

 

VGG : 메모리, OP가 많음 (왜?)

GoogleNet : bottleneck으로 해결 -> 메모리, OP 적음

average pooling을 통해 fully connected 연산을 최소화

AlexNet : layer얇음 -> 연산량 적다. 메모리는 fully connected이기 때문에 많이 차지

 

2017년 SENet

Squeeze-and-Excitation Networks

feature recalibration

feature map을 적응적으로 weight를 바꾼다.

상황에 따라 상대적으로 중요하지 않은 filter도 있을 수 있음

적용할 weight는

global average pooling과 fully connected를 이용

 

global pooling

채널별로 평균을 하나로 만들어주는

 

sigmoid : activation function 중 하나

0~1 사이 값으로 만들어줄 때 사용

 

Batch Normalization

미니 배치

 

베타 : 학습

 

ResNext

엄청 많은 conv

connection은 달려있음

inception과 유사

 

DenseNet

connection이 조금 더 dense하게

50개의 layer만 사용해도 resnet 152개 layer보다 성능이 좋았다.

 

MobileNet

가볍고, 연산량이 적은, 모바일에서 사용 가능한

convolution -> 연산량이 많다.

 

depthwise seperable convolution을 제안

depth를 쪼개서 본다.

pointwise : depth를 섞어주는 과정

1 * 1 * C를 이용한 conv

 

전이학습

imagenet의 pretrained 파라미터를 불러와 사용

freezing : 학습이 안되게 고정

 

'공부' 카테고리의 다른 글

[소프트웨어공학] 기말고사 정리  (1) 2022.12.14
[컴퓨터비전] 13, 14주차 정리  (1) 2022.12.14
[컴퓨터비전] 9, 10주차 정리  (0) 2022.12.13
[컴퓨터비전] 7주차 정리  (0) 2022.12.13
[컴퓨터비전] 5, 6주차 정리  (0) 2022.12.13