본문 바로가기

연구실 공부

[논문] FIFO: Learning For-invariant Features for Foggy Scene Segmentation

728x90

https://arxiv.org/pdf/2204.01587.pdf

해당 논문을 보고 작성했습니다.

 

Abstract

이 논문에서는 안개 낀 상황에서도 좋은 성능을 보이는 새로운 semantic segmentation model을 제시합니다. 핵심 아이디어는 이미지의 안개 상태를 style로 간주하고, segmentation model의 neural style space에서 서로 다른 안개 상태를 가진 이미지들의 차이를 줄이는 것입니다. 특히, image의 nerual style은 일반적으로 안개 외에도 다른 요소들에 의해 영향을 받기 때문에, style에서 안개와 관련된 factor를 뽑아내는 fog-pass filter module을 사용합니다. fog-pass filter와 segmentation model을 번갈아가며 최적화해 다른 fog conditions을 가진 style의 차이를 점차 줄이고, 결과적으로 fog에 영향을 받지 않는 feature를 학습할 수 있습니다. 논문에서 제시한 방식은 foggy 한 image dataset에 아주 좋은 성능을 보이고 맑은 날씨 image에도 좋은 성능을 보인다고 합니다.

 

Introduction

지난 10년동안 semantic segmentation 분야는 많은 발전이 있었는데, 현재 존재하는 대부분의 models과 datasets은 control 된 환경에서만 정확도를 높이는 것에 초점을 맞춥니다. 즉 안개, 비, 눈, 햇빛 노출, 움직임으로 생긴 blur, 센서 noise와 같은 원인들로 인해 화질이 좋지 않은 이미지에 대해서는 고려하지 않습니다.

 

Fig 1.

그래서 저자들은 안개 낀 이미지들에 대한 semantic segmentation에 대해 연구를 진행했다고 합니다. 안개가 이미지의 가시성을 심각하게 손상되어 성능이 심각하게 저하되기 때문에 어려운 문제라고 합니다. 기존 모델 앞에 fog를 제거하는 network를 추가하는 것은 항상 문제를 완화하는 데 유용하지 않을 뿐만 아니라, 연산량이 많고 메모리 용량도 많이 요구됩니다. 그리고 안개 낀 장면 image를 많이 구하는 것 자체도 어려운 일이고 제한된 가시성 때문에 labeling 하는 것도 문제가 됩니다.

기존 방식들은 맑은 날씨의 image에 안개를 합성해 얻은 image dataset을 사용해 semantic segmentation을 supervised learning으로 진행했습니다. 또한, curriculum learning 접근법을 도입합니다. 이는 labeling되지 않은 진짜 안개 낀 image를 사용해 안개가 약간 있는 이미지부터 안개가 심하게 낀 이미지까지 점차적으로 model이 학습할 수 있도록 만드는 접근법입니다. 이러한 방식들은 인상적인 견고함을 보이지만, 결국은 일반적인 supervised learning이기 때문에 성능 향상이 가능합니다. 그리고 실제 안개 낀 image의 안개 정도를 제어하기 위한 추가적인 module이 필요하고, 최종 model을 안개 있는 장면으로 편향시켜야 하기 때문에 학습 과정에 추가적인 연산과 hyper-parameter가 필요합니다. 그리고 종종 깨끗한 image에서 성능이 떨어지는 경우도 존재합니다.

 

Fig 2.

이러한 문제를 해결하기 위해 저자들은 foggy 장면을 segmentation하기 위해 for-invariant feature를 학습하는 FIFO를 소개합니다. FIFO는 이미지에 있는 안개 상태를 이미지의 내용과는 독립적인 style로 생각하고, input image의 안개 style의 변화에 둔감한 segmentation model을 학습하는 것을 목표로 합니다. 이를 위해 먼저, training image를 3가지 domain으로 분류합니다. clear weather(CW), synthetic fog(SF), 그리고 real fog(RF)로 구분하는데 CW와 SF는 labeling을 하고 RF는 하지 않습니다. FIFO는 feature space에서 서로 다른 두 fog domain에서 style 차이를 줄이도록 segmentation network를 유도해 fog-invariant feature를 얻을 수 있습니다.

