Processing math: 100%
본문 바로가기
Data science/Computer Vision

DCL-GAN (Dual Contrastive Loss and Attention for GANs)

by 연금(Pension)술사 2025. 4. 7.

Motivation

  • GAN을 이용한 경우, 여전히 분산이 큰 이미지는 진짜/가짜 이미지의 구분이 쉬운 편 (분산이 크다?= 이미지가 매우 heterogenous한 특성이 있다=다양한 요소의 이미지. 예, 교회(스테인드글라스,문,건축양식)
  • Discriminator의 문제: 실제 데이터에 대한 학습을 간접적으로 하다보니 특징이 일반화가 안됨 (Discrimiator 입장에서는 실제 데이터 Pdata을 진짜 학습하기보다는, 실제데이터 분포 Pdata 와 가짜데이터 Pfake 사이의 차이를 구분하는데 집중하기 때문)
  • Generator 이용시 Attention의 효과에 대한 의문: CNN기반으로 이미지를 학습할 때,  먼거리의 이미지끼리 중요도를 고려하는 Long-range depdency을 처리하기 어려움. Atttention을 도입하기도 했지만, StyleGAN2이후로는 Attention없이 SOTA 성능을 달성해서, 진짜 attention 이 중요한지 확인이 필요.

 

Methods

[Reference (real)] ─┐
                    ├─► Siamese encoders → Reference-Attention → Real/Fake 판별
[Query (real/fake)] ┘
  • 대략 위와 같은 구조.
  • Input: 2장의 이미지 (Reference image: 항상 real data, Query Image: real or fake)
  • Encoder: 샴 인코더 (parameter sharing)
  • Reference-attention: Discrimiator내에 있는 장치로, query image가 진짜인지 가짜인지 reference 기준으로 판단할 수 있게 도와줌.
  • Contrastive learning: 대조학습을 주 학습목적으로 사용. Contrastive learning을 할 때, Anchor을 아래의 2경우로 나눠 학습
    • Case 1: Anchor가 실제이미지인 경우. 배치 내에서, Positive (real, 1) vs Negatives(다수)로 계산
    • Case 2: Anchor가 Fake이미지인 경우, 배치 내에서, Negative (fake, 1장) vs Positives(다수)로 계

 

 

손실함수

아래와 같이, 생성된 이미지(z N(0,Id)) 다수에 대해서, 하나의 진짜데이터 (x\~p(x)))을 구분하는 과정

아래와 같이, 실제 이미지(x\~p(x)) 다수에 대해서, 가짜 데이터 (G(z))을 구분하는 과정

이 둘의 총합으 총 로

 

Reference-attention

  • 참조이미지(reference image)와의 관계를 반영해서, 주이미지(primary image)의 특징이 조정된 텐서
  • Input: T\nRh×w×c
  • Query, Key, Value을 추출: 1x1 conv + leaky ReLu (형태는 유지+channel 축소)
  • Q픽셀에 대해서, Key은 인접픽셀모두을 혼합. V도 인접픽셀 모두하여, 원소별곱후 합친 것을 attention weight로 하여 Value(T)와 더하여 사용(residual version).

반응형