본문 바로가기
AIML 분야/Generative Model과 GAN

kaggle 첫번째: GAN 해보기

by 포숑은 맛있어 2021. 1. 25.
반응형

GAN은 진짜 처음 해본다.

kaggle을 둘러보다가 부담스럽지 않게 할 수 있는걸 발견했다.

 

input 이미지를 모네 그림처럼 바꿔주는 task이다.

dataset이 400MB 미만으로 딱히 크지 않고, kaggle 웹에서 지원해주는 정도의 환경에서도 얼마든지 학습할 수 있다.

근데 이따 올릴 코드 15에폭까지 돌리기 전에 자꾸 끊기긴 한다.

코드를 다 돌리고 inference output 만든거 옆에 깔끔하게 정리되어 나온다.

 

여기서 leader board는 MiFID 기준인데, 원래 FID score에서 training시의 memorization효과를 같이 고려한 수식이다.

 

현재 진행중이 challenge인데, google cloud TPU 홍보를 위한것인지 순위권에 들면 상금이 아니라 4주간의 TPU 사용권을 준다고 한다.

 

 

www.kaggle.com/c/gan-getting-started/overview

 

I’m Something of a Painter Myself

Use GANs to create art - will you be the next Monet?

www.kaggle.com

 

코드를 직접 짠건 아니고 여기 있는걸 돌려봤다.

www.kaggle.com/polo5cn/unit-creates-monet-paintings

 

UNIT creates Monet Paintings

Explore and run machine learning code with Kaggle Notebooks | Using data from I’m Something of a Painter Myself

www.kaggle.com

위 코드는 다시 github.com/eriklindernoren/PyTorch-GAN#unit 를 참고하였다. 이 페이지에는 다양한 GAN이 구현되어있으니 참고하기에 좋을 것 같다. 최근 모델까지 업뎃되지는 않은 것 같다.

 

이 코드는 UNIT(Unsupervised Image-to-Image Translation)이라는 모델을 사용하였는데, 이는 2017 NIPS에 소개된 논문이다.

arxiv.org/pdf/1703.00848.pdf

대충 보니까 Generator는 VAE로 구성되어있는데, 두장의 이미지가 있으면 둘이 shared domain을 공유할수 있음을 가정한다. 그래서 인코더에서 feature를 뽑아 latent variable z로 보내고, 이를 각각의 generator에 넣어 fake image를 생성한다.

그리고 discriminator에서 true/false를 판단한다.

shared block을 가지고 있어서 encoder 초반부와 generator 초반부에서는 파라미터를 G1-G2, E1-E2 이렇게 각각 공유한다. residual block 하나를 공유한다고 보면 된다. 

 

 

몇 에폭정도 돌리면 결과는 아래와 같다.

 

generated

 

 

음 언젠가 이어쓰도록 하자

반응형

댓글