[GAN study] Some cool applications of GAN - GAN을 활용한 어플리케이션 소개

Gan 학습 로드맵 두번째 시간!

오늘은 GAN을 활용한 어플리케이션에 대해 공부해 볼 건데요! GAN이 어떻게 쓰일 수 있는지! 어디에 적용될 수 있는지 알아보는 시간을 가지도록 합시다~!! ✌️

이 글은 Jonathan Hui의 포스팅을 참고해 정리한 내용입니다!

Some cool applications of gan

0_3bbZGnvcwgN8BNkD

[Photo by SwapnIl Dwivedi]


처음 몇 년 동안엔 GAN 개발에서서는 주목할만한 진전이 있었다. 옛날 GAN으로는 호러영화에 나오는 무서운 얼굴같은 이미지가 우편 사이즈로 나왔었는데, 2017년 기준으로 gan은 진짜 사람이라고 착각하게 할 만한 1024 x 1024 사이즈의 이미지를 생성해냈다.

무제

앞으로 몇년동안 우리는 아마 GAN이 생성한 매우 높은 퀄리티의 비디오를 보게 될 것입니다. 광고 어플리케이션도 마찬가지이며, 사람들에게 GAN에 대한 영감을 불어넣기 위해 엄청 멋있는 어플리케이션들을 살펴보겠습니다~


Create Anime characters

게임 개발과 애니메이션 프로덕션은 매우 비싸며 각각의 반복적인 일을 위해 많은 프로덕션 아티스트를 고용해야합니다. 하지만 GAN은 캐릭터를 자동으로 생성할 수 있으며 색상도 입힐 수 있습니다! 즉! 그런 반복적인일을 한다는 것은 이제는 비생산적입니다! GAN이 알아서 만들어주기 때문이죠.

무제 2

대량생산된 캐릭터 이미지들입니다. 꽤 그럴싸한 캐릭터들이 만들어지네요.. 애니메이션도 이젠 양산형 산업이 되는 걸까요..!

생성자와 식별자는 컨볼루션 레이어와 batch-normalization, skip connection 된 ReLU들의 여러 레이어들로 구성되어 있습니다. 아래 이미지를 참고하면 좋을 것 같습니다.

무제 3

👉 Towards the Automatic Anime Characters Creation with Generative Adversarial Networks


Pose Guided Person Image Generation

포즈에 대한 추가적인 입력으로 한 이미지를 다른 포즈들로 변환할 수 있는 어플리케이션입니다.

이 어플리케이션의 작동 방식을 예를 들어 설명하면, 아래 그림의 오른쪽 위 이미지는 ground truth(원래 실제 이미지) 이고 오른쪽 아래의 이미지는 generated image(생성된 이미지)로 포즈가 마뀐 것을 확인해 볼 수 있죠?!

무제 4

생성된 이미지들을 정리한 결과는 다음과 같습니다. 진짜 사람이 직접 포즈를 취한것 처럼 자연스럽네요~! 😳👍👍

무제

구조는 2-stage 이미지 생성자와 식별자로 구성되어있습니다. 생성자는 메타데이터(pose) 이미지와 원본이미지를 이용해 재구축하며 식별자는 원본이미지를 CGAN 구조에 레이블 인풋값의 한 부분으로 사용합니다.

무제

👉 Pose Guided Person Image Generation


CycleGAN

Cross-domain transfer GAN은 상업적 어플리케이션의 첫 회분 입니다. 이러한 GAN은 이미지를 한 영역(실제 풍경)에서 다른 영역(모네 그림 혹은 고흐 그림)으로 변환합니다.

무제 2

예를들어, CycleGAN은 얼룩말을 말로 바꿀 수 있습니다.

무제

CycleGAN 은 한 영역에서 다른영역 그리고 한 영역에서 반대 방향으로 이미지들을 만들기 위해 두 가지 네트워크인 G와 F를 만듭니다. 그리고 식별자 D는 이미지가 얼마나 잘 생성되었는지 평가하게 됩니다. 예를 들어 G가 실제 이미지에서 반고흐풍의 그림으로 변환하면 Dy는 그 이미지가 실제인지, 생성된 이미지(fake)인지 구분합니다.

Domain A -> Domain B:

무제

이 과정을 역방향으로 반복.

Domain B -> Domain A:

무제

👉 CycleGAN


StarGAN

StarGAN은 한 영역에서 다른 영억으로의 번역을 위한 image-to-image 번역입니다. 예를 들어 행복한 얼굴이 주어지면 우리는 이 얼굴을 공포에 찬 얼굴로 변환하고 싶다고 가정해봅시다.

아래 이미지를 참고하면,

무제

