이것저것 코딩하는 블로그

[Computer Vision] ResNet Review 본문

Computer Vision

[Computer Vision] ResNet Review

2020. 12. 9. 13:30

1.     SRResNet[1]

 

앞서 포스팅했던 (codinglilly.tistory.com/4) SRCNN 과정을 블록으로 생각하여 계속 쌓아 모델을 만들면 일정 깊이까지는 높은 정확도를 보인다. 그러나 일정 깊이 이상에서는 기울기 폭발이나 기울기 소실의 문제가 발생한다. 이를 해결하기 위해 고안된 모델 구조가 SRResNet이다.

 

0)     Batch

SRResNet 말하기에 앞서 batch 개념을 살펴보자. 학습을 방대한 양의 데이터를 모두 처리하며 학습하는 것은 비효율적이고 많은 parameter 시간을 요구한다. 따라서 입력 데이터를 일정한 size 나눈 , 해당 batch 대한 학습을 진행한다. Batch 학습 결과를 정규화하여 데이터셋에 대한 학습 결과를 도출하게 되는데, 정규화 과정을 batch normalization 이라고 한다.

 

1)     Residual learning

 

기존의 CNN 과정을 살펴보자.

 

[그림 1. 기존의 CNN]

 

[그림 1]을 보면, 기존의 CNN network convolution 연산을 통해 출력을 최적화시키는 역할을 한다. 그러나 이는 앞서 언급했듯이, 일정 깊이 이상에서는 기울기 소실 혹은 기울기 폭발을 야기한다. 그래서 ResNet에서 제안한 Network 구조는 다음과 같다.

 

[그림 2. ResNet의 Network Structure]

 

 

기존의 CNN network skip connection 적용한 구조이다. 기존에 추정했던 값을 [그림 1] H(x) 하면, ResNet 이를 skip connection 통해 입력값과 잔차의 합인 F(x)+x 설정한다. 이를 통해 F(x) 학습하면, 모델은 최종 추정값을 정답과 근사하게 만드는 것이 아닌 잔차를 0 가까이 하는 방향으로 학습하게 된다. ResNet에서는 convolution 활성화 함수 사이에 batch normalization 적용했다. Batch normalization이란 학습 데이터를 여러 개로 나눈 ( 나눠진 데이터를 batch라고 한다), 각각 batch마다 학습된 결과를 정규화하여 최종 결과를 도출하는 것이다. 이러한 구조를 가진 하나의 block residual block이라고 한다. ResNet Residual block 여러 쌓아 높은 성능 향상을 이루어냈다.

 


[1] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).

 

Comments