
Fully Convolutional Networks(FCN)는 이미지 구조를 유지하면서 픽셀 단위로 예측을 수행할 수 있도록 고안된, 시맨틱 세그멘테이션(Semantic Segmentation) 분야의 기념비적인 모델입니다.
픽셀 단위 예측 (Dense Prediction)
기존 분류 모델은 이미지를 하나의 카테고리로 압축하지만, FCN은 이미지의 모든 픽셀이 각각 어떤 클래스에 속하는지 예측합니다. 이를 위해 FC 레이어를 제거하고 모든 과정을 Convolution 레이어로만 구성했습니다.
입력 이미지 크기의 자유로움
FC 레이어는 입력 노드의 개수가 고정되어야 하므로 입력 이미지의 크기를 제한하는 원인이 됩니다. 반면, FCN은 전체 네트워크가 합성곱 필터로만 이루어져 있기 때문에, 입력 이미지의 크기에 상관없이 sliding window 방식으로 연산을 수행할 수 있습니다.
Up-sampling (Transposed Convolution)
합성곱(Convolution)과 풀링(Pooling) 과정을 거치면 특징 맵(Feature Map)의 크기가 줄어들고 해상도가 낮아집니다. FCN은 줄어든 특징 맵을 다시 원래 이미지 크기로 키우기 위해 Up-sampling(주로 Transposed Convolution 사용) 과정을 수행합니다.
스킵 커넥션 (Skip Connection)을 통한 디테일 복원
특징 맵을 단순히 크게 키우기만 하면 경계선 같은 정교한 로컬(Local) 정보가 뭉개집니다. FCN은 이를 해결하기 위해 Skip Connection을 도입했습니다.
기존의 CNN 기반 분류(Classification) 모델과 비교하여 FCN이 가진 주요 특징과 차이점은 다음과 같습니다.
기존 CNN 분류 모델(AlexNet, VGGNet 등)과 FCN의 가장 결정적인 차이점은 네트워크 뒷부분에 위치한 Fully Connected(FC) 레이어의 존재 여부입니다.
| 구분 | 기존 CNN 분류 모델 | Fully Convolutional Networks (FCN) |
|---|---|---|
| 네트워크 종단부 | Fully Connected (FC) 레이어 사용 | 1x1 Convolution 레이어로 대체 (Convolutionalization) |
| 입력 이미지 크기 | 고정된 크기만 가능(예: 224x224) | 어떤 크기의 이미지든 입력 가능 |
| 출력 형태 | 클래스별 확률값 (1차원 벡터) | 입력 이미지에 대응하는 2차원 위치 정보 (Feature Map) |
| 주요 목적 | 이미지 전체가 "무엇(What)"인지 분류 | 이미지 내 객체가 "어디에(Where)" 어떤 형태로 있는지 분류 |
기존 CNN 분류 모델이 이미지 안의 정보를 압축하여 "무엇이 있는가"에만 집중했다면, FCN은 "무엇이 어디에, 어떤 모양으로 있는가"를 픽셀 단위로 밝혀내기 위해 구조를 완전히 컨볼루션화(Convolutionalization)한 모델입니다.