[DL] GAN

박경국·2022년 3월 27일
0

Deep Learning

목록 보기
15/15
post-thumbnail

이번 포스팅에서는 GAN의 개념과 모델의 학습 과정에 대해 간단히 정리해보곘습니다.

1. GAN

GAN은 실제와 유사한 데이터를 만들어내는 생성 모델입니다. 이제 딥페이크 영상은 많이 익숙하실 것 같습니다. 딥페이크는 기존 이미지들을 활용하여 기존 이미지의 특징을 반영한 이미지를 만들어내는 방식이죠. GAN은 이러한 딥페이크의 기반이 되는 기술입니다. GAN이 작동하는 구조를 한 번 살펴보겠습니다.

GAN은 두 가지 모델이 결합된 모델입니다. 하나는 Generator(생성자)라는 모델로 새로운 이미지를 만들어내는 모델입니다. 입력 데이터의 특징을 포착해서 입력 데이터와 동일한 데이터를 만들기 위해 노력하는 모델입니다.

다른 하나는 Discriminator(판별자)입니다. 판별자는 생성자가 만든 이미지가 진짜인지 아닌지 판별하는 모델입니다. 생성자는 판별자를 속이기 위해 더 정교하게 이미지를 만들어내려고 노력하고, 판별자는 생성자에게 속지 않기 위해 이미지를 더 정교하게 검증합니다. 처음에는 생성자와 판별자 모두 성능이 그리 좋지 않지만 학습을 거듭하면서 점점 발전하게 됩니다.

학습을 마친 GAN 모델이 실제와 유사한 데이터를 생성하면 판별자는 실제와 가짜를 잘 구분하지 못하게 되고, Accuracy는 0.5에 수렴하게 됩니다.

2. Cycle GAN

앞서 설명한 GAN은 학습한 이미지와 유사한 이미지를 만들어내는 모델입니다. Cycle GAN을 활용하면 특정 이미지의 도메인 특성을 다른 이미지에 적용할 수도 있습니다. 갈색 말을 얼룩 말로 바꾸거나 여름 산을 겨울 산으로 바꾸는 등의 작업이 가능합니다.

기존 Pix2Pix라는 모델이 위와 CycleGAN과 비슷한 task를 수행하지만, Pix2Pix는 학습 데이터에 대해 label을 무조건 짝지어주어야 하는 단점이 있습니다. CycleGAN은 유사한 데이터를 서로 짝짓지 않아도 데이터를 학습할 수 있다는 장점이 있습니다. Cycle GAN은 두 개의 생성자와 두 개의 판별자로 구성되어 있는데, 데이터는 두 개의 생성자와 판별자를 순환하면서 새로운 데이터를 만들고, 새롭게 만들어진 데이터는 다시 생성자에 들어가서 원본 데이터로 돌아갑니다.

각각의 과정에 판별자가 개입하여 변환 결과의 loss를 측정하여 새로운 데이터를 제대로 만들었는지, 원본의 형태를 잃지 않았는지 판별합니다. 이렇게 Cycle GAN은 원본 데이터의 특징과 너무 멀어지지 않으면서(원본 데이터의 도메인 특징을 보존하면서) 새로운 이미지를 만들어낼 수 있습니다. 이렇게 생성자와 판별자를 순환하다 하여 CycleGAN이라는 명칭이 붙었습니다.

0개의 댓글