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를 계산하는데 사용됨.
- 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에서 계산된 ζc 와 style 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)
'GAN' 카테고리의 다른 글
Disentangled Representation Image-to-Image Translation (DRIT) (0) | 2021.01.11 |
---|---|
Scalable Fine-grained Generated ImageClassification Based on Deep Metric Learning (0) | 2020.04.08 |