FCN은 이미지 분할 문제를 해결하기 위한 딥러닝에서 사용되는 모델로, 입력 이미지의 픽셀 단위로 분류하는 문제를 풀기 위해 공간 차원을 가지는 특성 맵(feature map)으로 대체된 CNN의 한 종류입니다.

기존의 CNN은 주로 분류(classification)나 객체 감지(object detection)와 같은 문제를 해결하기 위해 개발되었습니다. 이러한 문제에서는 입력 이미지를 하나의 클래스로 분류하거나, 객체의 위치와 크기를 결정하는 것이 주요 목표입니다. 그러나 이미지 분할 문제는 이와 달리 입력 이미지를 작은 단위로 분할한 후, 각각의 픽셀을 클래스로 분류하는 문제입니다. 따라서 기존의 CNN으로는 문제를 해결하기 어렵습니다.

FCN은 이러한 문제를 해결하기 위해 공간 차원을 가지는 특성 맵을 출력하는 네트워크를 사용합니다. 이는 기존의 CNN에서 마지막 fully-connected layer를 제거하고 대신 1x1 convolution layer를 사용하는 것으로 구현됩니다. 이렇게 하면 입력 이미지의 크기와 상관없이 출력 특성 맵의 크기가 일정하게 유지되므로, 입력 이미지의 각 픽셀을 분할하는 문제를 해결할 수 있습니다.

FCN은 인코더와 디코더로 구성됩니다. 인코더는 입력 이미지를 받아 특성 맵으로 변환하는 과정을 수행합니다. 이 특성 맵은 이미지의 로컬 정보를 포착한 것으로, 점점 더 작아지는 인코더 층을 통해 추출됩니다. 이 과정은 이미지의 고수준(high-level) 특징을 추출하면서, 이미지 분할을 위해 필요한 문맥(context) 정보를 보존합니다.

디코더는 인코더에서 추출한 특성 맵을 업샘플링하여 원래 입력 이미지와 같은 크기의 출력 이미지를 생성합니다. 이를 위해 업샘플링 기법을 사용하거나, 디코더 층을 거치면서 각각의 업샘플링된 특성 맵을 결합(concatenate)합니다. 이러한 방식으로 FCN은 입력 이미지의 각 픽셀을 적절한 분할 클래스로 예측할 수 있습니다.

FCN은 이미지 분할, 이미지 캡션 생성(image captioning), 이미지 생성(image generation) 등 다양한 분야에서 사용됩니다. FCN은 U-Net과 같은 다른 이미지 분할모델과는 다르게 인코더와 디코더의 연결 부분이 skip connection으로 이루어져 있습니다. skip connection은 인코더에서 추출한 특성 맵을 디코더에 병합하여 이미지 분할 결과를 개선합니다.

특히, skip connection은 디코더에서 업샘플링하면서 정보를 손실하는 문제를 해결합니다. skip connection을 사용하면 디코더 층에서 각각의 업샘플링된 특성 맵을 결합하면서, 인코더 층에서 추출한 고수준 특성 맵과도 결합할 수 있습니다. 이를 통해 디코더에서 정보가 손실되는 것을 방지하고, 입력 이미지의 로컬 정보와 전역 정보를 모두 활용하여 이미지 분할을 수행할 수 있습니다.

FCN은 U-Net과 달리 이미지의 대칭 구조를 가지지 않습니다. 대신 인코더에서는 기존의 CNN과 유사한 구조를 가지고 있으며, 디코더에서는 업샘플링과 결합을 반복하여 출력 이미지를 생성합니다. 따라서 FCN은 U-Net보다 더 간단하고 유연한 모델 구조를 가지고 있습니다.

FCN은 이미지 분할 문제를 해결하기 위해 개발된 첫 번째 딥러닝 모델 중 하나이며, 이후 다양한 변형 모델이 등장했습니다. 예를 들어, SegNet, DeconvNet, DeepLab 등이 있습니다. 이러한 모델들은 FCN의 구조를 기반으로 하면서도, 각각의 특징을 가지고 있습니다.

+ Recent posts