본문 바로가기

컴린이 일기장/Today I Learned

[TIL] Pix2Pix HD(High-resolution Image synthesis and semantic manipulation with Conditional GANs) 논문 요약

반응형

 

[주절주절]

-

 

[Today I Learned]

# Abstract
- Conditional GAN을 이용해 Semantic label maps를 고화질의 실제 이미지로 합성.
- 새로운 Adversarial loss와 Multi scale의 Generator와 Discriminator 이용
- Interactive visual manipulation framework
ㄴ Objective Instance Segmentation map → 객체 추가, 제거 등 가능해짐.
ㄴ 동일한 Input에 대한 다양한 Result

# The pix2pix Baseline
- U-Net 구조의 generator와 Patch-based fully convolutional network discriminator
- Discriminator에는 semantic label map과 이미지(real 혹은 fake) channel-wise concat
- 고화질 이미지 생성은 불가능했음.

# Improving Photorealism and Resolution

1) Coarse-to-fine generator
- Global generator(G1) / Local enhancer(G2)

① Global generator
- Style transfer 모델 구조 따옴.
- Convolutional Front-end / set of residual blocks / transposed convolutional Back-end 

② Local enhancer
- 마찬가지로 Convolutional Front-end / set of residual blocks / transposed convolutional Back-end 구조
- 하지만 Residual block의 Input이 다름.; Front-end의 아웃풋 feature map과 Global generator Back-end의 마지막 feature map을 element-wise sum함.

- Global generator을 학습시킨 뒤, local enhancer 학습 시킴.
- global한 정보와 local 정보를 효과적으로 합칠 수 있는 모델 구조.

2) Multi-scale discriminators
- 고화질 이미지 생성을 위해선 큰 receptive field를 가진 discriminator 필요. 일반적으로는 네트워크가 깊어지거나 커널 사이즈가 커지기 마련. 하지만 그렇게 될 경우 학습에 큰 메모리가 필요하고, 오버피팅 문제 등이 발생할 수 있음. 
- 따라서 동일한 구조지만 각기 다른 이미지 scale를 다루는 multi-scale discriminator 제안.

3) Improved adversarial loss
- feature matching loss based on the discriminator
- 이때 D는 단지 feature를 추출하는 역할

// 우리 태스크에 맞게 loss 변경해야할 것 같은데... How?

# Using instance map
- 최종적으로 object boundary를 모델 인풋으로 사용하기로 결정. (단순 segmentation map의 경우 주차되어 있는 여러 차 등이 구분되지 않고 붙어있는 것처럼 들어감.)
- 주변 4개의 픽셀과 하나라도 다른 값을 가질 경우 1로, 그렇지 않을 경우 0으로 하여 object boundary 생성
- Boundary map을 사용했을 때, 인접한 같은 종류의 객체가 더 명확한 경계를 갖는 것을 확인할 수 있었음.

// 사람 상반신의 경우 segmentation map이 온전한 정보 가짐. 적용할 필요 있을까?

# Learning an Instance-level Feature Embedding
- Generator의 인풋으로 additional low-dimensional feature channels 추가할 것 제안.
- 이 feature를 컨트롤해 이미지 합성 과정을 유연하게 컨트롤할 수 있음. (연속적인 값인만큼, 무한히 많은 이미지 생성 역시 가능함)
- 이 low-dimensional feature를 생성하기 위해 encoder(E) 이용. 
- Instance마다 같은 값을 부여하기 위해 E의 최종 아웃풋에 Instance-wise average pooling 적용.
- 최종적으로 네트워크에는 (s, E(x))가 인풋으로 들어감. 

+ Perceptual loss
: per pixel loss + style loss. perceptual loss는 pretrained 된 CNN 모델로부터 추출된 high-level image feature representation 간의 차이에 기반한다. 따라서 per-pixel loss보다 좀 더 robust하게 유사도를 측정한다. (per-pixel loss는 다른 pixel 값을 가질 경우 유사한 이미지여도 이를 다르다고 판단함.) Style transfer나 Super resolution과 같은 태스크에서 자주 사용된다.

- Pix2Pix HD의 경우 Pretrained 된 VGG 이용하여 구함.

 

[질문 노트]

Q. Feature matching loss, 우리 태스크에 그대로 가져가야할지?

Q. 모델의 복잡도, 깊이 문제인지? 다른 방법론이 필요한 것은 아닌지?

Q. 그 방법론을 self-supervised 세팅에서 어떻게 잘 적용할 수 있을지?

 

 

반응형