의료 AI(딥러닝) 공부 일기

[Research review] - Learning Deconvolution Network for Segmentation (국문)

ignuy 2025. 11. 19.

This article is a compilation of research reviews for study purposes. It was not written for commercial purposes. If there are any issues, it will be deleted.

It's written in Korean, so if you need it, click the translate button and read it.

논문 소개

딥러닝 기반 Semantic 시맨틱 세그멘테이션이 막 활발해지던 시기, [Learning Deconvolution Network for Semantic Segmentation]은 단순히 FCN 구조를 따라가는 대신, “REAL Decoder”를 가진 네트워크를 제안했습니다. 이 논문은 VGG16을 인코더로 쓰고, 그와 대칭인 Deep Deconvolution Network를 디코더로 쌓아, 풀링 과정에서 잃어버렸던 위치 정보를 unpooling+decovolution 조합으로 정교하게 복원합니다. 특히 이미지 전체를 한 번에 분할하는 대신, object proposal 단위(instance-wise)로 세그멘테이션을 수행해, 크기가 매우 다른 객체들도 비교적 안정적으로 처리할 수 있다는 점이 특징입니다.
FCN 계열 모델이 놓치기 쉬운 경계/형태 정보와 다양한 스케일의 객체 표현을 보완하면서, 이후 U-Net, SegNet, DeepLab 등으로 이어지는 Encoder-Decoder 세그멘테이션 아키텍처의 기저를 쌓았다는 점에서 본 연구의 가치는 계속해서 높아지고 있습니다.

배경

Semantic Segmentation은 이미지 속 모든 픽셀에 의미 있는 클래스를 부여하는 문제로, 자율 주행, 의료 영상, 여러 비전 문제를 해결하는 데에 핵심 기술로 자리 잡고 있다. 초기에는 분류용 CNN을 슬라이딩 윈도우 방식으로 적용해 픽셀 단위 예측을 시도했지만, 연산량이 방대하고 중복 계산이 심하다는 한계가 있었다.

이를 극복하기 위해서 등장한 FCN(Fully Convolutional Network)은 완전연결층을 제거하고, 마지막 feature map을 업샘플링해 전체 이미지를 한 번에 분할하는 구조로 큰 진전을 이뤘다. 그러나 강한 다운샘플링과 단순한 bilinear upsampling 때문에 작은 객체가 사라지거나, 큰 객체가 조각나고, 경계가 흐릿해지는 문제(Fig. 1.)가 남았다. 따라서, 이 논문은 “더 정교한 복원과 다양한 스케일의 객체를 어떻게 잘 살릴 것인가”라는 배경에서 출발한다.

아이디어

이 논문의 핵심 아이디어는 “진짜 디코더를 가진 딥 네트워크를 구축하자”에 가깝다. 따라서 논문에서는 VGG16기반의 인코더가 이미지의 의미 정보를 잘 압축해 주는 반면, FCN처럼 단순한 보간으로는 잃어버린 공간/형태 정보를 복구하기 어렵다고 보고, 이에 대응하는 Deep deconvolution network를 별도로 설계했다.

이 디코더는 max-pooling 시점의 위치 정보를 “switch”로 저장해 두었다가, unpooling 단계에서 해당 위치에만 값을 되살리고, 이어지는 deconvolution 층들이 이 sparse한 활성 값을 주변으로 퍼뜨리며 객체의 윤곽과 내부 구조를 점점 세밀하게 재구성하는 방식으로 동작한다.

또 하나의 중요한 아이디어는 이미지 전체가 아니라 object proposal 단위(instance-wise)로 세그멘테이션을 수행한다는 점이다. EdgeBoxes로 다양한 크기의 후보 영역을 만들고, 각 proposal을 224x224로 맞춰 네트워크에 통과시킨 뒤, 다시 원본 이미지 좌표계로 score map을 투영/합성함으로써 작은 객체는 크게 확대해서 보고 큰 객체는 넉넉한 범위로 감싸서 보는 효과를 얻는다. 이를 통해 단일 스케일 receptive field가 가진 한계를 완화하고, 서로 다른 크기의 객체를 보다 안정적으로 처리한다.

