이미지 학습 기법 활용

박용민·2022년 5월 10일
0

쉬운 딥러닝

목록 보기
8/8

Style Transfer

  • 인공지능에 예술작품을 학습시키면서 스타일을 흉내 낸다.
  • 피처맵을 활용하여 '화풍'을 학습하고, 사진에 담겨있는 콘텐츠를 학습한다.
  • 텐서프롤 허브에서 'Neural Style Transfer'인공 지능 서비스 활용한다.

딥러닝 모델 코딩

"""
Author : Byunghyun Ban
"""
import tensorflow_hub as hub
import data_reader

# 데이터를 불러옵니다.
dr = data_reader.DataReader("content.jpg", "style.jpg")

# Hub로부터 style transfer 모듈을 불러옵니다.
hub_module = hub.load(
    'https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/1'
)

# 모듈에 이미지를 삽입해 Style Transfer를 실시합니다.
stylized_image = hub_module(dr.content, dr.style)[0]

# 결과를 출력합니다.
result = data_reader.tensor_to_image(stylized_image)

# 결과를 저장합니다.
result.save("result.jpg")

GAN(Generative Adversarial Networks)

Adversarial Networks

  • GAN은 두 개의 신경망으로 구성된다.
  • 두 개의 신경망은 서로 게임을 하여, 서로 싸우는 과정에서 양쪽 모두의 실력이 향상된다.

Generative Networks

  • 새로운 데이터를 생성하느 생성적(generative) 인공지능이다.
  • GAN의 성능이 발달하여 이제는 육안으로 진짜, 가짜 데이터를 구분하는 것이 불가능해 졌다.

Generator, Discriminator

  • Generator는 데이터를 생성하느 신경망이다.
  • Discriminator는 데이터를 식별하는 신경망이다.
  • 서로 싸우며 성장하는 것이 GAN의 기본 철학이다.

Generator의 구조와 역할

  • 핵심 기능은 데이터를 위조하는 것이다.
  • latent space(잠재 공간)의 변수를 데이터의 분포로 사상시키는 함수이다.
  • 입력층은 노이즈를 입력받고, 출력층은 데이터를 출력한다.

Discriminator 구조와 역할

  • 평범한 CNN 분류 모델이다.
  • Generator가 생성한 위조 데이터와 실제 데이터를 입력받아 분류한다.

GAN의 학습 과정

Discriminator 구조

  • 음수값 표현을 위해 활성화 함수로 리키 렐루를 사용한다.
  • Stride는 CNN의 필터를 적용할 때 한 번에 몇 칸씩 건너뚜리지를 지정하는 값이다.
층수종류크기활성화 함수
1층CNN64,(5,5),strides=(2,2)LeakyReLu
-Dropoutrate=0.3-
2층CNN128,(5,5),strides=(2,2)LeakyReLu
-Dropoutrate=0.3-
3층Flatten--
4층FNN1-

Generator 구조

  • 체음에는 FNN으로 시작하여 DCNN으로 이어지는 구조
  • Stride는 CNN의 필터를 적용할 때 한 번에 몇 칸씩 건너뚜리지를 지정하는 값
  • DCNN은 CNN의 반대 연산 CNN에서 strides를 적용하면 이미지 크기가 줄어들 듯, DCNN에서 strides를 적용하면 이미지 크기가 커진다.
  • 출력값은 -1부터 1사이로 고정하기 위해 tanh를 활성화 함수 사용
층수종류크기활성화 함수
1층FNN100-
2층FNN12,544-
-BatchNorm-LeakyReLu
3층Reshape(7,7,256)-
4층DCNN1128,(5,5)
-BatchNorm-LeakyReLu
5층DCNN64,(5,5),strides=(2,2)-
-BatchNorm-LeakyReLu
6층DCNN1,(5,5),strides=(2,2)tanh
"""
Author : Byunghyun Ban
"""
import data_reader
import gan

# 몇 에포크 만큼 학습을 시킬 것인지 결정합니다.
EPOCHS = 100  # 예제 기본값은 100입니다.

# 데이터를 읽어옵니다.
dr = data_reader.DataReader()

# GAN을 불러옵니다.
# Generator
generator = gan.make_generator()
# Discriminator
discriminator = gan.make_discriminator()

# 인공신경망을 학습시킵니다.
print("\n\n************ TRAINING START ************ ")
gan.train(generator, discriminator, dr.train_dataset, EPOCHS)

# GIF 애니메이션을 저장합니다.
gan.gif_generation()

0개의 댓글

관련 채용 정보