본문 바로가기

논문 리뷰

U-GAT-IT 리뷰

Keywords

  • CAM Module
  • AdaLIN

Contribution

  • CAM module을 이용해서, geometric change가 많이 필요한 상황에서도 좋은 결과를 얻었다.
  • AdaLIN이라는 새로운 normalization 방법을 제시하고, 이를 이용해 고정된 architecture와 hyperparameter로도 다양한 데이터셋에 대해 안정성을 확보했다.

 

CAM Module

yun905.tistory.com/38

 

CAM(Class Activation Mapping)

CNN에서 마지막 FCN을 제거하고 GAP(Global Average Pooling)을 적용하는 것은 대략 2015년 이후부터 자주 사용되는 방법이다. 위와 같이, feature map인 f1,f2...fk가 GAP를 거쳐 F1,F2...Fk(각각은 scalar)로..

yun905.tistory.com

 

CNN의 마지막에 붙은 classifier가 class score를 낼 때, 그 weight 값을 보면 어떤 feature map이 그 score에 가장 많이 기여했는가를 알 수 있다. 그 weight를 feature map과 곱하면 attention map이 된다. Auxiliary classifier를 두어서 score를 매기고 학습하게 해 이런 attention을 학습시킨다.

 

 

Generator는 encoder와 decoder로 구분할 수 있다. Encoder는 feature를 추출하고 decoder는 그 feature를 이용해서 이미지를 생성한다. Encoder가 추출한 feature map이 auxiliary classifier가 만들어 낸 attention과 곱해져서 decoder의 input이 된다.

 

 

Attention 부분의 notation은 위와 같이 생각할 수 있다.

 

이렇게 attention map을 input으로 주는 것은 다시 말해, source domain과 target domain을 구분되게 하는 부분이 어디인지를 강조해서 decoder에게 input으로 주는 것이다. 그러면 decoder는 그 부분을 집중해서 바꾸고, 덜 중요한 부분은 덜 바꾸게 된다.

 

 

Distcriminator는 encoder와 classifier로 나눌 수 있다. Encoder가 만든 feature map과 auxiliary classifier가 만든 attention 가중치가 곱해진 attention feature map이 classifier의 input으로 들어간다. Classifier는 attention map을 input으로 받아서 어느 부분을 집중해서 봐야 하는지 알 수 있다.

 

AdaLIN

  Layer normalization은 각 feature map의 통계량이 같다고 가정하고, instance normalization은 다르다고 가정한다. 따라서 layer normalization을 하면 원래 이미지의 content가 날아가는 경향이 있고, instance normalization은 잘 유지하는 경향이 있다. 저자의 생각은 이 두개를 적절히 섞고, 그 비율을 학습시켜서 다양한 상황에서 범용적으로 쓸 수 있는 모델을 만들자는 것이다. 수식으로 나타내면 아래와 같다.

 

 

풀어서 설명하면,

 

 

 

위와 같다.

 

Objective Function

adversarial loss

 

Adversarial loss로 least square loss를 사용했다.

 

 

cycle consistency loss
identity loss

 

여기까지는 새로울 게 없고,

 

 

generator의 cam loss

 

discriminator의 cam loss

 

이렇게 두 개의 cam loss가 추가되어 auxiliary classifier가 잘 하도록 요구하고 있다. 재밌는 점은 generator에서는 binary cross entropy loss를 사용했는데 discriminator에서는 least square를 사용하고 있다. 그에 대한 이유는 나오지 않는다. Pytorch 공식 구현체에서는 둘 다 mse를 사용한다.

 

 

 

최종적으로 이런 objective를 갖게 된다.

 

Results

 

Discriminator의 auxiliary classifier의 receptive field를 다르게 해서 local attention과 global attention을 만들어 내게 했다. b는 generator의 attention map이고, c와 d는 각각 discriminator의 local과 global attention이다. CAM을 사용하지 않았을 때는 충분한 shape deformation이 일어나지 않았음을 알 수 있다.

 

 

Generator의 decoder에 각각 다른 normalization method를 적용한 뒤의 결과이다. Instance normalization만을 사용하면 채널 별 통계량을 사용하기 때문에 세부적인 content는 잘 유지하지만 global style을 capture하지는 못한다. Layer normalization만을 사용하면 레이어 통계량을 사용하기 때문에 세부적인 content를 잘 유지하지 못한다. AdaIN과 GN과도 비교하고 자신들의 방법이 가장 좋다고 주장하고 있다.

 

 

 

Table 2에서는 user score를 보여주고 있고, table 3을 보면 FID대신 KID를 사용한다. Kernel Inception Distance(KID)는 데이터 수가 제한적일 때 특히 유용하다. FID는 적어도 20K 이상의 test data가 있을 때가 아니면 bias가 심하다.

'논문 리뷰' 카테고리의 다른 글

Training GANs with Limited Data  (0) 2021.01.23
Few-shot Knowledge Transfer for Fine-grained Cartoon Face Generation  (0) 2021.01.12
VDSR 리뷰  (0) 2021.01.02
Deep Knowledge Tracing 리뷰  (1) 2020.12.26
StarGAN 리뷰  (0) 2020.12.20