Recurrent Residual Unet 모델 리뷰
R2 Unet을 구성하는 Recurrent 구조의 feature map 시각화
소개
안녕하세요. 이 포스트에서는 Residual connection과 Recurrent network의 구조를 포함하고 있는 Recurrent Residual Unet (R2Unet) 대해서 소개하고자 합니다.
먼저, Residual connection 구조는 인공신경망의 구조가 깊어질수록 생기는 Vanishing Gradient 문제와 같이 Network 앞에서의 계산되는 데이터의 특징들이 뒤로갈수록 점점 손실 되는 문제를 개선하는데 큰 도움이 된다고 생각합니다.
Recurrent network 구조는 일반적으로 시계열 데이터나, 순차 데이터들을 입력으로하는 Network에서 사용되고 있습니다. 그런데 R2Unet에서는 Segmentation을 목표로 하기 때문에 순서가 있는 데이터를 입력으로 하지 않습니다. 그렇기 때문에 아래와 같이 표현되는 Network 구조에서 Recurrent 계산은 해당 Layer의 Output이 Input으로 다시 들어가는 구조를 가집니다.

그런데 순차적인 데이터의 입력이 아닌 Network 에서 Recurrent 구조가 어떤 장점이 있을까? 학습 파라미터인 weight들의 수를 늘리지 않고 모델의 성능을 올릴 수 있을까? 라는 생각이 들었습니다.
하나의 Layer에서 출력된 Feature를 다시 입력으로 하는것이 꼭 음식을 되새김질 하는 것과 같은 느낌이었습니다. 맛있는 음식을 입에서 계속 음미 하듯이 모델에서 인식하고자 하는 데이터의 특징들을 강조하는 효과가 있을것이라는 기대가 될 것이라 생각합니다. 그래서 Recurrent 구조를 포함하는 CNN을 구현하고 각 레이어에서 Feature Map이 어떻게 나타나는지 Tensorboard를 통해서 확인을 해보겠습니다.
import tensorflow as tf
def main():
# 학습 코드 삽입 예정
계속 업데이트 예정