분류 전체보기 428

이미지 분류(이진 분류)

https://www.kaggle.com/olavomendes/cars-vs-flowers cars_vs_flowers Dataset with pictures of cars and flowers www.kaggle.com 두가지 레이블만 존재하는 데이터셋이다. 두가지 레이블이기 때문에 이진 분류를 사용하겠다. 먼저 다운로드 받은 데이터를 코랩에서 압축해제한다. !unzip -qq '/content/drive/MyDrive/archive (1).zip' import os import cv2 import matplotlib.pyplot as plt 각각 레이블의 트레이닝 이미지가 몇장인지 계산한다. len(os.listdir('/content/dataset/cars_vs_flowers/training_set..

Kaggle 2021.07.06

13. CycleGAN - 이론

CycleGAN의 구조는 매우 복잡하다. 이를 위해 판별자 두 개와 생성자 두 개가 필요하다. 이미지 대 이미지 변환. 이런 종류의 변환을 구현하려면 생성자의 입력이 사진이어야 한다. 생성자(변환기)가 이미지에서부터 시작하기 때문이다. 다른 말로 하면 한 도메인의 이미지를 다른 도메인의 이미지로 매핑한다. 이전에 생성자에게 주입한 잠재 벡터는 해석이 불가능했다. 이제 이 벡터를 입력 이미지로 대체한다. 이러한 아이디어는 강력하고 용도가 다양하지만 데이터 쌍이 필요하다는 것이 문제이다. CycleGAN의 뛰어난 점은 완벽한 쌍이 필요하지 않다는 것이다. 대신 사이클을 구성한다. 한 도메인에서 다른 도메인으로 변환하고 다시 반대로 변환한다. 예를 들어 공원의 여름 사진(도메인 A)에서 겨울 사진(도메인 B)..

GAN/이론 2021.07.02

12. CGAN - 구현

이 튜토리얼에서 선택한 손글씨 숫자를 생성하는 CGAN 모델을 구현하겠다. 마지막에는 각 숫자에 대한 이미지 샘플을 생성해 모델이 얼마나 목표 데이터를 잘 만드는지 확인해보겠다. %matplotlib inline import matplotlib.pyplot as plt import numpy as np from tensorflow.keras.datasets import mnist from tensorflow.keras.layers import (Activation,BatchNormalization,Concatenate,Dense, Embedding,Flatten,Input,Multiply,Reshape) from tensorflow.keras.layers import LeakyReLU from tenso..

GAN/이론 2021.06.30

11. CGAN - 이론

CGAN(conditional generative adversarial network)는 생성자와 판별자를 훈련하는 데 모두 레이블을 사용한다. 이 방법 덕분에 CGAN의 생성자는 원하는 가짜 샘플을 합성할 수 있다. 앞에서 ProGAN이 생성한 이미지가 인상적이지만 어떤 얼굴을 생성할지 제어할 수 없다. CGAN은 생성자와 판별자가 훈련하는 동안 추가 정보를 사용해 조건이 붙는 생성적 적대 신경망이다. 이론적으로 이 부가 정보는 어떤 것이든 가능하다. 예를 들어 클래스 레이블, 일련의 태그 또는 글로 쓰인 설명도 가능하다. CGAN을 훈련하는 동안 생성자는 훈련 데이터셋에 있는 각 레이블에 대해 실제 같은 샘플을 생성하는 법을 배운다. 판별자는 '진짜 샘플-레이블' 쌍과 '가짜 샘플-레이블' 쌍을 구별..

GAN/이론 2021.06.30

10. SGAN - 구현

이 튜토리얼에서는 MNIST 데이터셋에서 100개의 훈련 샘플만 사용해 손글씨 숫자를 분류하는 SGAN 모델을 만들어보겠다. 다음 그림은 이 튜토리얼에서 구현할 SGAN 모델을 고수준에서 그린 것이다. 이 그림은 이장의 서두에서 소개한 일반적인 개념도보다 조금 더 복잡하다. 진짜 레이블을 분류하는 다중 분류 문제를 풀기 위해 판별자는 소프트맥스 함수를 사용한다. 이 함수는 지정된 클래스 개수(여기에서는 10개) 만큼 확률 분포를 반환한다. 어떤 레이블에 할당된 확률이 높을수록 판별자가 샘플이 해당 클래스에 속한다고 크게 확신한다. 분류 오차를 계산하려면 출력 확률과 원-핫 인코딩된 타깃 레이블 사이의 교차 엔트로피 손실(cross-entropy-loss)을 사용한다. 진짜 대 가짜 확률을 출력하기 위해 ..

GAN/이론 2021.06.28

9. SGAN - 이론

준지도 학습(semi-supervised learning)은 GAN을 실용적으로 적용할 수 있는 무척 기대되는 분야 중 하나이다. 데이터셋에 있는 모든 샘플에 레이블이 필요한 지도 학습이나 레이블을 사용하지 않는 비지도 학습과 달리, 준지도 학습은 훈련 데이터셋의 일부에만 클래스 레이블을 가지고 있다. 준지도 학습은 데이터에 감춰진 내부 구조를 사용해 일부 레이블된 데이터 포인트를 일반화하고, 효율적인 방식으로 이전에 본 적 없는 새로운 샘플을 분류한다. 준지도 학습이 작동하려면 레이블된 데이터와 레이블이 없는 데이터가 동일한 분포에서 수집되어야 한다는 점이 중요하다. 생성 모델을 사용하여 훈련에 사용할 수 있는 추가 정보를 제공하면 준지도 학습 모델의 정확도 향상에 도움이 된다. 당연히 GAN이 가장 ..

GAN/이론 2021.06.28

8. 텐서플로 허브를 사용한 실습

다음 코드는 latent_vector에 지정한 랜덤 시드를 기반으로 얼굴을 생성하는 완전한 예제이다. import matplotlib.pyplot as plt import tensorflow as tf import tensorflow_hub as hub module=hub.KerasLayer('https://tfhub.dev/google/progan-128/1') latent_dim=512 # 생성할 샘플의 잠재공간 차원 latent_vector=tf.random.normal([1,latent_dim],seed=13) #시드를 바꾸면 다른 얼굴을 생성한다. interpolated_images=module(latent_vector) # 모듈을 사용해 잠재 공간에서 이미지를 생성 plt.imshow(inte..

GAN/이론 2021.06.27

7. ProGAN - 주요한 혁신들(2)

다음 혁신은 미니배치 표준편차(mini-batch standard deviation)이다. 이를 자세히 알아보기 전에 모드 붕괴를 생각해보자. 모드 붕괴는 GAN이 몇 개의 좋은 샘플만 만드는 방법이나 이들의 순서를 조금 바꾸기만 할 때 발생한다. 일반적으로 한 사람의 얼굴이 아니라 실제 데이터셋에 있는 모든 사람의 얼굴을 생성하기 원한다. 따라서 캐라스와 연구진은 판별자에게 샘플이 충분히 다양한지 알려주는 방법을 만들었다. 간단하게 요약하면 판별자를 위해 한 개의 스칼라 통계 값을 추가로 계산한다. 이 통게값은 생성자가 만들거나 실제 데이터에서 온 미니배치에 있는 모든 픽셀의 표준편차이다. 판별자는 평가할 배치 이미지에서 표준편차가 낮다면 이 이미지는 가짜라고 학습한다. 진짜 데이터는 분산이 크기 때문..

GAN/이론 2021.06.27