[CVPR2019] Hue-Net: Intensity-based Image-to-Image Translation with Differentiable Histogram Loss Functions

이번 리뷰는 CVPR2019 논문인 Hue-Net입니다. 해당 논문이 수식도 많고(29개ㄷㄷ) 개념도 만만치않아서 중간중간 넘어가며 정리한 내용들이 많습니다. 리뷰 읽으실 때 그냥 가볍게 이런게 있구나 하고 읽는 것이 심신에 좋을 듯 합니다.

Hue-Net은 style transfer 관련 논문으로 그 중에서도 color transfer를 하고자 하는 논문인데, Color transfer는 그림1과 같이 Source 영상 속 장면에 Target 영상의 color를 입히는 것을 의미합니다.

그림1. Color Transfer. Source 영상의 색 분포를 Target 영삭의 색분포로 변환시키는 작업을 의미한다.

그림 1을 보시면 아시다시피 Color transfer task는 Source와 Target이 서로 다른 장면으로 구성된 Unpaired Dataset을 활용해야 합니다.

이러한 Unpaired Dataset은 Source와 Target에 대하여 동일한 위치에 존재하는 pixel 끼리 직접적인 비교를 할 수가 없기 때문에 pixel-to-pixel 기반의 loss 함수는 사용할 수 없습니다.

그래서 두 영상간에 intensity histogram을 비교하는 histogram based loss를 사용하고자 하는 방법론들이 예전부터 있었으며, Hue-Net 또한 그러한 맥락의 논문으로 보시면 될 것 같습니다.

단순하게 생성된 영상의 히스토그램을 계산해서 Target 영상의 히스토그램과 비교하면 안되나? 라고 하실 수 있는데, CNN Learning based method에서 영상의 히스토그램을 naive하게 계산하는 방식은 기울기를 계산할 수가 없어서 어려움이 존재합니다.

그래서 해당 논문은 생성된 결과 영상에서 히스토그램이 미분 가능한 특성을 지닐 수 있도록 고안된 Hue-Net을 제안합니다.

Hue-net은 네트워크를 옵티마이저로 사용하여 히스토그램 매칭을 수행하며, 히스토그램 쌍에 대한 거리(차이)는 Earth Mover’s Distance(EMD)를 사용한다고 합니다.

그림2. Hue-Net을 이용한 Color Transfer Example. Source와 Target의 hue channel 히스토그램 분포가 다르며, 생성된 영상은 최대한 Target의 hue histogram 분포로 맞춰진 모습이다.

또한 HSV(Hue, Saturation, Value) colorspace가 color transfer 문제를 풀어나가는데 가장 적합하다고 판단하여, 해당 space를 사용한다고 합니다.

Differentiable Intenity Histogram Formulation

일단 카메라 영상에서의 히스토그램 자체가 이산적인 값이므로, 이를 연속적인 값으로 바꾸어주어야 합니다.

논문에서는 흑백 영상을 [0, 1] 사이로의 연속적인 값으로 정의를 하며, Kernel Density Estimation(KDE)를 사용하여 미분 가능한 히스토그램을 만든다고 합니다.

KDE는 쉽게 말하면 히스토그램을 스무딩 한 것과 유사하다고 볼 수 있는데, 히스토그램과 같이 이산적인 확률밀도함수가 아닌, kernel 함수를 통해 연속적인 확률밀도 함수를 구하는 것을 KDE 라고 합니다.

KDE를 통해 픽셀 명도의 밀도값을 수식(1)과 같이 나타낼 수 있습니다. 여기서 N은 픽셀의 전체 개수, I(x)는 영상 픽셀의 grey value[0~1], K는 kernel 함수, W는 대역폭을 의미합니다.
g도 [0,1] 사이의 값인데 무엇을 의미하는지는 논문에 정확히 명시가 되어 있지 않아서 모르겠네요.

그림3. Kernel Function 예시

먼저 kernel에 대해서 잠깐 설명을 드리자면 KDE에서 kernel이란 원점을 중심으로 대칭이면서 적분값이 1인, non-negative한 함수를 의미합니다.

