본문 바로가기

GAN

COCO-FUNIT:Few-Shot Unsupervised Image Translation witha Content Conditioned Style Encoder

coco-funit은 funit을 발전시킨 형태

FUNIT REVISIT

  • 기존FUNIT을 먼저 살펴보면
    •  content encoder Ec, style encoder Es, image decoder F 로 구성됨.
    • Ec는 content image xc을 input 으로 받아서 content embedding code zc 을 output으로
    • Es는 style image xs를 input으로 받아서 style embedding code zs 를 output으로
    • image decoder F는 zc와 zs를 이용해서 이미지 생성. 이 때 zs는 F의 AdaIN의 mean 과 scale parameters를 계산하는데 사용됨.

FUNIT

  • AdaIN design 은 domain-specific information 이 activation의 the first and second order statistics에 의해 제어된다는 가정을 기반으로 함.
  • 다양한 example/style images가 존재할 때, FUNIT은 각 image에서 style code를 뽑고 이를 평균내어 최종 input을 F에 전달한다.  위 그림에서 Mean으로 표시됨.

COCO-FUNIT

Content loss

아래 그림 3과 같이 FUNIT은 content loss problem을 발생한다. 아래 그림에서 translation 결과 이미지가 input image(content)와 잘 aligned되지 않은 것을 볼 수 있다.

 

Content-conditioned style encoder (COCO).

  • style embedding이 style image의 작은 변형에 강인하면 content loss problem을 줄일 수 있다고 가정.
  • COntent-COnditioned style encoder (COCO)를 제안.
  • 기존과 분명한 차이점은 content image를 styel encode의 input에 사용했다는 점
    • content image가 encoder Es,c 로 입력되어 spatial feature map을 계산하고 mean-pooled과 FC를 거쳐 ζc 로 mapped.
    •  동일하게 style image 가 encoder Es,s 로 입력되어 spatial feature map를 계산한뒤 mean-pooled을 거친다. 이 때 constant style bias (CSB) 함께 concatenated 되는데 이때 사용되는 CSB는 항상 동일한 값으로 style image의 다양한 변화에 너무 민감해지지 않도록 하는 역할.
  • CSB는 self.usb로 code에서 정의.
self.usb = torch.nn.Parameter(torch.randn(1, usb_dims))
  • style image에서 뽑은 style code와 concat되어  vector ζs 계산
style_in = self.mlp_style(torch.cat([style, usb], 1))
  • content imag에서 계산된  ζcstyle image에서 계산된 ζs를 element-wise product 수행 후 최종 style code 계산.
coco_style = style_in * content_style_code
  • style code는 AdaIN parameters로 mapping된다.
coco_style = self.mlp(coco_style)

COCO architecture