Nvidia가 2019년에 런칭된 Gaugan의 업데이트 버전인 Gaugan2를 발표했다. 이전 버전과의 차이점은 Text로만으로 Image를 생성할 수 있다는 점이다. Gaugan은 아래와 같이 스케치(왼쪽)을 사진으로 찍은 듯한 사실적인 이미지(오른쪽)로 변환시켜 준다.
하지만, Gaugan2는 오직 Text만으로도 이미지를 생성해준다. Gaugan2는 이름에서도 알 수 있듯이 적대적 생성 신경망(Generative Adversarial Networks, GAN)을 사용했다. GAN은 이미지 생성으로 이미 널리 알려져 있는 신경망이다.
원리
Gaugan은 GAN 신경망을 사용하는데, 사람이 텍스트 상자에 단어를 입력하면 인공지능 모델인 GAN이 해당 조건에 가장 적합한 이미지를 만들어 낸다.
GAN은 생성자(Generator)와 감별자(Discriminator)가 서로 경쟁하면서 실제와 가까운 이미지, 영상, 텍스트 등을 자동으로 만들어내는 신경망이다.
생성자(Generator)와 감별자(Discriminator)가 무슨 역할을 하는 걸까? 위조지폐범을 잡아내는 것으로 예를 들어보자. 생성자를 위조지폐범, 감별자를 경찰이라 생각하면 된다.
위조지폐범(생성자)은 위조 지폐를 최대한 진짜와 같이 만들어 경찰을 속이기 위해 노력하고, 경찰(감별자)은 이렇게 위조된 지폐를 진짜와 구별하려고 노력한다. 이런 과정을 반복하면서 두 그룹이 각각 서로를 속이고 구별하는 능력이 발전하게 된다. 궁극적으로는 감별자(Discriminator)가 실제 데이터와 가짜 데이터를 구분하지 못하게 만드는 것이 목표다.
특징
- 이 모델을 훈련시키기 위해 엔비디아는 세계 10대 슈퍼컴퓨터 중 하나인 NVIDIA Selene 슈퍼 컴퓨터를 사용했다.
- 약 천만 개의 고화질 풍경 이미지와 단어를 쌍으로 학습시켰다.
강점
딥러닝으로 고성능 서버를 사용해 대량의 데이터를 학습하면 무조건 잘 될 것 같지만 아니다. 심층 네트워크를 사용하여 학습할 때 입력 데이터를 그대로 학습시키면 학습이 불안정해질 수 있는데, 정규화 층을 중간에 끼우면 학습을 안정시켜 속도를 높일 수 것으로 알려져 있다.
정규화란 데이터의 특성들의 값의 범위를 비슷하게 만들어주기 위해 범위를 [0, 1] 사이로 만드는 것이다.
Gaugan의 정규화
기존의 모델들은 기존 Normaliziotion Layer를 거치면서 Image에 semantic한 부분이 convolution과정을 거치면서 손실되는 경향이 있었다.
이 문제를 해결하기 위하여 GauGAN에서는 정규화 층에 ‘SPADE(SPatially-Adaptive DEnormalization)’를 사용한다. SPADE는 Conditional Normalization Layer를 이용하여 convolution이 진행되어도 sematic image를 보존한다.
계속 이렇게 중간에 과정마다 spade residual block을 넣어줌으로써, sematic image에 대한 정보를 계속 보존할 수 있다.
ref
https://brunch.co.kr/@kakao-it/145 https://www.koreascience.or.kr/article/CFKO202022449680397.pdf