from IPython.core.display import display, HTML
display(HTML("<style>.container { width:90% !important; }</style>"))
⛳ 인공지능으로 세상에 없던 새로운 패션 만들기 ⛳¶
▶ 학습 전제¶
Convolution 의 padding, stride 등의 기본 개념을 알고 있다.
교차 엔트로피(Cross Entropy) 등의 손실 함수, 최적화 함수 등 딥러닝의 기본적인 학습 알고리즘을 알고 있다.
Tensorflow 를 활용해 신경망을 학습시키는 코드를 다뤄본 적이 있다.
간단한 판별 모델링(분류, 회귀 등) 의 개념을 알고, 실습해 본 적이 있다.
▶ 학습 목표¶
생성 모델링 개념을 이해하며 판별 모델링과의 차이 알기
Pix2Pix, CycleGAN 등의 이미지 관련 다양한 생성 모델링의 응용을 접하며 흥미 가지기
Fashion MNIST 데이터셋의 의미를 알기
생성적 적대 신경망(GAN) 의 구조와 원리 이해
Tensorflow 로 짠 DCGAN 학습 코드를 익히며 응용하기
▶ 목차¶
없던 데이터를 만든다. 생성 모델링
여러 가지 생성 모델링 기법 알아가기
패션을 다자인 하려면? 먼저 패션을 배우자
그림을 만들어내는 화가 생성자(Generator), 평가하는 비평가 구분자(Discriminator)
생성 모델이 smart 해지기 위한 방법
1. 없던 데이터를 만들어 내는 생성 모델링¶
✅ 생성 모델링(Generative Modeling)을 다뤄보기 전에,
생성 모델링은 무엇이고 어떤 것을 목표로 하는 것인지,
그리고 주요 생성 모델링 기버벵는 무엇이 있는지 살펴보자.
생성 모델링은 지금까지 접해 보았던 기본적인 딥러닝 모델과는 조금 다르다고 하는데,
무엇이 다른 걸까???❓❓❓
만약 직접 가위, 바위, 보에 해당하는 사진을 찍어 데이터셋을 만들고,
각 이미지를 알맞는 카테고리로 분류 할 수 있도록 학습했다고 가정해보자.
이러한 모델은 판별 모델링(Discriminative Modeling) 이라고 부른다.
말 그대로 입력받은 데이터를 어떤 기준에 대해 판별하는 것이 목표인 모델링인 것 이다.
반면, 생성 모델링(Generative Modeling) 은 말 그대로 없던 데이터를 생성 하는 것이 목표이다.
가위, 바위, 보에 대입해 본다면 다양한 가위, 바위, 보가 담인 데이터셋에서 각 이미지의 특징을 학습해
그와 비슷한 새로운 사진을 만들어 내야 하는 것이다.
즉, 판별 모델과 생성 모델을 한 마디로 정리하면
판별 모델: 입력된 데이터셋을 특정 기준에 따라 분류하거나, 특정 값을 맞추는 모델
생성 모델: 학습한 데이터셋과 비슷하면서도 기존에는 없던 새로운 데이터셋을 생성하는 모델
생성 모델링은 응용방법에 따라 큰 잠재력이 있는 분야이다. 무언가를 생성하는 인공지능 기술을 통해 어떤 것이 가능할까?
1. 생성 모델로 다른 판별 모델을 학습시키는 데에 필요한 데이터를 만들어낸다. 2. 베토벤의 음악을 학습한 후, 그와 비슷한 분위기의 새로운 음악을 만들어낸다. 3. 글을 생성하는 방법을 학습한 모델로 기사 또는 소설 등을 창작해낸다. 4. 여러 사람의 얼굴을 학습해서 세상에 없는 사람 얼굴을 만들어낸다.
영상의 초반부에 소개된, 생성 모델로 기존의 디자인을 개선한 예 세 가지
1. 안테나의 구조 2. 우주 탐사선 3. 모형 치아
영상에서는 간단한 피아노 선율만을 입력하면 기타, 드럼, 베이스 등의 다른 악기 모두가 어울리는 복합 음악을 만들어내는 DeepComposer를 시연하였다. 이 생성 모델에는 두 가지 네트워크가 사용되고 있는데, 그 두 가지는 무엇인가?
1. 생성자(Generator) 2. 판별자(Disriminator)
DeepComposer의 생성자(Generator)와 판별자(Discriminator)는 각각 무엇에 비유되었나? 그 비유의 의미는 무엇인가?
생성자가 오케스트라처럼 직접 음악을 연주하여 만들어내는 모델이라면,
판별자는 오케스트라가 연주한 음악을 평가하여 오케스트라가 만들어 내는 음악이 점점 더 좋아지게 만드는 지휘자의 역할을 하는 모델
2. 여러 가지 생성 모델링 기법 알아가기¶
2-1. Pix2Pix¶
▶ 그림을 사진으로 변환해 보자: Pix2Pix
Pix2Pix 는 간단한 이미지를 입력할 경우 실제 사진처럼 보이도록 바꿔주는 모델로 많이 사용된다.
모델은 아래 그림처럼 단순화된 이미지(Input Image) 와 실제 이미지(Ground Truth) 가 쌍을 이루는 데이터셋으로 학습한다.
왼쪽의 Input Image
를 입력받으면, 내부 연산을 통해 실제 사진과 같은 형상으로 변환된 Predicted Image
를 출력한다.
학습 초기에는 모델이 생성한 Predicted Image
가 Ground Truth
이미지와 많이 다르겠지만,
계속해서 Ground Truth
와 얼마나 비슷한지 평가를 통해 점차 실제와 같은 결과를 만들게 된다.
이렇게 한 이미지를 다른 이미지로 픽셀 단위로 변환한다는 뜻의 pixel to pixel
을 딴 Pix2Pix
로 네이밍되었다.
위의 예시를 보면 Input Image
는 매우 단순한 이미지로 건물의 형태나 창문의 위치 등 구조적인 정보는 알 수 있지만,
실제 디테일한 디자인은 어떻게 되어 있는지는 판단하기 힘들다.
그래서 Predicted Image
에는 구조적인 정보를 바탕으로 건물 이미지를 만들고 세부 디자인을 생성한다.
그 결과물은 Ground Truth
와 완벽히 같을 수는 없지만, 전체적으로 비슷한 분위기는 나타내는 것을 알 수 있다.
Pix2Pix 기법이 응용될 수 있는 다른 사례들은 아래 논문에서 그림으로 확인해 볼 수 있다.
(Experiments에 있는 이미지만 간단히 살펴보자)
Image-to-Image Translation with Conditional Adversarial Networks
Pix2Pix 응용 사례
- 스케치로 그려진 그림을 실사화
- 흑백 사진을 컬로로 변환
- 위성사진을 지도 이미지로 변환
- 낮에 찍힌 사진을 밤 배경 사진으로 변환
2-2. CycleGAN¶
Pix2Pix 이후 발전된 모델은 CycleGAN 이 있다.
이름에서 느껴지듯 이 모델은 한 이미지와 다른 이미지를 번갈아 가며 Cyclic 하게 변환이 가능하다.
그림을 사진으로 바꾸는 Pix2Pix 와 비슷해 보이지만, 한 방향으로 변환만 가능한 Pix2Pix 와 달리
CycleGAN은 양방향으로 이미지 변환이 가능하다.
즉, 실사 이미지를 그림으로 바꾸는 것과 그림을 실사 이미지로 바꾸는 것이 가능하다는 것이다.
그림과 사진의 쌍으로 이루어진 데이터셋이 필요했던 Pix2Pix 와 달리, CycleGAN 은 쌍이 필요없다.
얼룩말을 그냥 말로, 말을 얼룩말로 서로 변환할 경우 쌍을 이루지 않더라고 그냥 얼룩말이 있는 사진과
말이 있는 사진 각각의 데이터셋만 있다면 CycleGAN 을 학습 시킬 수 있다.
모델이 스스로 얼룩말과 말 데이터에서 각각의 스타일을 학습해서 새로운 이미지에 그 스타일을 입힐 수 있도록 설계되었기 때문이다.
CycleGAN 의 또 다른 활용방법으로는 실제 사진을 모네 또는 고흐 같은 화가가 그린 그림처럼 바꾸는 것이다.
2-3. Neural Style Transfer¶
사진에 내가 원하는 스타일을 입혀보자: Neural Style Transfer
스타일을 변환시키는 Neural Style Transfer
이미지의 스타일을 변환시키는 방법으로 전체 이미지의 구성을 유지하고 싶은 Base Image 와
입히고 싶은 스타일이 담긴 Style Image 두 장을 활용해 새로운 이미지를 만들어 내는 것이다.
3. 패션을 다자인 하려면? 먼저 패션을 배우자¶
3-1. Fashion MNIST¶
지금까지 생성 모델링 분야에서 어떤 응용 기술들이 연구되었는지 살펴보았다.
이제 첫 번째 생성 모델을 직접 구현해 보도록 하자.
패션을 디자인 한다는 것은 뭘까❓❓❓❓
사람의 경우 패션 디자이너가 되려면, 다양한 패션을 만이 접하며 좋은 패션이 뭔지 배워야 될 것이다.
이후 배운 것을 바탕으로 자신만의 디자인을 만들어갈 수 있을 것이다.
생성 모델 도 마찬가지다. 먼저 다양한 패션을 접하며 옷, 신발, 드레스와 같은 것이 어떻게 생겼는지
학습한 후 새로운 디자인을 만들어야 한다.
따라서 모델이 학습할 데이터셋을 먼저 준비해보자.
사용할 데이터 셋은 Fashion MNIST 이다.
신경망 모델 연구 과정에서 MNIST 숫자 데이터가 많이 활용되면서 몇 가지 이유로 Fashion MNIST 라는
데이터 셋이 새롭게 구축되었다. 세부 내용은 아래 링크를 통해 확인해보자.
🪰 Fashion-MNISTFashion MNIST 데이터셋의 이미지 크기(WXH)는 몇인가??
🪰 28 X 28Fashion MNIST 데이터셋은 총 몇 장으로 이루어져있나?
🪰 70,000장 (training set 60,000장 / test set 10,000장)Fashion MNIST가 만들어진 이유 세 가지는 무엇인가요? 간단히 설명해 보자.
🪰 MNIST is too easy. (MNIST는 너무 쉽다.)
🪰 MNIST is overused. (MNIST는 너무 많이 쓰였다.)
🪰 MNIST can not represent modern CV tasks. (MNIST는 요즘의 Computer Vision 문제에 적용될 수 없다.)Fashion MNIST는 총 몇 가지의 카테고리로 이루어져 있나요? 각 카테고리의 Label은 무엇으로 표시되었나?
🪰 10가지 패션 카테고리가 0~9의 숫자 Label로 표시되었다.- 0: T-shirt/top - 1: Trouser - 2: Pullover - 3: Dress - 4: Coat - 5: Sandal - 6: Shirt - 7: Sneaker - 8: Bag - 9: Ankle boot
⛳ 다음 페이지에서 코드로 내용을 살펴보자 ⛳¶
'인공지능' 카테고리의 다른 글
[Part 2]CIFAR-10 을 활용한 이미지 생성기 (0) | 2022.02.16 |
---|---|
[Part 1]CIFAR-10 을 활용한 이미지 생성기 (1) | 2022.02.15 |
[Part 2]인공지능으로 새로운 패션을 만들 수 있다! (0) | 2022.02.11 |
Tensorflow(TF)_V2_API (0) | 2022.01.29 |
감성 분석[Emotional analysis] (0) | 2022.01.28 |