Highly Accurate Dichotomous Image Segmentation

Salient Object Detection

Featured image

Contribution

  1. Large scale dataset DIS5K(5470 images)를 구성했습니다.
  2. IS-Net을 제안했습니다.
  3. HCE(Human Correction Efforts) metric을 제안했습니다.

IS-Net

Overview

model_architecture.png IS-Net은 이와 같이 GT encoder와 Image segmentation component 파트 2가지로 나뉩니다. 각 입력은 1024x1024이며, 거의 동일한 구조의 U$^2$-Net이 320x320 이었는데 3배에 가깝게 늘어났습니다. 하지만 필요한 메모리나 시간의 경우 이전과 크게 다르지 않습니다. 여기서 중요한 것은 U$^2$-Net의 구조를 그대로 사용한 것입니다. 기존의 네트워크는 320x320을 위해 설계된 아키텍처로, 1024x1024의 input 데이터는 제대로 학습하지 못할 수 있습니다. 하지만 본 논문에서는 해당 아키텍처를 그대로 사용하기 위해 앞에 convolution layer(kernel=3, stride=2)를 하나 붙여 512x512x64의 feature map으로 만들어 바로 U$^2$-Net 아키텍처에 넣어줍니다. 원래의 데이터를 그냥 넣어줬을 때와 비교하면 feature channel 내에서 공간 정보를 유지하면서도 3/4 정도의 GPU 메모리 오버헤드를 줄일 수 있었습니다.

Intermediate Supervision

대부분의 모델들은 트레이닝 셋에 오버피팅 되기 쉽습니다. 따라서, deep supervision은 deep network의 중간 산출물을 지도하는 기법들을 제안해왔습니다. dense supervision들은 보통 side output에 적용됩니다. 하지만 고차원 피처를 single channel probability map으로 변환하는 것은 필수적으로 차원 축소 연산이 들어가게 되고, 그 과정에서 중요한 정보를 잃게 됩니다. 이러한 문제를 피하기 위해, 본 논문에서는 intermediate supervision training을 제안합니다.

GT Encoder

먼저 고차원 feature를 추출하기 위해 가벼운 model self-supervised GT encoder를 훈련시킵니다. loss function은 다음과 같습니다. $Loss_{F_{gt}} = \underset{\theta_{gt}}{\overset{argmin}{}} \sum_{d=1}^DBCE(F_{gt}(\theta_{gt},G)d,G)$ 여기서 D는 intermediate feature map의 수이며, G는 ground truth, $F{gt}$는 encoder입니다. 위 그림으로 보면 D는 6입니다. 실제 사용할 때는 마지막 출력 이전의 feature map을 사용합니다.

Segmentation Network

위와 같이 GT Encoder를 학습시키고, 그 다음 Segmentation network를 학습시킵니다. Segmentation network는 GT Encoder와 같은 D를 갖도록 같은 출력 수의 네트워크로 설계됩니다. GT Encoder로부터 생성된 ground truth high-dimensional intermediate deep feature는 $f_D^G=F_{gt}^-(\theta_{gt},G), D={1,2,3,4,5,6}$이 되며, segmentation model의 feature map 또한 같은 차원으로 입니다. 따라서 각 feature map $f_D^G: f_D^I=F_{sg}^-(\theta_{sg},I), D={1,2,3,4,5,6}$가 되며, $\theta_{sg}$는 segmentation model의 weight입니다. Feature synchronization를 통한 IS(Intermediate Supervision)은 high-dimensional feature consistency loss에 따라 시행됩니다. loss function은 아래와 같습니다. $Loss_{fs} = \sum_{d=1}^D\lambda_d^{fs}||f_d^I-f_d^G||^2$ 여기서 $\lambda_d^{fs}$는 각 fs loss의 weight입니다.

HCE(Human Correction Efforts) metric

