AI

GAN을 이용한 가상 메이크업

이번 포스팅에서는 콰라소프트에서 인턴을 하며 공부했던 모델들 중에 하나인 GAN (Generative Adversarial Network) 모델에 대해 소개하겠습니다. 수학적인 이론보다는 각 모델들의 결과에 초점을 두어서 소개하겠습니다.

 

GAN (Generative Adversarial Network) 이란

GAN은 무슨 모델일까요? 영문을 그대로 직역하면 ‘생성적 적대 신경망’으로 해석됩니다. 번역해도 딱히 잘 와닿지가 않으니, 한 단어씩 다시 살펴볼게요.

이름의 Generative에서 우리는 GAN이 무엇인가를 생성하는 모델이라고 유추할 수 있습니다. 모델이 스스로 그림을 그리거나 문장을 만들어내는 것처럼 어떠한 유형의 데이터를 생성해내는 것이죠.

그럼 Adversarial은 어떤 의미를 갖고 있을까요? GAN은 크게 두 부분(생성자 Generator와 식별자 Discriminator)으로 나누어지는데, 이 두 모델이 서로 대립 하며 학습이 진행됩니다.

즉, GAN은 내부에서 두 개의 모델이 서로 경쟁하며 원하는 데이터를 잘 만들어낼 수 있도록 학습되는 모델이라는 것인데, 과연 내부에서 어떠한 경쟁이 일어날까요?? 생성자와 식별자는 무슨 역할을 해주는 것일까요?

여기서부터는 GAN 모델을 2014년에 처음 발표한 Ian Goodfellow의 예시를 인용하겠습니다. 여기에 지폐위조범과 경찰이 있습니다. 지폐위조범은 위조 지폐를 만드는데 경찰을 속이기 위해 최대한 진짜 같은 지폐를 만들려고 노력을 합니다. 한편, 경찰은 이렇게 지폐위조범이 만든 위조 지폐를 진짜 지폐와 구별해내려고 최대한 노력합니다. 이렇게 서로 경쟁하다보면 시간이 지날수록 경찰은 진짜 지폐와 위조 지폐를 감별해내는 능력이 점점 발전하게 되고, 지폐위조범은 진짜 같은 지폐를 만들어내는 실력이 점점 발전하게 됩니다. 최종적으로 저희는 이렇게 완벽한 지폐를 만들어내는 지폐위조범을 데려와서 진짜 같은 데이터를 만들어내게 합니다^^

출처: Karras, Tero, et al. “Progressive growing of gans for improved quality, stability, and variation.” arXiv preprint arXiv:1710.10196(2017).

위 사람들은 실존하는 사람이 아닌, GAN 모델이 그려낸 얼굴들입니다.

 

GAN의 여러 모델들

GAN은 2014년에 발표되었지만 붐을 일으킨 것은 2년 쯤 지난 2016년이었습니다. 많은 학자들의 관심을 받으며 GAN의 아이디어를 발전시킨 정말 다양한 모델들이 나왔는데요. 여기에서는 그 중 Image Translation에 관련된 몇 개의 모델을 간단히 소개할게요.

Image Translation 기술은 원본 이미지를 원하는 목표의 이미지로 변형시켜주는 기술이에요. 간단한 예시로는 흑백사진을 컬러사진으로 색칠해줄 수도 있고, 사람 이미지를 캐릭터로 그려낼 수도 있죠. 젊은 사람의 사진을 나이 든 모습으로 변환해 줄 수도 있고, 정말 다양한 방면으로 활용 가능한 기술입니다.

(1) Pix2Pix

픽셀과 픽셀을 직접 비교하는 모델인 Pix2Pix 모델은, 일대일로 정확히 Pair를 이루는 데이터셋에서 작동합니다. 흑백 <–> 컬러 사진, 위성지도 <–> 그래픽 지도 등등 정확한 쌍을 이루는 데이터들에서 적용될 수 있습니다.

출처: Isola, Phillip, et al. “Image-to-image translation with conditional adversarial networks.” arXiv preprint (2017).

특히 이 모델은 테두리만 그리면 고양이를 그려주는 edge2cats 모델로 유명하죠.

출처: https://affinelayer.com/pixsrv/

(2) CycleGAN

위에 소개한 Pix2Pix 모델은 매우 강력하긴 하지만, 일대일 쌍을 이루는 데이터가 없으면 학습이 어렵다는 단점이 있습니다. 이런 문제를 해결하면서 Image Translation이 잘 되게 나온 모델이 CycleGAN 입니다. CycleGAN은 꼭 쌍을 이루지 않는 두 개의 데이터 그룹만 있으면 학습이 가능하다는 장점이 있습니다.

출처: Zhu, Jun-Yan, et al. “Unpaired image-to-image translation using cycle-consistent adversarial networks.” arXiv preprint (2017).

그래서 이 모델을 소개한 논문 저자는 얼룩말과 말을 서로 치환해주고, 모네의 그림을 사진처럼 만들어내는 것과 같이 다양한 방식으로 Image Translation을 성공시킵니다.

(3) StarGAN

마지막으로 소개할 모델은 한국에서 제시한 모델인 StarGAN 입니다. Pix2Pix 모델이나 CycleGAN 모델은 두개의 도메인(데이터 그룹)에서만 동작이 되고, 여러 개의 도메인 사이에서의 Image Translation을 하기 위해서는 각 쌍의 도메인마다 모델을 새로 만들어줘야 하는 한계가 있습니다. (N개의 그룹이라면 필요 모델 개수: NC2개) StarGAN은 이 문제를 해결하여 하나의 모델로 모든 도메인을 커버할 수 있게 만든 모델입니다.

출처: Choi, Yunjey, et al. “Stargan: Unified generative adversarial networks for multi-domain image-to-image translation.” arXiv preprint 1711 (2017).

위 이미지를 보면 하나의 사람 얼굴 사진으로 머리색, 성별, 나이, 피부, 표정 등 다양한 도메인을 동시에 변환시켜줍니다. 놀랍죠?

 

가상 메이크업

콰라에서 인턴을 하면서 처음으로 시작한 프로젝트는 가상 메이크업이었고 이를 위해 Image Translation 모델로 Pix2Pix 를 골랐습니다. 이미지 사이즈는 128×128로 축소하여 사용하였고, 비율이 안 맞는 사진들에 대해서는 zero-padding을 해줬습니다.

원래의 얼굴에 화장을 입혀줄 수도 있지만, 반대방향으로 학습시키면 화장을 지울 수도 있겠더라고요!(ㅋㅋ) 그래서 양쪽 방향으로 모두 모델을 학습시켜보았습니다.

(1) 쌩얼 → 화장

(2) 화장 → 쌩얼

origin이 실제 사진이고, 오른쪽 이미지가 GAN 모델이 생성해낸 이미지입니다. 생각보다 훨씬 잘 나오네요!

네, 그래서 여기까지가 GAN을 이용한 가상 메이크업 프로젝트였습니다. 실제로 GAN 모델은 꼭 이미지 분야에서뿐만이 아니라 NLP나 일반적인 딥러닝 모델들에서도 많이 적용이 가능하고 적용을 시키는 연구가 많이 되고 있답니다.

더불어 콰라소프트에서는 특정 분야에 국한되지 않고 다양한 딥러닝 & 머신러닝 기술들을 적극 수용할 수 있도록 많은 연구와 리서치를 하고 있답니다.

Tags

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Close