※ 아래 글은 정보통신기술진흥센터(IITP)가 발간하는 주간기술동향 1855호(2018. 7. 18. 발행)에 기고한 원고입니다.


▶ IITP에서 PDF 포맷으로 퍼블리싱한 파일을 첨부합니다. 가독성이 좋으니 참고하시기 바랍니다.

오픈AI, 위화감 없이 두 얼굴을 합성해 주는 ‘글로우’ 기술 발표.pdf



인공지능 관련 비영리 연구기관으로 설립된 오픈AI(OpenAI)’는 위화감 없이 두 얼굴 사진을 합성할 수 있는 기술인 ‘Glow(글로우)’를 발표


오픈AI의 연구원인 프라풀라 다리왈과 더크 킹마에 의해 개발된 글로우는 가역 1×1 중첩(invertible 1x1 convolutions)’ 기술을 이용하는 이미지 생성 인공지능임


글로우는 두 사진을 합성할뿐더러 합성의 정도를 조절할 수 있는데, 가령 왼쪽 입력 창에 천체 물리학자 닐 디그래스 타이슨의 얼굴을 넣고, 오른쪽 입력 i창에 여배우 라시다 리 존스의 얼굴을 넣은 뒤 어느 쪽을 많이 반영할 것인지 조작할 수 있음


Glow: Better Reversible Generative Models

(클릭하면 링크 사이트에서 두 얼굴 합성을 체험해 볼 수 있습니다)


합성 창의 MIX 버튼 위치를 중앙 위치로 설정하면 두 사진 이미지를 균일하게 합성하게 되는데, 결과는 실재 인물일 것 같은 자연스러운 남성의 얼굴이 생성됨


MIX 조절 버튼을 왼쪽으로 옮기게 되면 결과 값은 왼쪽 입력 창에 있는 디그래스 타이슨의 특징이 더 강하게 반영하지만, 이 역시 MIX가 중앙일 때 나온 것과 마찬가지로 상당히 자연스러운 느낌을 줌


MIX 조절 버튼을 오른쪽으로 옮기면 당연히 리 존스의 얼굴 특징이 더 많이 반영되며, 결과 값은 약간 중성적 느낌이 나는 여성의 사진을 생성함


오픈AI는 글로우를 더 나은 가역적 생성 모델(better reversible generative model)'이라 설명하고 있는데, 한쪽 이미지와 다른 한쪽의 이미지 사이를 쉽게 오가며 다양한 합성 이미지를 생성할 수 있다는 뜻을 담고 있음

 

<자료> OpenAI Blog

[그림 1] 글로우를 이용한 두 사진의 다양한 합성

 

글로우는 얼굴 사진의 합성 외에도 사진에 나이, 수염, 미소등의 속성을 추가하여 이미지를 자연스럽게 변화시키는 기능도 제공함


<자료> Fast Company

[그림 2] 얼굴 속성 값의 변화


글로우는 학습한 이미지를 토대로 자동으로 레이블을 붙일 수 있는 것도 특징인데, 데모용으로 준비된 3만 명의 얼굴 사진을 학습시키면 자동으로 미소, 나이, 가는 눈, 금발, 수염등의 레이블을 설정함


자동으로 설정된 레이블은 나중에 자유롭게 조작할 수 있으며, 새로 입력된 이미지에 속성 변화를 추가할 수 있음


가령 왼쪽 입력 창에 유명 AI 연구자인 제프리 힌튼의 얼굴 사진을 세팅하고, ‘웃음-나이-금발-턱수염등의 속성 값을 최대로 하고, ‘가는 눈속성 값을 최대로 하면(눈 크게 뜨기 설정), 오른쪽의 출력 창에 설정을 반영한 변경된 사진이 생성됨


수염이 검은 것이 약간의 위화감을 주기는 하지만, 실재한다고 해도 이상하지 않은 남성의 얼굴이 생성되며 AI가 독자적으로 판단해 만들어 낸 것 같은 느낌은 주지 않음


오픈AI는 글로우를 깃허브(GitHub)에 공개해 누구나 자유롭게 사용해 보도록 하고 있음(https://github.com/openai/glow)


글로우를 동작시키기 위해는 기계학습 오픈소스 라이브러리인 텐서플로우(TensorFlow)와 우버가 만든 텐서플로우용 오픈소스 분산 딥러닝 프레임워크인 호로보드(Horovod)가 필요하며, 구체적인 조작 방법 등은 글로우 문서에 설명되어 있음


문서는 https://d4mucfpksywv.cloudfront.net/research-covers/glow/paper/glow.pdf에서 다운로드 받을 수 있음


두 연구원은 한 사진에서 다른 사진으로 넘어가는 도중의 변환 이미지 완성도에 대해 부자연스러운 합성이 보인다, 보다 자연스러운 변화를 주기 위해 자동회귀모형(autoregressive model)VAE 기법을 사용해 개선하고 싶다는 뜻을 밝히고 있음


VAE(Variational Autoencode, 변동 자동 인코딩)는 딥러닝 모델 중 하나로, 학습 데이터를 바탕으로 그 특징을 파악하여 학습한 데이터 세트와 비슷한 데이터를 생성할 수 있음