마지막으로, 저자들은 제안한 DeconvNet과 기존 FCN을 앙상블하여, FCN의 전역적 문맥 정보와 DeconvNet의 세밀한 구조 목원 능력을 결합함으로써, 경계가 또렷하면서도 의미적으로 일관된 세그멘테이션 결과를 얻는 것을 목표로 하고 있다.

시스템 구조

Architecture

논문의 저자들은 VGG16을 기반으로 한 인코더-디코더 구조를 제안한다(fig. 2).

인코더는 기존 VGG16의 합성곱/풀링 계층과 fc6, fc7까지 포함하여 이미지를 점점 더 낮은 해상도의 고차원 feature로 압축한다.

디코더는 이 인코더 구조를 거의 대칭으로 뒤집은 형태로, 각 풀링 단계마다 대응되는 unpooling + deconvolution 블록을 쌓아 원래 해상도로 복원한다. 모든 conv/deconv 뒤에는 ReLU와 Batch Normalization이 붙어 깊은 네트워크에서도 학습이 안정되도록 했고, 최종적으로 입력과 같은 크기의 클래스별 score map을 출력하도록 설계했다.

Deconvolution Network for Segmentation

제안된 Deconvolution Network는 단순히 업샘플링을 위한 구조가 아니라, 픽셀 단위 분할을 위한 전용 디코더로 설계된 것이 핵심이다. 인코더에서 추출된 압축 feature를 받아 여러 단계의 unpooling과 deconvolution을 거치며 점진적으로 해상도와 디테일을 복원한다. 이 디코더는 각 클래스에 대해 독립적인 채널을 유지하면서, 객체의 형태/경계/내부 구조를 다시 그려내는 역할을 담당한다. 특히 이 네트워크는 이미지 전체 대신, proposal 단위로 입력을 받아 해당 영역 안에서 픽셀별 클래스를 예측함으로써, 다양한 크기의 객체를 더 유연하게 처리하도록 설계되었다.

Unpooling(Fig. 3)

Unpooling은 max-pooling을 수행할 때, 잃어버렸던 위치 정보를 되살리는 역할을 수행한다. 인코더의 max-pooling 단계에서 “어느 위치가 최댓값이었는지”를 switch 형태로 저장해 두었다가, 디코더에서 unpooling 시 이 위치에만 값을 되돌려 놓고 나머지 위치는 0으로 채운다. 이렇게 하면 feature map의 공간은 커졌지만 활성값은 일부 위치에만 있는 sparse한 맵이 만들어진다.

이 과정 덕분에 네트워크는 “어디가 중요한 위치였는가”를 보존할 수 있고, 이후 deconvolution이 이 위치를 중심으로 디테일을 확장해 나갈 수 있게 된다.

Deconvolution(Fig. 3)

Deconvolution은 unpooling으로 얻어진 sparse한 활성 맵을 조밀한 feature 맵으로 확장하는 역할을 한다. 일반 convolution이 여러 입력을 하나의 출력으로 모으는 연산이라면, decovolution은 하나의 활성값을 주변 지역으로 퍼뜨려 더 큰 맵을 생성하는 연산으로 이해하면 쉽다.

이때, 필터는 학습을 통해 클래스별 shape basis처럼 동작하면서, 객체의 윤곽과 내부 패턴을 복원한다. 낮은 단계의 decovolution은 대략적인 위치와 형태를, 상위 단계로 갈수록 더 세밀한 윤곽과 세부 구조를 형성하며 최종적으로 입력과 같은 크기의 픽셀별 score map을 만들어낸다.

Analysis of Deconvolution Network