HCE.png 일반적으로 segmentation 결과와 GT를 비교할 때 IoU, F-measure, MAE 와 같은 metric을 사용합니다. 이러한 metric들은 예측 결과와 GT간의 차이를 측정하는 것으로 그 차이가 얼마나 중요한지를 말해주는데, 이것들만으로는 부족하다. 따라서 본 논문에서는 real-world 활용에 있어 잘못된 예측을 만족스럽게 수정하기에 이르기 까지 사람의 노력이 얼마나 필요한지를 추정하는 척도, HCE를 제안한다. 레이블링 경험에 따르면, 대부분의 작업은 1. 점을 선택해 polygon을 그리는 것, 2. 영역을 선택하면 그 영역이 선택되는 것 2가지로 나뉩니다. 이러한 두 작업은 사람의 마우스 클릭으로 이뤄집니다. 따라서, HCE는 추정되는 마우스 클릭의 수를 정량화합니다. 특히, 틀린 마스크를 고치기 위해서 작업자가 틀린 부분을 모두 수정하기 위해 잘못 예측된 대상의 경계 또는 영역을 따라 우세한 점을 수동으로 샘플링 해야합니다. 그림 7에서 볼 수 있듯, FN과 FP를 두 개의 카테고리로 설정할 수 있습니다. 또한, 이 둘을 주변 영역에 따라 다시$FN_N(N=TN+FP), FN_{TP}, FP_P(P=TP+FN), FP_{TN}$으로 나눌 수 있습니다. $FN_N$을 고치려면, 그 바운더리의 주변의 TN과 맞닿아있는 부분을 감쌀 수 있는 점들이 필요합니다. 비슷하게 $FP_P$를 고치는 것은 바운더리 주변의 TP와 맞닿아 있는 부분을 레이블링 하듯 점들을 찍어 선을 그을 수 있습니다. 나머지 $FN_{TP},FP_{TN}$과 같은 경우 주변이 모두 TP 또는 TN이기 때문에 클릭 한 번으로 해결이 가능합니다. 따라서 그림 7의 HCE는 10($FN_N=6, FN_{TP}=1, FP_P=2, FP_{TN}=1)$입니다. 각 포인트와 영역은 opencv의 findContours 함수와 connected region labeling 알고리즘을 통해 얻는 contour를 기반으로 하는 DP 알고리즘을 통해 얻습니다.

Relax HCE

어떤 application은 minor prediction error에 관대할 수 있습니다. 따라서 error tolerance $\gamma$를 고려하는 방식으로 $HCE$를 $HCE_\gamma$로 확장합니다. 핵심은 erosion과 dilation를 이용해 FP와 FN 영역들을 relax하게 본다는 것입니다. prediction P와 GT G, error tolerance($\gamma$), DP의 epsilon이 주어지고, 이 때 $HCE_\gamma$의 계산을 요약하면 아래와 같습니다. relax_HCE.png erosion operation은 $P_{or}G$에서 얇은 component를 지우는 것입니다. 하지만 어떤 얇은 component들(얇은 테이블이나 그물 등)은 타겟을 나타내는데 중요하게 작용하기 때문에 크기에 상관없이 보존해야합니다. 이를 위해, GT mask의 skeleton을 추출하고, relaxed FN’ mask와 조합해 구조를 유지합니다.

Experiment Result

result_qualitative.png result_quantitative.png

Ablation Study

ablation_study.png

Input size

위 테이블3을 보면 input의 크기가 클수록 성능이 향상되는 것을 보실 수 있습니다. 하지만 GPU 메모리 사용량이 크게 늘어 배치를 작게 사용했고, 성능이 떨어졌습니다. 본 논문의 간단하고도 효과적인 변형을 이용해 성능을 올렸고, 메모리 이슈 또한 해결했습니다.

Supervision on different decoder stages

Last-S는 decoder의 마지막 S번째 stage에 IS가 적용된다는 것인데 6일 때 성능이 좋아 6을 기본 설정으로 하고 있습니다.

Different Loss

L2, KL, L1을 비교해봤으며, 기존 L2를 사용했을 때보다 성능이 낮아진 모습을 보입니다. 또한, GT encoder와 segmentation decoder의 feature map을 prediction으로 변환하는 outconv를 share하여 비교해봤는데, 이는 오히려 나쁜 영향을 줬습니다.

Reference

paper : https://arxiv.org/pdf/2203.03041.pdf