728x90
GAN (Generative Adversarial Network)
모델 2개
1. 생성자 모델 (Generator) : 이미지를 학습해서 없던 이미지를 만들어냄
2. 판별자 모델 (Discriminator) : 1번이 만든 이미지와 원래 있던 이미지를 보고 가품, 진품 판별 학습(가짜0, 진짜1)
딥러닝
1. 문제정의
2. 데이터셋 준비
3. 모델 설정
4. 모델 학습 / 평가
# 시작
1. 학습 이미지 준비
폰트 데이터가 많이 필요한데 손으로 다 적기는 무리
.ttf 파일 이용
# 32x32 크기 이미지로 만들기
IMAGE_WIDTH = 32
IMAGE_HEIGHT = 32
for font in fonts:
# 흰색 바탕 32x32 이미지 생성
image = Image.new('L', (IMAGE_WIDTH, IMAGE_HEIGHT), color = 255)
drawing = ImageDraw.Drwa(imgae)
w, h = drawing.textsize(character, font= font)
font = ImageFont.truetype(font, 48)
# 검은색 글씨 쓰기
drawing.text((IMAGE_WIDTH-w)/2, (IMAGE_HEIGHT-h)/2, '가', fill=(0), font=font)
# 이미지 저장
image.save(file_path,'JPEG')
2. 학습 시킬 수 있는 데이터셋 만들기
이미지를 csv 파일로 가지고 있기
Part1. 프로젝트 셋팅
# 1-1. 패키지 호출
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras import layers
Part2. 데이터 준비
# 2-1. CSV 데이터 읽어오기
import pandas as pd
# 이미지를 csv로 저장후 불러오기
data = pd.read_csv('/img_pixels_augmented.csv').astype('float32')
data.head()
# 2-2. 3D Vector 변환
width, height, channel = 32, 32, 1 # 이미지 사이즈 32*32 pixel
X = data.values
X = X.reshape((X.shape[0], width, height, channel))
print(X.shape)
# (9662,32,32,1)
# 2-3. Image Pixel Normalization [0,255] -> [-1,1]
X = (X - 127.5) / 127.5
# print(X[0])
# 2-4. 한글 이미지 시각화
plt.figure(figsize=(11,11))
i = 1
for image in X:
plt.subplot(10, 10, i) #(10*10) 총 100칸
image = image.reshape(width, height)
plt.imshow(image, cmap='gray') # 흑백 이미지
plt.axis('off')
i+=1
if i > 100: break
plt.suptitle("Korean Image", fontsize = 20)
# 100장의 글자 출력
# 2-5. 학습 데이터 batch 준비
# 64장씩 학습하기
BATCH_SIZE = 64
# Input dataset + image randum shuffle
train_dataset = tf.data.Dataset.from_tensor_slices(X).shuffle(X.shape[0]).batch(BATCH_SIZE)
print(train_dataset)
plt.show()
판별(x) : 판별자가 진짜 이미지를 보고 예측한 판별 값 (진짜 1, 가짜 0)
생성(z) : 생성자가 만든 가짜 이미지
판별(생성(z)) : 판별자가 가짜 이미지를 보고 예츠간 판별 값 (진짜 1, 가짜 0)
minMax : 생성자는 min, 판별자는 Max
생성자 입장
판별자 입장
728x90
반응형
'TIL - 외 > 빅데이터' 카테고리의 다른 글
[머신러닝] 회귀 알고리즘 및 실습 (0) | 2023.04.13 |
---|---|
[머신러닝] K-최근접 이웃(KNN) 알고리즘 및 실습 (0) | 2023.04.09 |
불균형 데이터 (imbalanced data) 처리를 위한 샘플링 기법 (0) | 2023.03.22 |
구름 php + MySQL (0) | 2022.11.02 |
DB (0) | 2022.11.02 |
댓글