카테고리 없음

[Semantic Segmentation] U-Net

AI쟁이J 2023. 6. 20. 15:41

U-Net

Biomedical Image segmentation 분야에서 적은 데이터의 수와 Cell segmentation등의 경우 같은 클래스가 인접한 셀의 구분이 어려운 문제를 해결하기 위해 고안된 모델.

 

전체 구조가 U의 형태로 대칭 구조를 가지고 있다. 이 대칭 구도는 수축하는 단계인 Contracting Path,

확장하는 단계인 Expanding Path로 이루어진다.

Contracting Path에서는 각 Contract step마다 3x3 convolution 연산을 두 번씩 반복해 패딩이 없이 진행되며 feature map의 사이즈가 점차 줄어든다.

따라서 down-sampling마다 채널의 수가 2배로 늘어나며, 사이즈는 1/2로 감소하는 단계를 거친다.

이후 확장 단계에서는 Contracting Path의 최종 특징 맵에서 보다 높은 resolution의 결과를 위한 Up-sampling을 수행한다.

따라서 각 Expanding step마다 2x2의 Up-convolution 연산을 수행하고, Feature map의 크기가 이 단계마다 두 배로 늘어난다.

또한 FCN에서 등장한 Skip Connection 역시 지원해 각 수축 단계에서 나오는 feature map들은 확장 단계를 진행할 때 동일한 레벨의 feature map들과 concat 연산을 수행하며 DenseNet 형식과 같이 이전 레이어들의 feature map 정보를 함께 사용하는 구조로 이루어진다.

 

세포와 같이 밀접하게 붙어있는 객체에 대해서 경계를 포착하기 위해 사용하는 방법으로 extrapolatation이라는 방법을 사용했다. 이는 경계 부분 픽셀에 대해 0 또는 임의의 패딩값 대신에 경계 부분을 거울에 반사된 것처럼 확장을 시켜 확장을 진행한 것이다.

 

U-Net의 한계와 U-Net++

U-Net은 기본적으로 확장/수축 단계의 깊이가 4로 고정이 되었기 때문에 데이터셋마다 최적의 성능을 보장하지 못한다.

또한 같은 층의 Encoder/Decoder끼리만 연결이 되는 제한적인 Skip Connection을 가진다.

따라서 이를 해결하기 위한 모델인 U-Net++가 등장했다.

 

U-Net++

Encoder를 공유하는 다양한 깊이의 U-net을 생성한다.

위 그림처럼 다양한 깊이를 가지고 있는 여러 U-net의 구조를 함께 사용하며 Skip connection 역시 Dense Skip Connection을 사용한다.

위와 같은 구조로 Connection의 방식이 기존의 U-Net은 X0,0 에서 X0,4로 가는 한 방향만 있었다면

U-Net++에서는 X1,0과 값을 concat후 X0,1로 가며, 이는 또 X1,1과 concat이 되며 계속해서 이 값을 키우며 X0,4까지 Skip Connection이 일어난다. 이를 통해 Semantic Gap을 줄일 수 있게 되어 더 정확한 정보를 전달하게 된다.

 

또한 U-Net과 비교해 Deep Supervision이라는 방법을 통해 각 브랜치의 출력을 평균해서 최종 결과로 사용하는 방법을 적용했으며, 깊이가 1~4까지의 다양한 U-Net들이 함께 사용되는 만큼 각 깊이에 따른 U-Net의 결과를 앙상블하는 효과를 내어 더 좋은 성능을 보일 수 있다.

 

하지만 U-Net의 한계점으로는 복잡한 Connection으로 인한 많은 Parameter와 Memory 사용량이 있으며 nested and dense skip connection은 성능이 좋아졌지만 full-scale의 충분한 정보를 탐색하지 못하는 한계를 가진다.

 

U-Net 3+

Full-scale Skip Connections를 사용해 위에서 언급한 full-scale의 정보를 받지 못하는 것을 극복한 모델.

decoder의 feature map이 위와 같은 방법을 통해

- encoder layer로부터 same-scale의 feature maps를 받음

- encoder layer로부터 smaller-scale의 low-level feature maps를 받음

- decoder layer로부터 larger-scale의 high-level feature maps를 받음

를 모두 사용해 smaller, same, larger scale 모두에 대한 정보를 연결받아 더 풍부한 경계와 위치 정보들을 사용할 수 있다.

 

CGM

Classification-guide Module

low-level에 남아있는 background의 noise를 방지하고자 extra classification task를 진행한다.

high-level feature map를 사용해 Dropout, 1x1 conv, AdaptiveMaxPool, Sigmoid를 거쳐 객체가 있으면 1, 없으면 1을 출력해 각 low-layer마다의 결과를 곱해 한 개라도 0이라면 결과값이 0이므로 noise를 최소화 가능하다.