본문 바로가기

Programmer Jinyo/Machine Learning

U-Net 논문 내용 정리 및 설명


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)

이번에 정리할 논문은 의료 영상/이미지 segmentation에서 많이 쓰이는 모델 구조의 시초가 된


U-Net : Convolutional Networks for Biomedical Image Segmentation


이다.



U Net 은 , 단순히 이미지를 classification 하는 문제를 넘어서서 이미지의 특정 영역을 Label 로 표현하는 image segmentation하는 것에 주된 목적이 있는 모델이다.





기존의 모델들에 비해서 개선된 점은 크게 두 가지다.

1. 속도가 빠르다

- sliding window보다 빠르게 patch 방식을 채택하여, 이미지를 전부 조금씩 잘라서 훑어보는것이 아니라, 이미지 전체를 격자 모양으로 잘라서 한번에 인식한다. 

2. Patch의 사이즈에 따른 trade off에 빠지지 않는다.

- 기존의 방식은 한번에 넓은 구역을 보면, 전체적인 그림의 인식 확률은 좋아지지만 Localization(어떤 구역이 어떤 레이블인지)이 부족해지고, 반대로 좁은 구역을 보면 더 세분화된 localization 이 가능하지만 인식률이 떨어지는 단점이 있었다.




모델 구조는 다음과 같다.





왼쪽 절반의 contracting path라고 부르는 사이즈가 줄어드는 모델 부분과 오른쪽 절반의 사이즈가 늘어나는 expansive path로 이루어져 있고, 주목해야 할 부분은 매 contracting layer마다 각 max pool을 하기 전 레이어의 결과값을 우측의 같은 대응되는 크기의 output 필터에 concatenate 시킨다는 점이다. ( 이 부분이 u자 모양이라는 것에 의해서 U-Net이라는 이름을 갖게 한다 )


concat 시킬때는 왼쪽 이미지 크기가 오른쪽보다 큰 것을 볼 수 있다. (저 그림에서 보면 왼쪽 아래에 latent field들의 size가 표시되어 있다)

이 때문에 crop을 사용해서 큰 이미지를 조금 작은 이미지로 resize 해 준다.




특별히 overlap tile 이라는 patch 단위로 잘랐을 때 남는 부분이 생길 때  이 부분을 반사시킨 (거울상) 모양을 붙여주어 인식률을 높이는 트릭을 사용하였다.




또한 주의해야 할 점은 Fully Connected Layer가 없다는 것이다.

그렇기 때문에 모델의 forwarding 속도가 더욱 빨라질 수 있었다.




최종으로는 output segmentation map을 사용하여 결과를 유추해낸다.