이러한 kernel 함수의 가장 대표적인 예시로는 Gaussian function이 존재하기도 하는데, 논문에서는 수식(2)와 같이 Logistic Regression function으로 이루어진 kernel 함수를 사용했다고 합니다.

여기서 \sigma(z) = 1/(1+e^{-z}를 의미하며 해당 수식(2)는 non-negative하며 적분이 가능하구 대칭이기 때문에 kernel function의 조건을 만족합니다.

보다 스무스하고 미분 가능한 영상 히슽토그램을 위해, 논문에서는 [0, 1] 내부를 다시 K개로 간격을 나누게 되는데, {B_{k}}^{K-1)_{k=0} 각각의 내부 길이는 L=1/K로 이루어져있습니다.

그리하여 영상의 픽셀 확률을 수식(3)과 같이 표현할 수 있으며 수식(3)의 적분을 풀어나가면 수식(4)처럼 표현할 수 있습니다.

이때 함수 P_{I}(k) 는 k^{th} bin의 값으로 제공되기 때문에 식 5로 다시 표현할 수 있게됩니다.

여기서 \Pi_{k}는 다음과 같습니다.

최종적으로, 미분이 가능한 히스토그램을 논문에서는 다음과 같이 표현합니다.

Earth Mover’s Distance

논문에서는 위에서 언급했다시피, 두개의 히스토그램의 거리를 정의하기 위해 Wasserstein Metric으로도 알려져있는 EMD를 사용하였습니다.

EMD에 대한 수식 정리가 생각보다 내용이 방대해서 그냥 가볍게 최종 intensity-based metric 방정식만 보여드리고 해당 부분은 넘어가겠습니다.

Semanti-based Metric

Color transfer task에서, Source Image와 Color가 transfer된 Output Image 간에 semantic similarity가 유지되기를 위해 Semantic based Metric을 고안했으며, Semantic-based metric은 hue chaneel들 사이에 MI를 기반으로 하였다고 합니다.

Mutual Information(MI)

두 영상(I1, I2)에 대한 MI는 아래 수식과 같이 표현가능합니다.

P_{I_{1}}, P_{I_{2}}는 image 히스토그램을 의미하며, P_{I_{1},I_{2}}는 joint histogram을 나타냅니다.

출력과 입력 사이에 MI를 최대화하는 것이 생성된 영상이 semantically하게 유사하게끔 되는 것이며, 제가 위에 EDM에 대한 증명을 넣지는 않았지만 그 내용에 따라 Semantic-based Loss는 수식 17과 같이 표현할 수 있습니다.

Hue-Net Architecture

최종적인 Hu-Net의 전체 구조는 다음과 같습니다. U-net 구조의 Generator와 PatchGAN classifier를 discriminator로 사용하고 있으며, U-Net은 출력 영상의 hue channel 만을 생성하게 됩니다.

Experimental Results

그림5. 정성적 결과

그림 5를 보시면 MI Loss에 대한 차이를 쉽게 보실 수 있습니다. 3번쨰 행에서 MI Loss가 없는 경우 사마귀가 꽃잎 색에 침범되었지만, MI Loss를 사용한 경우(3행4열) 정확하게 분리가 되는 모습입니다. 그 외에도 4행3열과 4열의 차이로 붉은 색 BB 안에 꽃의 색이 차이가 나는 것을 확인하실 수 있습니다.

또한 5열의 Reinhard와 비교하였을 때는, HueNet이 보다 더 Saturation이 선명한 것을 확인하실 수 있습니다.

해당 표는 정량적 결과로, Target-Source, Target-OUT에 대한 EMD와 MI의 값을 정량적으로 나타낸 것입니다.

Summary

내용이 많이 어수선해 간략하게 요약을 하자면,

  • Hue-Net은 Style Transfer 논문 중 Color Transfer Task를 풀고자 하는 논문이다.
  • 두 영상간에 Histogram을 비교하는 loss를 설계하고자 Kernel Density Estimation을 통한 미분가능한 히스토그램을 설계하였다.
  • Joint Histogram과 MI를 통한 Semantic based Metric을 통하여 성능 향상을 시켰다.

정도로 할 수 있을 듯 합니다.

Author: 신 정민

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다