아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.
읽은 논문들 정리
[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순서에 따라 정렬.1. Computer Vision 분야 논문Classification 모델들의 발전Detection 모델들의 발전3D 처리2. Natural Language Processing 분야
april2901.tistory.com
이번 논문은 FCN이라고 부르는 모델에 대한 논문이다.
FCN은 Segmentation을 하는 모델이다.
Segmentation은 픽셀 하나하나를 분류하는 것이다.
Segmentation은 두 가지로 나눠지는데, 각각 Semantic Segmentation과 Instance Segmentation이다.
Semantic Segmentation은 각 픽셀이 어떤 카테고리인지를 분류한다.
Instance Segmentation은 이에 더해서, 같은 사람이더라도 다른 사람이라면 구분을 하는 것이다.
Fully convolutional networks
이때까지의 모델들 마지막에 붙어있던 FC층을 Convolution Layer로 갈아낀다.
결국 모든 층이 Convolution Layer로 구성된다.
저자들은 이런 식으로 층이 쌓인 것은 하나의 큰 복잡한 필터가 되는 것 뿐이라고 얘기한다.
이 근거를 간단히 얘기하면 예를 들어 3x3필터를 적용하는 경우, 한 픽셀의 정보는 이전 층의 3x3구역의 정보를 담고 있을 것이고, 하나 더 앞에 있는 층 기준으로는 그 범위가 5x5인것과 같기 때문이다.
이 구역을 receptive Field라고 부르는데, 결국 층이 깊어지면 마지막의 층에서의 한 픽셀의 receptive Field가 넓어지는 것과 같다.
따라서 저자들처럼 위와 같이 주장할 수 있다.
이를 deep filter또는 FCN이라고 부른다.
손실함수는 모든 픽셀에 대해 정답과 얼마나 틀렸는지($l'$)를 구해 더하는 방식이다.
$$l(x; \theta) = \sum_{ij} l'(x_{ij}; \theta)$$
이런 방식의 손실함수를 SGD와 결합하면 효율이 좋다고 설명한다.
이미지를 패치로 나눠 계산하면 중복 계산이 있지만 이미지 전체를 넣으면 없기 때문이다.
Adapting classifiers for dense prediction
FC는 고정된 크기의 입력을 받아 하나의 결과만을 출력한다.
이때 FC는 공간정보가 포함되지 않는다.
이걸 Conv레이어로 바꾸면(convolutionalization) 입력 이미지의 크기가 바뀌어도 잘 동작이 된다.
또한 결과는 2D로 나오게 되고 따라서 공간 정보가 포함되게 된다.

위 그림을 보면 더 이해가 잘 될 것이다.
Shift-and-stitch vs Upsampling
320 x 320의 이미지를 생각해보자.
여기에 stride 32인 필터를 적용하면 그 결과는 10 x 10 이 될 것이다.
segmentation은 원본의 각 픽셀에 대해 결과를 내야한다.
하지만 겨우 100개의 픽셀로 원본의 픽셀을 예측하려고 하면 부정확하다.
따라서 논문에서는 먼저 Shift and Stitch라는 방법을 소개한다.
입력과 같은 320 x 320을 만들기 위해 이미지를 위로/오른쪽으로 1픽셀 씩 밀면서 필터를 다시 적용한다.
그러나 이 방법은 휠씬 많은 계산을 요구한다.
따라서 filter rarefaction이라는 방법도 소개한다.
이는 그냥 10 x 10결과의 각 픽셀 사이를 0으로 채워 320 x 320을 만드는 것이다.
그러나 논문은 이 두 방법을 모두 사용하지 않고 Upsampling이라는 방법을 사용했다.
결과의 각 픽셀 사이를 ai가 채우게 하는 방법이다.
이때는 일반적인 필터와 반대로 1개의 픽셀을 보고 이를 32 x 32로 결과를 만든다.
픽셀 1개만 보고 32 x 32로 확장시키면 성능이 좋지 않을 것이기 때문에 64 x 64필터를 사용해서 크게 만든 후 옆 픽셀에서 또 계산된 64 x 64의 결과과 겹치는 부분을 활용한다.
즉 옆 픽셀도 고려되어 크게 확장을 시키는 것이다.
Skip Architecture
기존의 VGG같은 분류기를 FCN으로 바꾸고 upsampling과 pixelwise loss를 추가해서 모델을 구성했다.
처음부터 학습이 아닌 이미 분류가 가능한 모델을 파인튜닝했다.
이 모델에는 skip archetecture라는 구조가 들어간다.
이 구조가 나온 이유는 다음과 같다.
conv층을 지날수록 원본 이미지는 픽셀 하나하나 단위의 정보는 잃는 대신 점차 이미지의 특성을 배우게 된다.
예를 들어서 이 근처에 고양이가 있다 와 같은 정보이다.
반대로 층이 많이 진행되기전, 원본 이미지에 가까울 때는 정확한 픽셀 경계선이 어디인지 등을 알지만 반대로 이 픽셀이 고양이 귀인지 무엇인지 등 추상화된 특성 정보는 없다.
segmentation은 고양이를 구성하는 픽셀 하나하나를 칠해야하는데, 따라서 초반과 후반의 정보를 합쳐서 의미도 정확하고 테두리도 정확한 결과를 만드는 구조가 skip Architecture이다.

먼저 skip이 적용되지 않은 구조, FCN-32s이다.
이는 conv7까지 통과한 이미지를 바로 32배로 키운다.
그만큼 뭉툭한 결과가 나온다.
이제 FCN-16s부터는 skip connection이 적용된다.
먼저 conv7의 결과를 2배 키운다.
이 크기는 pool4에서 나온 결과와 크기가 같다.
이 pool4에서 나온 결과에 1x1 필터를 적용해 채널 수를 맞춰주고 이 두 결과를 element wise하게 더한다.
이 크기를 16배 해서 최종결과를 만든다.
pool4의 정보가 상대적으로 더 세밀하므로 FCN-32s보다 더 샤프한 결과가 나온다.
FCN-8s은 한 단계 더 나아간 방식이다.
FCN-16s에서 더해서 만든 2배 크기의 결과를 다시 2배 키운다.
이 값을 pool3에서 나온 결과와 더한다.
이 값을 8배 키우면 최종 결과가 나온다.

결과
결과적으로 당시 모델들에 비해 압도적인 성능과 빠른 속도를 보여주었다.

'AI > 컴퓨터비전(CV)' 카테고리의 다른 글
| [CV 논문] Auto-Encoding Variational Bayes (2) | 2026.03.05 |
|---|---|
| [CV 논문] Mask R-CNN (0) | 2026.02.27 |
| [CV 논문] 3D Gaussian Splatting for Real-Time Radiance Field Rendering (0) | 2026.02.24 |
| [CV 논문] End-to-End Object Detection with Transformers (0) | 2026.02.19 |
| [CV 논문] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (0) | 2026.02.11 |