1. Deep Convolutional GAN - DCGAN
기존 GAN의 구조는 FC로 연결되어 있기 때문에 성능이 제대로 나오지 않았던 것이었다
DCGAN에서는 FC를 CNN으로 바꾸어 성능 향상을 하고자 하였다.
generator에서 transposed convolution을 사용하여 image를 upsampling하였다.
discriminator는 단순 convolutional network이다.
또한 DCGAN architecture guideline은 다음과 같다.
1. 미분이 불가능한 pooling layer를 제거하고 미분 가능한 convolution layer로 대체
2. batch normalization layer 추가
3. FC hidden layer 삭제
4. generator model에 ReLU 함수 적용, 출력 activation function은 tanh
5. discriminator의 모든 layer에 LeakyReLU를 적용하여 유연성을 더함
실험 결과)
- interpolation을 수행하여 이미지의 각도를 변경할 수 있음을 보임
- 산술 연산 (ex. 선글라스 낀 남성 - 선글라스 벗은 남성 + 선글라스 벗은 여성 = 선글라스 낀 여성)
contribution)
1. 대부분의 상황에서 언제나 안정적으로 학습하는 convolution GAN 구조를 제안
2. 벡터 산술 연산이 가능하여 generator를 semantic 수준에서 데이터를 생성할 수 있다는 점
3. discriminator가 학습한 필터들을 시각화하여 특정 필터들이 특정 물체를 학습했다는 것을 보임
4. 학습된 discriminator 모델이 다른 비지도 학습 알고리즘과 비교해서 뒤쳐지지 않는 분류 성능을 보임
2. LSGAN
LSGAN은 loss값을 변경하여 성능을 끌어올린 GAN 모델이다.
sigmoid 함수는 gradient vanishing 문제를 일으키므로 sigmoid cross entropy -> Least Square loss로 변경
boundary의 위쪽 = discriminator가 가짜라고 판단 / boundary의 아래쪽 = discriminator가 진짜라고 판단
분홍색 = generator가 생성한 가짜 이미지;
discriminator를 이미 속이는 임무를 완무한 것으로 간주. gradient vanishing 상태. generator update에 도움이 되지 않는다
하지만 저 데이터들은 real data들과는 거리가 멀다.
그저 boundary 아래에 있다는 이유로 update에 도움이 안되는 문제가 발생
LSGAN의 아이디어는 이미 discriminator를 속였더라도 더 정교하게 속이기 위해 실제 real과 동일한 수준으로 끌어올리자(=추가 학습하자)는 것
이를 위해 binary cross entropy loss 대신 decision boundary에서 멀리있는 sample들에게 penalty를 줄 수 있는 Least Square loss를 사용하자는 것
Least Square loss
ground truth와 predict값이 있을 때 그 둘의 차이(거리)를 제곱한 것
Least Square loss는 이 거리들을 최소화하는 방향으로 학습을 진행하는 것
이를 loss function으로 사용했을 때 위 오른쪽 그래프처럼 decision boundary가 나타난다.
3. Progressive Growing GAN = PGGAN
motive
- GAN을 고해상도로 만들면 discriminator가 생성한 이미지의 real/fake 여부를 구분하기 쉬워진다는 단점이 있음
- 고해상도로 만들어도 메모리 제약조건으로 batch size를 줄여야하고 줄이면 학습과정이 불안정해진다는 단점이 있음
핵심 아이디어
4x4 저해상도 이미지를 1024x1024 고해상도 이미지로 단계별로 학습하는 것
저해상도에서 보이는 abstract를 우선적으로 학습한 뒤 고해상도에서 보이는 concrete를 학습하는 것
장점
- 작은 이미지부터 점진적으로 학습하기 때문에 안정성 있다
- 처음부터 복잡한 질문을 하지 않기에 간단
- 저해상도에서 학습할 때 충분한 핛브을 하게되며 학습 시간이 짧음
-> Contribution: 1024x1024의 해상도까지 끌어올린 것
4. Super Resolution GAN - SRGAN
저화질의 이미지를 고화질의 이미지로 바꾸는 모델
기존 SR 모델의 목적함수가 MSE인데, 이 때 MSE는 평균제곱오차이기 때문에 전반적으로 smooth한 정보를 얻어서high frequency 성분을 갖는 detail(texture)을 표현하는 것이 어렵다. 이 점을 극복하기 위해 진행된 연구
metric = PSNR = 최대 신호대비 잡음비
- 높을수록 좋다
- 사람 인지와 일치되지 않는 품질 점수를 산출할 수 있다
- 이 연구에서는 실제 사람의 눈으로 봤을 때도 해상도가 높게 나올 수 있도록 만드는 게 목표
아이디어
- perceptual loss = content loss + adversarial loss
- pixel space에서 perceptual 유사성을 학습하기 위함 loss함수
- generator가 만든 N개의 저해상도 이미지에 대해 discriminator가 판별한 합이 작아지도록 함
- discriminator를 속이기 위한 loss함수
- 고해상도 이미지에서 저해상도 이미지를 빼고 제곱을 취해준 값의 합이 점점 줄어들도록 학습함
architecture
5. StarGAN
- 기존의 연구들은 이미지 도메인 쌍을 학습해야 했다. 이러한 결과로 모델의 scalability와 robustness가 떨어진다는 단점이 있었다.
- StarGAN은 하나의 generator에서 다른 도메인으로 transfer할 수 있도록 만들었다.
- 기존의 GAN처럼 real/fake만 출력하는 것이 아니라 어떤 task인지에 대한 domain 정보까지도 분류하도록 만들었다는 것
-> Discriminator는 결국 이미지와 domain의 두 개의 확률 분포를 만들어내는 것
https://roytravel.tistory.com/109
[컴퓨터 비전] All About GAN (Generative Adversarial Nets)
1. GAN 모델 개요 GAN이란 무엇인가? GAN은 Generative Adversarial Nets이라는 논문을 통해 나온 모델로 위와 같이 진짜와 동일해 보이는 이미지를 생성하는 모델이다. 그렇다면 우선 GAN은 언제 만들어졌고
roytravel.tistory.com
https://di-bigdata-study.tistory.com/12
[LSGAN] Least Squares Generative Adversarial Netorks 논문 정리
이번에는 LSGAN 논문에 사용된 핵심 아이디어와 원리에 대해 정리한 글이다. 기본 아이디어는 GAN에 있기 때문에 내용은 길지 않다. LSGAN 등장배경: Cross-Entropy의 vanishing gradient problem 기존의 WGAN을
di-bigdata-study.tistory.com
'DL_general' 카테고리의 다른 글
cosine similarity (0) | 2023.03.08 |
---|---|
auto encoder (0) | 2023.03.07 |
Federated learning (0) | 2023.03.06 |
SeMask (1) | 2023.03.03 |
attention과 self attention (0) | 2023.03.02 |