FIFO는 안개 style 표현 품질에 크게 의존됩니다. 기존에 존재하는 안개 style을 표현하는 방식은 FIFO에 적합하지 않습니다. 왜냐하면 기존에 존재하는 방식은 이미지의 전반적인 스타일을 수동으로 설계하여 캡처하도록 되어 있기 때문에 안개 외의 요인 및 이미지 content에도 영향을 받습니다.

그래서 저자들은 fog-pass filter를 사용합니다. fog-pass filter는 일반적인 neural style인 feature map의 gram matrix를 input으로 사용하고 embedding vector 형태로 정확히 안개와 관련된 정보만 담고 있는 fog factor를 추출합니다. fog-pass filter는 같은 도메인에 있는 fog factor는 모으고 다른 도메인의 fog factor는 분리할 수 있도록 학습하고, input image의 안개 상태를 fog factor를 이용해 구분할 수 있게 됩니다.

segmentation model은 학습 과정에서 다른 도메인의 이미지들의 fog factor들의 차이를 줄이도록 유도됩니다. fog-pass filter와 segmentation network를 번갈아 최적화 시키는 것은 다른 도메인 간의 fog style의 차이를 점차 줄여나가게 되고, 최종적으로 segmentation network의 fog-invariant feature를 이끌어냅니다. fog-pass filter는 train 할 때만 사용되므로 test 과정에서는 필요하지 않습니다.

FIFO는 이전에 등장한 다른 model과 다르게 간단하게 학습이 가능하고 뛰어난 결과를 보입니다. FIFO는 안개 밀도 정도를 control 할 필요가 없기 때문에 segmentation model을 더 적은 hyper-parameter를 사용해 학습합니다. FIFO는 추가적인 module이 필요 없고 맑은 날씨에서도 좋은 성능을 보입니다.

 

Configuration of Training Data

FIFO 학습에 사용되는 이미지는 clear weather(CW), synthetic fog(SF), real fog(RF)로 분류됩니다. CW image는 semantic segmentation의 supervised learning를 위해 사용되는 Cityscape dataset을 사용합니다. 반면에 SF image는 Cityscapes dataset image에 진짜같은 안개 효과를 주어서 만들어진 Foggy Cityscapes-DBF dataset을 사용합니다. CW와 SF는 fully annotated dataset입니다. 마지막으로 RF image는 실제 세계에서 안개 낀 장면들을 labeling 하지 않고 모아둔 Foggy Zurich dataset을 사용합니다.

FIFO가 다른 두 안개 낀 image dataset을 다루는 방식은 여태까지 나온 방식들과는 다릅니다. 첫번째, Foggy Cityscape-DBF dataset를 FIFO는 안개를 합성하는 안개의 정도를 하나의 값으로 고정하고 전체 dataset을 사용합니다. 이전에 나온 방식들은 dataset 중에서 품질이 좋은 이미지들을 골라 다양한 안개정도를 주어 curriculum learning을 했습니다. 둘째, FIFO는 Foggy Zurich dataset 전체적으로 활용하는데, 이전 방식들은 추가적인 module을 사용해 image의 안개 정도를 축정하고 그 정도에 따라 여러 개로 나누어서 사용했습니다. 이러한 차이가 FIFO의 pipeline이 더 직관적이고 간결하게 만드는데 도움이 됩니다.

 

Proposeed Method

Fig 3.

segmentation network는 Cityscapes dataset으로 pretrain하고, 임의로 초기화된 fog-pass filters는 network의 다른 feature map에 부착됩니다. 그다음, 전에 봤던 3개의 domain의 dataset에서 FIFO의 두 part는 mini-batch 마다 번갈아서 학습되는데, 처음 5000번은 fog-pass filters만 단독으로 학습됩니다. segmentation nework의 fog-invariant feature learning을 위해 fog-pass filter는 학습할 때만 사용됩니다.

 

Fog-pass Filtering Modules