저자들은 디컨볼루션 네트워크의 동작을 시각화하며 coarse-to-fine 복원 과정을 분석한다. 깊이가 얕은 deconv 층에서는 객체의 대략적인 영역만 활성화되지만, 상위 deconv 층으로 갈수록 경계가 또렷해지고, 세부적인 부위(머리, 팔다리 등)가 분리되어 나타나는 것을 보여준다. 또한 unpooling이 위치 정보를, deconvolution이 클래스 공통의 형태 정보를 담당한다는 해석을 제시한다.

이런 분석을 통해 단순 bilinear upsampling과 달리, 제안된 디코더가 작은 객체와 복잡한 경계를 보다 잘 복원할 수 있음을 실험적으로 뒷받침한다.

System Overview

시스템 전체를 놓고 봤을 때, 논문이 제안하는 방식은 object proposal → DeconvNet → 결과 통합의 파이프라인으로 표현할 수 있다.

먼저 EdgeBoxes로 이미지에서 다수의 object proposal을 생성하고, 각 proposal을 고정 크기로 리사이즈한 뒤 DeconvNet에 입력해 픽셀 별 score map을 얻는다.

이 score map을 다시 원본 이미지 위치로 투영한 후, 여러 proposal에서 나온 결과를 픽셀 단위로 합성하여 최종 score map을 구성한다.

마지막으로 softmax와 CRF와 같은 후처리를 적용해 경계를 다음고, 필요시 FCN과의 앙상블까지 수행함으로써 정교하면서도 의미적으로 일관된 Semantic Segmentation 결과를 얻는 구조이다.

학습 및 추론, 실험

Training

이 논문에서 제안한 네트워크는 인코더, 디코더를 모두 합치면 매우 깊고 파라미터 수도 많다. 따라서 단순히 이미지와 정답 마스크를 넣고 end-to-end로 학습하면 기울기 폭발/소실, 수렴 불안정 문제가 쉽게 발생한다. 저자들은 이를 해결하기 위해 Batch Normalization(이하 BN)을 모든 conv/deconv 뒤에 넣고, 데이터 구성도 한 번에 어렵게 하지 않고 두 단계 학습(two-stage training)으로 나누어 접근한다.

1단계에서는 상대적으로 위치와 크기가 정렬된 “쉬운 예제”로 네트워크를 안정적으로 초기화하고, 2단계에서 proposal 기반의 “어려운 예제”들로 미세 조정하여 실제 상화엥서의 다양성과 잡음을 반영한다.

BN

Batch Normalization은 각 미니배치에서 채널별 평균과 분산을 이용해 feature 분포를 정규화하는 기법이다. 이 논문에서는 모든 conv/deconv 층 뒤에 BN을 붙여, 레이어가 깊어져도 중간 표현의 분포가 과도하게 치우치지 않도록 했다. 그 결과 learning rate을 더 높게 설정할 수 있고, 초기값에 민감하게 휘둘리지 않으면서도 빠르게 수렴할 수 있다. 저자들은 실험적으로 BN이 없을 경우 DeconvNet이 사실상 학습이 되지 않거나 매우 불안정하다고 보고하며, 제안 구조에서 BN이 필수적인 구성 요소임을 강조하고 있다.

Two-stage Training

two-stage training 전략의 핵심은 “먼저 단순한 조건에서 학습을 안정화하고, 그 다음 현실적인 조건에 노출시키자”로 말할 수 있다. 1단계에서는 ground-truth 마스크에서 bounding box를 추출하고 그 안을 하나의 객체로 간주하여 학습한다. 이 경우 객체가 중앙에 크기, 위치가 잘 정렬된 상태라 네트워크는 상대적으로 쉬운 조건에서 기본적인 분할 능력을 습득한다.

2단계에서는 grount-truth 마스크와 충분히 겹칠 정도의 proposal을 선정하여 학습 데이터로 사용한다. 이때는 위치와 스케일이 더 다양하고 배경도 섞여 있어 보다 현실적인 상황임을 의미한다. 이렇게 단계적으로 난이도를 올려줌으로써, 깊은 네트워크를 안정적으로 학습시키면서도 최종적으로는 다양한 환경에서 활용할 수 있는 모델을 얻을 수 있다.