(b)에서 생성자가 input 이미지와 target domain label(화가난 얼굴 이미지라고 가정하자) 을 바탕으로 가짜 이미지를 생성하면, (c)에서 주어진 가짜 이미지와 원본 영역의 이미지(행복한 얼굴이라 가정)를 가지고 생성자를 이용해 이미지를 재구축 한다.

(d)에서는 실제이미지와 가짜 이미지를 식별자에게 제공해 도메인 분류 뿐 아니라 실제인지 아닌지 레이블을 지정한다. 비용함수에는 이미지와 레이블을 식별하는 데 필요한 판별자 비용과 함께 재구성 오류가 포함된다.

무제

👉 StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation


PixelDTGAN

유명인 사진을 기반으로 상품을 홍보하는 것은 패션 블로거와 온라인 쇼핑몰에서 매우 흔합니다. PixelDTGAN은 이미지로부터 옷 이미지와 스타일을 만들어냅니다.

무제


무제

이렇게 되면 티비에서 본, 유튜브에서 본 그 옷! 을 바로 구할 수 있게 되는 걸까요~?! ㅎㅎ

👉 Pixel-Level Domain Transfer


Super resolution

이번엔 저화질 이미지에서 고화질 이미지로 만드는 GAN 기술에 대해서 소개하고자 합니다. 이 기술은 상업계에 빠르게 또, 인상적인 결과를 보여주고 있는 분야입니다.

무제

많은 GAN 디자인들과 비슷하게 이 모델은(SRGAN) 많은 컨볼루션 레이어와 배치 정규화, relu, 그리고 skip connection 들로 구성되어있습니다.

무제 2

👉 Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network


Progressive growing of GANs

Progressive GAN 은 광고 같은 이미지 수준을 보여주는 최조의 GAN 중 하나입니다. 아래는 GAN으로 생성된 1024 × 1024의 연예인 이미지 입니다.

무제 3

이 기법은 분할정복(divide-and-conquer) 전략을 이용해 학습을 좀 더 실제적이게 만듭니다. 컨볼루션 레이어들은 학습될 때 2x resolution 을 만들도록 학습됩니다.

무제 4

9 phases에서는 1024 × 1024 이미지가 생성됩니다.

무제 5

👉 PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION


StyleGAN2

StyleGAN2 는 고화질의 이미지를 생성해냅니다. 아래 이미지를 보면 피사체는 정확히, 배경은 살짝 흐림으로써 더 고화질스러운 이미지가 완성이 된 것을 볼 수 있습니다.

무제 6

High-resolution image synthesis

고화질 이미지 합성은 단순한 이미지 세그멘테이션(이미지 분할)이 아닙니다! segmantic map(분할된 맵)으로 부터 이미지를 생성해내는 것입니다! 오히려 반대인 격이죠.

한편, 표본을 수집하는 것은 비용이 많이 들기 때문에, 개발 비용을 낮추기 위해 생성된 데이터로 훈련 데이터셋을 보완하고 있습니다. 이 기술로 동네를 순항하는 것 보다는 자율주행차를 학습시키는 비디오를 생성하는 것이 더 편할 것입니다.(무슨말이지?😳😳)

무제 7

네트워크 설계 :

무제

👉 pix2pixHD


GauGAN

GauGAN 은 입력된 세그먼트 레이아웃으로 사실적인 이미지를 합성합니다.

무제 2


Text to image (StackGAN)

텍스트를 이미지로 만드는 것은 영역-전이 GAN 의 초반 어플리케이션 중 하나입니다. 한 문장을 입력으로 넣으면 에 맞는 다수의 이미지들이 생성됩니다.

무제 3

👉 StackGAN github

무제 4

👉 StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks

Text to Image Synthesis

텍스트를 이미지로 합성하는 다른 유명한 네트워크 구조:

무제 5


Face synthesis

다른 포즈의 얼굴들을 합성 : 하나의 입력 이미지로 다른 각도에서 보이는 얼굴들을 만들어 내는 기술입니다. 예를 들어 우리는 이 기술로 이미지를 변환시켜 얼굴인식을 더 손쉽게 할 수 있습니다.

무제 6

무제

👉 Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and Identity Preserving Frontal View Synthesis


Image inpainting

수 년 동안 이미지를 재건하는 것은 중요한 주제였습니다. GAN은 이미지를 재건하는데 쓰이며 사라진 부분을 생성해 채워넣을 수 있습니다.

무제 2

👉 Context Encoders: Feature Learning by Inpainting


Learn Joint Distribution

얼굴 특징 확률( P(금발, 여성, 웃음, 안경), P(갈색, 남성, 웃음, 안경없음), 등등…)들의 조합으로 GAN을 생성하는 것은 비용이 매우 큽니다. 딱봐도 확률에 들어갈 조건이 많네요. 차원의 저주는 GAN이 지수 함수의 크기로 커져버리게 합니다.