segmentation network의 feature map대신 fog-pass filtering module은 image의 style에 더 집중 하기 위해 대부분의 content 정보를 제외한 전체적인 스타일을 표현하는 feature map을 input으로 사용합니다. 저자들은 feature map을 이용한 Gram matrix를 feature 표현하는 방식으로 사용했는데, 이는 다른 방식들보다 더 style 정보를 잘 표현합니다. Gram matrix G가 있고 G_(i, j) = a_i Τ a_j입니다. 여기서 a_i는 input으로 들어오는 feature map의 i번째 channel에 있는 vector가 됩니다. 이 값은 i번째와 j번째 feature channel 간의 상관관계를 나타냅니다. 저자들은 gram matrix 결과가 대칭이기 때문에 상삼각 부분의 벡터만 fog-pass flitering module의 input으로 사용합니다.

I^a와 I^b를 mini-batch에서 추출한 이미지 쌍이라고 하고 F^l는 segmentation network의 l번째 layer에 붙이는 fog-pass filter를 나타낸다고 하겠습니다. 그럼 두 이미지의 fog factor는 f^(a, l) = F^l(u^(a, l)), f^(b, l) = F^l(u^(b, l))로 계산됩니다. u^(a, l)는 I^a의 l번째 feature map을 이용해  Gram matrix 계산된 값의 상삼각 부분의 벡터 값을 의미합니다. fog-pass filter는 segmentation network에게 I^a와 I^b의 fog condition의 관점에서 얼마나 다른지를 f를 사용해 알려줍니다. 그러기 위해서 fog-pass filter는 같은 domain에 있는 fog factor들은 같은 그룹으로, 다른 domain에 있는 factor들은 다른 그룹으로 표현하는 fog factor 공간을 학습합니다.

 

mini-batch에서 모든 image 쌍 P가 주어지면 F^l의 loss function은 위와 같이 작성됩니다. I(a, b)는 I^a와 I^b가 같은 domain일 경우 1을 return하고 아닌 경우 0을 return 합니다. d는 cosine distance를 의미하고 m은 margin을 의미합니다.

 

Segmentation Network

segmentation network는 semantic segmentation, fog-invariant feature learning, 그리고 input의 안개 상태에 상관없이 일관된 예측을 하기 위해 학습됩니다.

 

  • Segmentation Loss

semantic segmentation을 학습하기 위해 개별 이미지에 픽셀 단위 cross entropy loss를 사용합니다.

 

식은 위와 같습니다. n은 이미지의 pixel 수를 의미하고, P는 pixel i에서 j class로 예측한 점수가 되고 Y는 pixel i에 정답 label를 의미합니다(정답 label만 1, 나머지는 0).

 

  • Fog Style Matching Loss

서로 다른 fog domain에서 image 쌍이 주어지면 segmentation network는 fog factor들의 거리를 좁히는 fog-invariant feature를 학습합니다. 이를 위해, 이 loss는 fog-pass filter의 weight는 변경하지 않으면서 만들어낸 두 fog factor를 사용합니다.

 

식은 위와 같습니다. f_i^(a, l). f_i^(b, l)은 fog-pass filter F^l을 통해 계산된 image의 fog factor를 의미합니다. d_l은 feature map의 l번째 fog factor의 차원을 의미하고 n_l는  feature map의 l번째 fog factor의 크기를 의미합니다.

 

  • Prediction Consistency Loss

CW와 SF는 정확히 동일한 sematinc layout을 가지고 있습니다. 이런 이미지들의 예측 결과를 동일하도록 만들어, 학습된 표현에서 CW와 SF domain을 더 일치시킬 수 있습니다. 따라서, 동일한 원본을 가진 CW와 SF 이미지만 같은 segmentation map을 예측하도록 유도합니다.

 

P_i^(CW)와 P_i^(SF)는 pixel i에 대한 segmentation model이 예측한 class probability vector를 의미합니다. 위 식은 모든 pixel에 대해서 P_i^(CW)와 P_i^(SF) 값이 일관되도록 만드는 loss입니다.

위 식에서 KLdiv는 Kullback-Leibler divergence를 의미합니다. 이 식은 fog style matching loss와 같은 목표를 같지만 적은 수의 CW-SF 쌍을 통해 예측 level에서 더 확실하게 fog-invariance를 유도합니다. 또한 segmentation loss를 보완하는데, 위 식에서 사용하는 확률 분포는 segmentation loss에서 사용되는 class labels 이상의 정보를 제공하기 때문입니다.

 

  • Training Strategy