Inference

추론 단계에서는 한 장의 이미지에 대해 여러 후보 proposal을 생성하고 학습된 DeconvNet을 이용해 개별 proposal의 Semantic Segmentation map을 만든다. 그 후, 모든 proposal의 출력을 집계하여 전체 이미지에 대한 Semantic Segmentation을 생성한다.

Instance-wise Segmentation Map 집계

여러 proposal에서 나온 결과를 합칠 때 저자들은 아래 두 가지 방식을 제안한다.

또는

첫 번쨰는 각 픽셀, 클래스에 대해 가장 큰 proposal 점수만 선택하는 max aggregation으로, 강한 응답만을 취해 경계를 뚜렷하게 만드는 효과가 있다.

두 번째는 모든 proposal의 점수를 더하는 sum aggregation으로, 여러 proposal이 같은 위치를 지지할수록 점수가 커지는 효과를 낸다.

FCN과의 앙상블

DeconvNet은 객체의 형태와 경계를 섬세하게 복원한다는 강점이 있지만, 이미지 전체 문맥을 넓게 보며 객체의 전체적인 모양을 추출하는 능력은 기존 FCN이 더 뛰어날 수 있다. 논문의 저자들은 이 두 모델의 장점을 결합하기 위해 ensemble을 수행한다.

구체적으로 DeconvNet과 FCN이 출력한 픽셀별 class score를 정규화한 뒤, 단순 평균(또는 가중평균)하여 최종 score map을 만든 후 CRF로 후처리한다. 이렇게 하면 FCN이 제공하는 전역적인 의미 정보와 DeconvNet이 제공하는 세밀한 경계 정보가 서로를 보완해, 작은 객체를 놓치지 않으면서도 큰 구조가 잘 유지된 결과를 얻을 수 있다.

Experiment

제안 방법의 구현 세부사항, 사용 데이터셋, 비교 대상 모델, 평가 지표등을 다루어보자. 주된 목표는 아래와 같다.

(1) DeconvNet 단독 성능이 기존 FCN·DeepLab 계열과 비교해 어느 수준인지
(2) CRF 및 FCN과의 앙상블이 성능을 얼마나 끌어올리는지
(3) instance-wise 예측과 aggregation이 실제로 작은 객체와 복잡한 장면에서 도움이 되는지를 정량·정성적으로 검증

데이터는 PASCAL VOC 2012 데이터셋을 중심으로, 다양한 설정에서의 mean IoU와 클래스별 성능을 표와 시각적 예시로 제시한다.

Implementation Details

구현 세부사항에서는 네트워크 구조와 학습 설정에 관한 구체적인 정보를 제공한다.

 

네트워크 설정

인코더는 ImageNet으로 사전 학습된 VGG16을 기반으로 하고, 디코더는 이에 대응되는 deconv/unpooling 층을 포함한다.

 

데이터 셋

입력 이미지는 250x250으로 리사이즈한 뒤 224x224 랜덤 크롭과 수평 뒤집기 등 간단한 데이터 증강을 사용한다. 또한 첫 번째 훈련에서 0.2M, 두 번째 훈련에선는 2.7M 개의 훈련 예제를 사용한다(two-stage).

 

최적화

학습은 모멘텀을 사용한 표준 SGD 기반으로 진행하며, learning rate, weight decay, 모멘텀 등의 하이퍼파라미터도 논문 내에 명시한다. 컨볼루션 네트워크의 가중치는 ILSVRC 데이터셋에서 pre-trained VGG 16 layer net을 사용하여 초기화하고 DeconvNet 부분은 zero-mean Gaussians로 초기화한다. 배치 정규화로 인해 drop-out 레이어를 제거하고 검증 정확도가 향상되지 않을 때마다 학습률을 10분의 1로 줄인다. 네트워크는 첫 번째 및 두 번째 단계 훈련에서 각각 64개의 샘플의 mini-batch로 약 20K 및 40K SGD 반복 후에 수렴한다.

 