여기서 잠깐! 차원의 저주란?? 앞서 말한 것 처럼 하나의 값을 구해야하는데에 따른 조건이 너어무 많을 경우 오히려 답을 잘 못 찾게 되는 것을 말합니다.

대신, 우리는 각각의 데이터 분배를 학습하고 데이터를 조합해 새로운 분포를 만들어낼 수 있습니다. (i.e. 다른 속성 조합들)

CoGAN learns the joing probability $P(x_1, x_2)$ by sampling $x_1 ~ P(x_1)$ and $x_2 ~ P(x_2)$

무제 3

무제 4

👉 CoGAN : Coupled Generative Adversarial Networks


DiscoGAN

DiscoGAN은 매칭 스타일을 제공한다 : 많은 잠재된 어플리켕션. DiscoGAN은 레이블이나 페어링 없이 교차된 영역의 관계를 배웁니다. 예를 들어, 한 영역(핸드백) 으로부터 다른영역(신발)로 스타일을 성공적으로 전이시킬 수 있습니다.

무제 5

DiscoGAN 와 CycleGAN은 네트워크 구조가 매우 비슷합니다. 아래 이미지 참고!

무제 6

👉 DiscoGAN


Pix2Pix

Pix2Pix 교차 도메인 GAN의 논문에서 자주 인용되는 이미지 에서 이미지로의 변환입니다. 아래 이미지와 같이 위성 이미지를 지도(왼쪽 하단)로 변환하는 것을 볼 수 있습니다.

무제

👉 Pix2Pix


DTN

DTN은 그림으로부터 이모티콘을 생성합니다.

무제 2

무제 3

👉 Unsupervised Cross-Domain Image Generation


Texture Synthesis

무제 4

👉 Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks

Image editing (IcGAN)

특정 속성으로 이미지를 재건축하거나 편집한다.

무제 5

무제 6

👉 IcGAN


Face aging (Age-cGAN)

약간 사진 어플로도 많이 쓰이는 기법들이 GAN에서 보이는 것 같다.

무제 7

무제 8

👉 FACE AGING WITH CONDITIONAL GENERATIVE ADVERSARIAL NETWORKS


DeblurGAN

DeblurGAN은 모션 디블러링을 수행합니다. 여기서, 디블러링(deblurring)은 이미지에서 흐릿한 아티팩트를 제거하는 프로세스를 말합니다. 그런데 논문을 살짝 살펴보니 제거하기 보단 선명하게 만들어 낸다라고 보면 될 것 같습니다. 아마 흐릿한 것을 제거하는게 아닐까요..!

무제 9

👉 DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks


Neural Photo Editor

내용기반 이미지 편집기 : ex) 헤어밴드를 늘리는 것

무제무제 3

👉 Neural Photo Editor


Refine image

이미지를 정제하는 기법. 여기엔 설명이 없네요😂 따로 찾아봐야겠습니다.

무제 4


Object detection

이것은 GAN으로 기존 솔루션을 향상시키는 하나의 응용 프로그램입니다. GAN으로 OD 라니.. 응용분야가 무궁무진하다.

무제 6

👉 Perceptual Generative Adversarial Networks for Small Object Detection


Image blending

이미지들을 블렌딩한다.

무제 7

👉 GP_GAN

Video generation

새로운 비디오 시퀀스를 만들어내는 기법입니다. 배경이 어떤건지 인식하고 forebround action에 새로운 시간 시퀀스를 만들어냅니다. 한마디로 배경에서 피사체를 분리해 피사체 부분이 1-2초 후에 하게 될 모션을 예측해 보여주게 됩니다. 미래에는 엄청난 기술이 나올것 같은 기분이 드네요👍🏻


Generate 3D objects

3D 물체 생성은 GAN으로 3D 객체를 생성할 때 자주 인용되는 논문 중 하나입니다.

무제 8

👉 Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling


Music generation

GAN은 이미지가 아닌 분야에서도 활용될 수 있습니다. 이번의 음악 작곡 처럼 말이죠😲👍

무제 9

무제 10

👉 MIDINET: A CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORK FOR SYMBOLIC-DOMAIN MUSIC GENERATION


Medical (Anomaly Detection)

GAN은 또 다른 산업에서도 가능한데요! 의약쪽에서 종양을 감지하는 것처럼요!

무제 11

👉 Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery


와~ 기나긴 여정이 끝났습니다!!

이렇게 많은 GAN application 들을 훑어보았는데요,,, 생각보다 GAN의 응용분야가 많아서 놀랐습니다. ㅎㅎ 연구주제가 더 산으로 갈거같은 이 느낌… 하나하나 논문을 읽어보고 또 논문에 대해 추후 포스팅을 하도록 하겠습니다..! 😘

댓글남기기