각 미니배치에서, CW-SF, CW-RF, SF-RF 와 같이 다른 domain들의 쌍에서 같은 수의 image 쌍이 sampling 됩니다. CW-SF 쌍에서의 이미지는 같은 semantic layout을 가지므로, prediction consistency loss가 적용됩니다.

 

CW-SF 쌍에서, segmentation network는 위 식을 최소화하는 학습을 진행합니다. λ_fsm과 λ_con는 hyper-parameter이고 Y^CW와 Y^SF는 같은 값을 갖습니다.

RF를 포함한 다른 input domain의 다른 쌍의 경우, loss는 segmentation과 fog style matching으로만 이루어집니다.

 

식은 위와 같습니다. D ∈ {CW, SF}입니다. 진짜 안개 낀 이미지에 대한 segmentation label이 존재하지 않기 때문에 진짜 안개 낀 이미지에 대한 예측 값 P^RF는 L_seg에 사용되지 않습니다.

 

Empricial Verification

  • Impact of Fog-pass Filtering Modules

fog-pass filter를 사용하는 걸 정당화 하기 위해서, Gram matrix와 fog-pass filter로 구해진 fog factor가 얼마나 fog condition을 이미지의 다른 부분과 얼마나 잘 구분하는지 비교합니다. CW, SF, RF의 Gram matrix와 fog factor 분포를 이용해 비교를 진행합니다. 비교를 위해 Cityscaspes dataset의 train image를 사용해 감쇠 계수 β = 0.005로 지정된 안개 simulator에 의해 생성된 안개 이미지, Foggy Zurich dataset를 사용합니다. Gram matrix는 Cityscape로 pretrain 된 RefineNet-lw의 ResBlock1을 사용해 구해지고, 이에 해당하는 fog factor는 fog-pass filtering module을 통해 구해집니다.

 

Fig 4.

위 그림에서 (a)는 분포의 t-SNE 시각화를 보여주는데, CW와 SF의 Gram matrix는 상당히 많은 부분 겹치지는 fog-factor는 domain에 따라 잘 분리된 것을 볼 수 있습니다. 즉 Gram matrix는 image content에 크게 영향을 받지만, fog factor는 안개와 관련된 정보만을 나타낸다는 뜻입니다. (b)를 보면 adjusted Rand index를 통해 Gram matrix와 fog factor의 k-means cluster의 quality를 정량적으로 평가한 모습입니다. 이 역시 (a)와 동일하게 fog factor가 잘 분리한다는 것을 보여줍니다.

 

  • Fog-invariance Learned by FIFO

fog-invariance learning에서 FIFO의 영향을 조사하기 위해서, 저자들은 FIFO가 fog factor의 공간에서 fog domain간의 차이를 얼마나 효과적으로 줄이는지 검증했습니다. 각각 domain은 이미지의 fog factor의 집합으로 표현되고, domain 쌍의 간격은 FIFO를 이용해 학습하기 전과 학습한 이후에 대한 average Hausdorff distance값을 통해 측정했습니다. 결과는 위 그림의 (c)입니다. (c)를 보면 세 domain에서 모두 FIFO가 fog-style gap을 줄인 것을 보여줍니다.

 

Fig 5.

FIFO로 학습된 segmentation network의 중간 feature를 이용해 재구성한 image를 통해 정량적으로 영향을 검증했습니다. 위 그림이 재구성한 image입니다. 저자들은 재구성하는 model로 RefineNet-lw에 추가적인 upsampling layer를 붙여 사용했습니다. Cityscape dataset으로 pretrain 된 encoder의 값을 변경하지 않으면서 decoder가 image를 재구성할 수 있도록 학습을 진행합니다. 그러고 나서 encoder는 FIFO로 pretrain 된 segmentation network로 대체됩니다.

또한 비교를 위해, 저자들은 Cityscape로 학습된 baseline을 이용해 image를 재구성하고 fog-pass filter가 없는 FIFO의 변형(Gram matrix의 간격을 직접적으로 줄이도록 학습하는)을 이용해 image를 재구성합니다.

위 그림은 FIFO가 더 효율적으로 이미지를 선명하게 만들고, 특히 객체 경계를 잘 강조하고 더 적은 artifact를 만드는 것을 보여줍니다.

 

Experiment

 

저자들이 제시한 FIFO는 위와 같은 성능을 보여줍니다.

728x90