추론

proposal은 EdgeBoxes로 생성하며, 메모리와 속도 문제를 고려하여 한 이미지당 상위 50개 정도만 사용한다. 전체 이미지에 댇한 픽셀 단위 클래스 확률 맵을 얻기 위해 픽셀 단위 최댓값을 계산하여 proposal 단위 예측을 집계한다.

또한 CRF 후처리와 FCN 앙상블을 위한 구현 선택들도 간략히 기술하여, 재현 가능성을 높인다.

PASCAL VOC 평가

평가는 PASCAL VOC 2012 test set을 기준으로 수행되며, Hypercolumn, FCN8s 등 대표적인 Segmentation 기법들과 성능을 비교하여 진행한다. Table 1.에서 볼 수 있듯, DeconvNet과 CRF를 결합한 모델은 단독 기준으로도 경쟁력 있는 mean IoU를 달성하였다. 또한 FCN과의 앙상블을 적용했을 때(EDeconvNet) 추가 데이터 없이 학습한 방법들 중 상위권 성능을 기록하고 있다.

클래스별 IoU를 통해 특히 사람(person), 동물, 차량처럼 형태가 복잡한 객체에서 경계 품질이 개선되는 경향을 보여준다. Fig. 6과 같이 시각적 결과는 proposal 수를 늘려 aggregation을 진행할수록 작은 객체와 세부 구조가 더 잘 드러나는 것을 보여주며, 제안한 instance-wise 예측 전략의 효과를 뒷받침하고 있다.

결과 해석

논문 결과를 봤을 때, 제안한 DeconvNet과 기존 FCN은 상호 보완적인 특성을 가진다는 점이 눈에 띈다. Fig. 7의 (a) 부분에서는 논문의 방법이 FCN보다 좋은 예시를 보여주고 있다. 소/양/말처럼 형태가 복잡하고 경계가 굴곡진 객체, 사람 옆의 의자처럼 상대적으로 작은 물체에서 DeconvNet이 더 또렷한 윤곽과 완전한 실루엣을 재구성하는 것을 볼 수 있다. 이는 인스턴스 단위 입력과 deconvolution을 통해 객체의 모양 정보를 적극적으로 복원하기 때문이다.

반대로 (b)에서는 FCN이 DeconvNet보다 나은 결과를 보이는 사례가 등장한다. 강아지 예시에서 배경과 객체가 비슷한 색을 가지거나, 사람/새처럼 장면 전체 문맥이 중요한 경우, FCN은 넓은 receptive field와 전역적 feature 덕분에 상대적으로 일관된 객체 예측을 수행하는 반면, DeconvNet은 proposal 경계나 노이즈에 민감하여 내부에 잡음이 남기도 한다.

가장 흥미로운 부분은 (c)에서 볼 수 있듯이 두 모델이 각각 실수한 픽셀들이 앙상블 후에는 상당 부분 보정된다는 점이다. DeconvNet의 세밀한 경계 표현과 FCN의 전역적 구조 파악 능력이 합쳐지며 의자 다리처럼 가는 구조나 양털처럼 복잡한 텍스쳐도 더 자연스럽게 복원된다.

논문에서는 CRF가 시각적 노이즈를 줄이는 데는 도움을 주지만, 정량적인 성능 향상은 제한적이라고 언급하며, 진짜 성능 향상은 모델 간 보완적 결합(ensemble)에서 온다고 해석한다. 결국 이 결과들은 “좋은 Segmentation 성능”이 단순히 업샘플링 방시의 문제가 아니라 형태/경계/문맥을 동시에 다루는 여러 관점의 결합에서 나온다는 점임을 잘 보여준다.

댓글