SlideShare a Scribd company logo
1 of 60
Download to read offline
CycleGAN이 무엇인지 알아보자.
Kwangsik Lee(lks21c@gmail.com)
개요
요즘 핫한 GAN 중에서도 CycleGAN에 대한 D2 유튜브 영상을
보고 내용을 정리해둔다.
추가적인 자료는 슬라이드 쉐어 그리고 논문을 참고하자.
Q&A : lks21c@gmail.com
CycleGAN 으로 할수 있는 일은 무엇일까?
백문이 불여일견, 트레이닝 결과부터 확인해보자!
CycleGAN으로 할 수 있는일 #1
아래와 같이 사진이 주어졌을때 다른 사진으로 변형을 시키는 것이
가능하다.
말 <-> 얼룩말 간의 변환이 가능하다.
CycleGAN으로 할 수 있는일 #2
여름 <-> 겨울 사진 변환도 가능하다.
CycleGAN으로 할 수 있는일 #3
아이폰 사진 <-> 아웃오브 포커스 사진 변환가능
CycleGAN으로 할 수 있는일 #4
얼굴 <-> 라면 과 같은 엽기적인 것도 가능은 하다.
[정리] CycleGAN으로 할 수 있는일
사이클 GAN은 사진을 특정화풍의 그림으로도 바꿀수 있고
그림을 사진으로도 바꿀 수 있다.
같은 맥락의 다른 예제들도 많다.
CycleGAN은 어떻게 동작하는가?
Cycle GAN을 연구하는 랩실에서 이전에 pix2pix를 만들었다.
이부분에 대한 이해를 하고 나면 cycleGAN 이해가 더 와닿는다.
앞으로의 설명 방식
GAN은 많은 자료가 있다.
따라서 이번에는 재밌게 pix2pix -> GAN -> CycleGAN 순으로
이해를 해보자.
pix2pix #1
학습
supervised learning
input, output이 모두 사진
예를 들어 흑백사진 -> 컬러사진
Test
test는 등장한적이 없는 흑백 사진을 주었을때 컬러사진으
로 바꾸어야 함
pix2pix #2
self supervised인 이유는 사람이 label을 굳이 붙여주지 않아도
흑백/컬러 사진을 정답지로 학습시킬 수 있기 때문
loss 는 |G(x) - y|
pix2pix #3
아래와 같은 트레이닝도 가능함
입력 : 건물의 구성양식을 픽셀별로 나타낸
정답지 : 실제 건물 사진을 만들어냄
pix2pix의 한계점 #1
pix2pix로 학습을 시켜보면 정답지에 비해 뿌옇고 색깔이 부조
화 스러운 현상이 나타남
pix2pix의 한계점 #2
흑백사진 -> 컬러도 마찬가지임
이런 현상이 발생하는 이유는 loss를 막기 위해 흑백이 아닌 색
깔을 모델이 선택을 하는데 이때 색깔값에 대한 가이드라인이
따로 없기 때문에 모델이 중간값을 고르는 경향이 나타남
pix2pix의 Intuition
여기서 중요한 Intuition은 아래와 같다.
사람이 보기에는 output과 Ground Truth의 차이가 명확히 눈에
보인다. 즉 사람은 결과의 구별(discrimination)할 수 있다.
사람이 구별할 수 있으면 딥러닝으로도 구별할수 있지 않을까?
사람 대신에 다른 뉴럴 네트워크가 이 역할을 하게 만들어보자.
GAN
위의 흐름에서 등장한 GAN에 대해 살펴보자.
우리가 GAN을 사용하는 목적
우리의 목적은 흑백사진 입력을 컬러사진으로 만드는 것이고
이 때 Generator 네트워크를 이용한다.
Generator를 G라 부른다.
GAN 네트워크 구성
GAN에서는 D를 새로 만들어 G가 real인지 fake인지 구별하게끔
만든다.
즉 두 네 트워크의 미션은 아래와 같다.
D는 fake를 구별하려 한다.
G는 fake image로 D를 속이려 한다.
GAN 네트워크 수식 정의 : D함수
D의 입장에서 0에 가까우면 real, 1에 가까우면 fake로 구별한다.
그러면 D의 입장에서 loss 정의는 아래와 같이 할 수 있다.
logD(G(x))를 통해 G가 만들어내는 결과는 1(fake)에 가
깝게 만든다
log(1 − D(y))를 통해 실제 정답 이미지는 0(real)에 가깝
게 만든다.
GAN 네트워크 수식 정의 : G함수
마찬가지로 G의 입장에서는 D와 반대로 argMin을 하면 된다.
logD(G(x))를 통해 G가 만들어내는 결과는 0(real)에 가깝게
만든다
log(1 − D(y))를 통해 실제 정답 이미지는 1(fake)에 가깝게
만든다.
GAN 네트워크 수식 정의 : 전체수식
수식을 함께 적으면 아래와 같다.
G 입장에서는 D를 가장 잘 속이는 이미지를 만들어내야 한다.
GAN에 대한 간단한 이해
G의 관점에는 D가 loss function이다.
이를 통해 G와 D를 경쟁관계로 만드는게 GAN의 장점이다.
pix2pix의 Loss 함수
pix2pix의 loss는 픽셀 level loss와 GAN으로 정의한 loss를 합쳐
서 정의함.
이전보다 성능이 좋아지는게 육안으로 확인됨
CycleGAN
이제부터 CycleGAN에 대해 알아보자.
pix2pix의 또다른 한계점
pix2pix처럼 흑백을 컬러사진으로 바꾸는 것은 데이터셋을 구성
하기 쉽다.
하지만 현실세계에서는 항상 학습을 위한 데이터셋을 구성하기
쉬운게 아니다.
(예를 들어 모네의 실제 그림과 실물 이미지를 1000장 구성하려
면?)
CycleGAN이 하고자 하는 것
예를 들어 모네의 그림과 실제 사진으로 바꾸는 작업을 학습시
킨다고 해보자.
완전히 똑같이 않은 원하는 style의 사진은 쉽게 구할 수 있다.
기존의 GAN Loss를 CycleGAN에서도 사용할수 있을까?
생각해보면 GAN Loss는 동일하게 사용할 수 있음
GAN Loss만 사용했을때의 문제점
하지만 서로 다른 사진이 같은 target 이미지로 generation 될수
있는 여지를 막을 수 없음
즉 아래의 2가지 문제점이 있음
Input의 특성이 무시되고
같은 Output으로 매몰될 여지가 있음
CycleGAN의 Loss 컨셉
핵심 컨셉 : 따라서 추가적인 loss의 조건은 원본 이미지로
reconstruct 되게끔 강제하는 것이다.
즉, 이 의미는 사진의 style을 바꾸는데 다시 원래 그림으로 복구
가능한 정도로만 바꾸라는 뜻이다.
CycleGAN의 Loss 함수
기존 GAN Loss는 유지한다.
추가적으로 생긴 loss는 가짜이미지를 다시 genration한 이미지
와 기존 원본 이미지 x의 loss가 최소화 되어야 한다는 것이다.
마치 pix2pix의 pixel level difference를 추가해준 개념이다.
자 따라서 아래의 loss 함수로 위의 역할을 수행할 수 있게 되었
다.
다음 슬라이드에서 조금만 더 Loss에 대해 생각해보자.
반대방향 학습
같은 맥락으로 반대 방향의 학습도 가능하다. F가 G의 역함수 개
념이니까 이게 가능하다.
예를들어, 바로 위의 학습이 모네 그림 -> 실사 이미지의 학습이
라면 이번에는 실사 이미지 -> 모네 그림으로의 학습을 수행하
는 것이다.
CycleGAN loss함수의 완성
따라서 위의 두 방향의 학습을 합치면 loss가 아래와 같이 된다.
Cycle GAN은 이 두 방향의 loss를 합친다.
Cycle GAN 연구Lab에 따르면 실제로 두 방향이 한 방향으로만
학습을 시켜보면 결과가 좋지 않았다고 한다.
CycleGAN의 학습 결과 #1
학습의 결과는 아래와 같다.
그림 -> 사진 변환이 가능하다.
CycleGAN의 학습 결과 #2
반대로 사진 -> 그림으로 바꿀수도 있다.
CycleGAN 적용 사례 #1
loss를 이것저것 뺐을 때 어떤 결과가 있는지 실험을 해보았다.
city scape 데이터셋을 살펴보자. 정답지는 사람이 직접 색깔로
label해 놓은 데이터셋이다.
GAN만 사용하면 input으로 돌아오지 못하고 거의 같은 이미지
로 수렴한다.(label 데이터)
실험 시 가장 좋은 성능은 CycleGAN을 사용했을때였다.
CycleGAN 적용 사례 #2
되돌아오는 이미지는 아래와 같다.
원본은 GTA 스크린샷, 정답지는 자율주행 차량 사진이다.
CycleGAN 설계 특징
Generator 아키텍쳐
Cycle GAN연구에서 G의 아키텍쳐를 세우는게 매우 중요한 것
을 발견하였다.
Disco GAN은 아래와 같은 G 아키텍쳐를 지닌다.
CycleGAN의 첫번쨰 아키텍처
최초의 Cycle GAN은 U-Net을 사용하였다.
장점은 skip connection으로 인해 디테일이 훨씬 더 많이 간직된
다는 장점이 있지만
단점은 두가지의 컨텐츠가 비슷한 경우 Skip Connecton을 최대
한 사용하려고 하여 성능이 좋지 못했다고 한다.
CycleGAN의 마지막 아키텍처
ResNet을 사용하였 장점은 이미지 퀄리티 입장에서 좋았는데
단점은 메모리를 많이 사용한다고 한다.
학습 파라미터가 적어 많은 변형을 일으킬 수 없다는 특징이 있
다.
GAN Loss 함수의 변경
CycleGAN에서는 cross entropy 사용시 vanishing gradient 문제
가 발생했다.
따라서 대신에 LSGAN을 사용할 때 성능이 잘 나와서 이를 사용
하였다고 한다.
L1 loss의 필요성
pix2pix에서 확인했듯이 L1 로스를 추가하는것이 성능 향상에 좋은
듯 하다.
L1 loss의 추가의 어려움
CycleGAN은 아래 이미지를 얼룩말로 바꾸는 정답이 없기 때문에 직
접적인 L1 loss를 구하기 어려움
CycleGAN의 간접적 L1 loss #1
얼룩말을 말처럼 바꾼 이미지를 이용하여 가짜 L1 로스(여기서
얼룩말이 정답지)를 넣어서 효과를 보았음
F(y)로 이미지를 생성한 뒤 이를 G()를 적용하여 정답지 y와 비교
CycleGAN의 간접적 L1 loss #2
당연한 얘기지만 얼룩말을 넣었을때 얼룩말이 나오게끔 나오는
loss를 G에 추가하는 것도 도움이 된다.(identity loss)
L1 loss를 추가한 결과물
L1 loss가 더 안정적인 가이드 라인이 되어준다.
그림-> 사진 에서 더 안정적인 결과물이 나왔다.
Replay Buffer
GAN 트레이닝을 진행하며 똑같은 샘플별로 성능을 살펴보면
트레이닝을 돌릴때마다 성능이 천차만별이다.
이 불안정성을 해결하기 위해 주기적으로 Generator가 만들어
놓은 사진을 다시 discriminator에게 보여줌, 이 부분은
Discriminator에게만 적용함
CycleGAN의 한계점
모양
CycleGAN의 가장 큰 단점은 모양을 바꾸기가 어려움
사과를 오렌지로 바꾸는 것도 모양을 바꾸기가 어려움
데이터 분포
말 위에 사람이 있는 사진이 많지 않을 때 얼룩말로 바꾸는 것이
정상 동작하지 않는다.
Optimization의 문제라기 보다 Dataset의 문제라고 생각됨
Domain Adaption
CycleGAN으로 어떤 도메인에 적용할 수 있는지 사례를 찾아보자.
GTA5 <-> real streetview
GTA 사진을 실제 거리뷰로 바꾸는 일을 시켜보았다.
재밌는 점은 정답지에 항상 벤츠 장식이 있어서 이것을 만들어
내는 것을 확일 할 수 있다.
GTA와 자율주행의 관계
GTA 이미지 혹은 게임의 의미는 이 게임 자체가 좋은 무인자동차 학
습 TOOL이다.
GTA를 통한 자율주행 모델링
실사에 가까운 GTA 게임에서 Object Detection을 훈련시키고 실제
도로에서 검증한다.
GTA를 통한 자율주행 모델링의 한계점
하지만 GTA에서 학습된 모델로 실제 환경에서 돌렸을 때 정확
도가 그렇게 높지가 않다.
Per-class accuracy는 object 인식의 확률의 평균(가로등은 몇%,
자동차는 몇% 등)이고 per-pixel accuracy는 픽셀단위 인식의 정
확도를 의미한다.
현재 기술의 한계점
현존하는 최고의 기술로 하더라도 6% 향상밖에 안됨
CycleGAN의 성능 개선
별다른 Trick없이 Cycle GAN 으로 이미지를 실사화 하여 훈련시
켰을 때 기존의 정확도를 가볍게 뛰어넘었다.
이때 per-pixel accuracy로 보더라도 실사 훈련인 93.1% 대비
82.8%로 훌륭하다.
앞으로 고민해볼만한 것
Cycle GAN을 통한 NMT
감사합니다.

More Related Content

What's hot

[DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...
 [DL輪読会]Backpropagation through the Void: Optimizing control variates for bla... [DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...
[DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...Deep Learning JP
 
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)小川 雄太郎
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBArangoDB Database
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기NAVER Engineering
 
Factorization machines with r
Factorization machines with rFactorization machines with r
Factorization machines with rShota Yasui
 
Basic Generative Adversarial Networks
Basic Generative Adversarial NetworksBasic Generative Adversarial Networks
Basic Generative Adversarial NetworksDong Heon Cho
 
RL4J で始める深層強化学習
RL4J で始める深層強化学習RL4J で始める深層強化学習
RL4J で始める深層強化学習Yuki Tagami
 
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...홍배 김
 
Forward-Forward Algorithm
Forward-Forward AlgorithmForward-Forward Algorithm
Forward-Forward AlgorithmDong Heon Cho
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks남주 김
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터Donghyeon Kim
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and ApplicationsEmanuele Ghelfi
 
[DL輪読会]Attentive neural processes
[DL輪読会]Attentive neural processes[DL輪読会]Attentive neural processes
[DL輪読会]Attentive neural processesDeep Learning JP
 
인공신경망
인공신경망인공신경망
인공신경망종열 현
 
Tips for data science competitions
Tips for data science competitionsTips for data science competitions
Tips for data science competitionsOwen Zhang
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証Masaharu Kinoshita
 
(DL輪読)Variational Dropout Sparsifies Deep Neural Networks
(DL輪読)Variational Dropout Sparsifies Deep Neural Networks(DL輪読)Variational Dropout Sparsifies Deep Neural Networks
(DL輪読)Variational Dropout Sparsifies Deep Neural NetworksMasahiro Suzuki
 
[DL輪読会]Variational Autoencoder with Arbitrary Conditioning
[DL輪読会]Variational Autoencoder with Arbitrary Conditioning[DL輪読会]Variational Autoencoder with Arbitrary Conditioning
[DL輪読会]Variational Autoencoder with Arbitrary ConditioningDeep Learning JP
 
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative FilteringDeep Learning JP
 

What's hot (20)

[DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...
 [DL輪読会]Backpropagation through the Void: Optimizing control variates for bla... [DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...
[DL輪読会]Backpropagation through the Void: Optimizing control variates for bla...
 
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDB
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
 
Factorization machines with r
Factorization machines with rFactorization machines with r
Factorization machines with r
 
Basic Generative Adversarial Networks
Basic Generative Adversarial NetworksBasic Generative Adversarial Networks
Basic Generative Adversarial Networks
 
RL4J で始める深層強化学習
RL4J で始める深層強化学習RL4J で始める深層強化学習
RL4J で始める深層強化学習
 
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
 
Forward-Forward Algorithm
Forward-Forward AlgorithmForward-Forward Algorithm
Forward-Forward Algorithm
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and Applications
 
[DL輪読会]Attentive neural processes
[DL輪読会]Attentive neural processes[DL輪読会]Attentive neural processes
[DL輪読会]Attentive neural processes
 
인공신경망
인공신경망인공신경망
인공신경망
 
Tips for data science competitions
Tips for data science competitionsTips for data science competitions
Tips for data science competitions
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
 
230309_LoRa
230309_LoRa230309_LoRa
230309_LoRa
 
(DL輪読)Variational Dropout Sparsifies Deep Neural Networks
(DL輪読)Variational Dropout Sparsifies Deep Neural Networks(DL輪読)Variational Dropout Sparsifies Deep Neural Networks
(DL輪読)Variational Dropout Sparsifies Deep Neural Networks
 
[DL輪読会]Variational Autoencoder with Arbitrary Conditioning
[DL輪読会]Variational Autoencoder with Arbitrary Conditioning[DL輪読会]Variational Autoencoder with Arbitrary Conditioning
[DL輪読会]Variational Autoencoder with Arbitrary Conditioning
 
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
 

More from Kwangsik Lee

MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석Kwangsik Lee
 
Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.Kwangsik Lee
 
Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.Kwangsik Lee
 
Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!Kwangsik Lee
 
[개념정리] DB: Recovery
[개념정리] DB: Recovery[개념정리] DB: Recovery
[개념정리] DB: RecoveryKwangsik Lee
 
[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency ControlKwangsik Lee
 
[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 HashingKwangsik Lee
 
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : BackpropagationVisual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : BackpropagationKwangsik Lee
 
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)Kwangsik Lee
 
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentVisual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentKwangsik Lee
 
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and PreceptronVisual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and PreceptronKwangsik Lee
 
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개Kwangsik Lee
 
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5Kwangsik Lee
 
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4Kwangsik Lee
 
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3Kwangsik Lee
 
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2Kwangsik Lee
 
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programmingKwangsik Lee
 
Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1Kwangsik Lee
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 

More from Kwangsik Lee (19)

MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석
 
Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.
 
Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.
 
Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!
 
[개념정리] DB: Recovery
[개념정리] DB: Recovery[개념정리] DB: Recovery
[개념정리] DB: Recovery
 
[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control
 
[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing
 
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : BackpropagationVisual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
 
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
 
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentVisual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
 
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and PreceptronVisual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
 
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
 
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5
 
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4
 
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3
 
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2
 
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
 
Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 

CycleGAN이 무엇인지 알아보자

  • 2. 개요 요즘 핫한 GAN 중에서도 CycleGAN에 대한 D2 유튜브 영상을 보고 내용을 정리해둔다. 추가적인 자료는 슬라이드 쉐어 그리고 논문을 참고하자. Q&A : lks21c@gmail.com
  • 3. CycleGAN 으로 할수 있는 일은 무엇일까? 백문이 불여일견, 트레이닝 결과부터 확인해보자!
  • 4. CycleGAN으로 할 수 있는일 #1 아래와 같이 사진이 주어졌을때 다른 사진으로 변형을 시키는 것이 가능하다. 말 <-> 얼룩말 간의 변환이 가능하다.
  • 5. CycleGAN으로 할 수 있는일 #2 여름 <-> 겨울 사진 변환도 가능하다.
  • 6. CycleGAN으로 할 수 있는일 #3 아이폰 사진 <-> 아웃오브 포커스 사진 변환가능
  • 7. CycleGAN으로 할 수 있는일 #4 얼굴 <-> 라면 과 같은 엽기적인 것도 가능은 하다.
  • 8. [정리] CycleGAN으로 할 수 있는일 사이클 GAN은 사진을 특정화풍의 그림으로도 바꿀수 있고 그림을 사진으로도 바꿀 수 있다. 같은 맥락의 다른 예제들도 많다.
  • 9. CycleGAN은 어떻게 동작하는가? Cycle GAN을 연구하는 랩실에서 이전에 pix2pix를 만들었다. 이부분에 대한 이해를 하고 나면 cycleGAN 이해가 더 와닿는다.
  • 10. 앞으로의 설명 방식 GAN은 많은 자료가 있다. 따라서 이번에는 재밌게 pix2pix -> GAN -> CycleGAN 순으로 이해를 해보자.
  • 11. pix2pix #1 학습 supervised learning input, output이 모두 사진 예를 들어 흑백사진 -> 컬러사진 Test test는 등장한적이 없는 흑백 사진을 주었을때 컬러사진으 로 바꾸어야 함
  • 12. pix2pix #2 self supervised인 이유는 사람이 label을 굳이 붙여주지 않아도 흑백/컬러 사진을 정답지로 학습시킬 수 있기 때문 loss 는 |G(x) - y|
  • 13. pix2pix #3 아래와 같은 트레이닝도 가능함 입력 : 건물의 구성양식을 픽셀별로 나타낸 정답지 : 실제 건물 사진을 만들어냄
  • 14. pix2pix의 한계점 #1 pix2pix로 학습을 시켜보면 정답지에 비해 뿌옇고 색깔이 부조 화 스러운 현상이 나타남
  • 15. pix2pix의 한계점 #2 흑백사진 -> 컬러도 마찬가지임 이런 현상이 발생하는 이유는 loss를 막기 위해 흑백이 아닌 색 깔을 모델이 선택을 하는데 이때 색깔값에 대한 가이드라인이 따로 없기 때문에 모델이 중간값을 고르는 경향이 나타남
  • 16. pix2pix의 Intuition 여기서 중요한 Intuition은 아래와 같다. 사람이 보기에는 output과 Ground Truth의 차이가 명확히 눈에 보인다. 즉 사람은 결과의 구별(discrimination)할 수 있다. 사람이 구별할 수 있으면 딥러닝으로도 구별할수 있지 않을까? 사람 대신에 다른 뉴럴 네트워크가 이 역할을 하게 만들어보자.
  • 17. GAN 위의 흐름에서 등장한 GAN에 대해 살펴보자.
  • 18. 우리가 GAN을 사용하는 목적 우리의 목적은 흑백사진 입력을 컬러사진으로 만드는 것이고 이 때 Generator 네트워크를 이용한다. Generator를 G라 부른다.
  • 19. GAN 네트워크 구성 GAN에서는 D를 새로 만들어 G가 real인지 fake인지 구별하게끔 만든다. 즉 두 네 트워크의 미션은 아래와 같다. D는 fake를 구별하려 한다. G는 fake image로 D를 속이려 한다.
  • 20. GAN 네트워크 수식 정의 : D함수 D의 입장에서 0에 가까우면 real, 1에 가까우면 fake로 구별한다. 그러면 D의 입장에서 loss 정의는 아래와 같이 할 수 있다. logD(G(x))를 통해 G가 만들어내는 결과는 1(fake)에 가 깝게 만든다 log(1 − D(y))를 통해 실제 정답 이미지는 0(real)에 가깝 게 만든다.
  • 21. GAN 네트워크 수식 정의 : G함수 마찬가지로 G의 입장에서는 D와 반대로 argMin을 하면 된다. logD(G(x))를 통해 G가 만들어내는 결과는 0(real)에 가깝게 만든다 log(1 − D(y))를 통해 실제 정답 이미지는 1(fake)에 가깝게 만든다.
  • 22. GAN 네트워크 수식 정의 : 전체수식 수식을 함께 적으면 아래와 같다. G 입장에서는 D를 가장 잘 속이는 이미지를 만들어내야 한다.
  • 23. GAN에 대한 간단한 이해 G의 관점에는 D가 loss function이다. 이를 통해 G와 D를 경쟁관계로 만드는게 GAN의 장점이다.
  • 24. pix2pix의 Loss 함수 pix2pix의 loss는 픽셀 level loss와 GAN으로 정의한 loss를 합쳐 서 정의함. 이전보다 성능이 좋아지는게 육안으로 확인됨
  • 26. pix2pix의 또다른 한계점 pix2pix처럼 흑백을 컬러사진으로 바꾸는 것은 데이터셋을 구성 하기 쉽다. 하지만 현실세계에서는 항상 학습을 위한 데이터셋을 구성하기 쉬운게 아니다. (예를 들어 모네의 실제 그림과 실물 이미지를 1000장 구성하려 면?)
  • 27. CycleGAN이 하고자 하는 것 예를 들어 모네의 그림과 실제 사진으로 바꾸는 작업을 학습시 킨다고 해보자. 완전히 똑같이 않은 원하는 style의 사진은 쉽게 구할 수 있다.
  • 28. 기존의 GAN Loss를 CycleGAN에서도 사용할수 있을까? 생각해보면 GAN Loss는 동일하게 사용할 수 있음
  • 29. GAN Loss만 사용했을때의 문제점 하지만 서로 다른 사진이 같은 target 이미지로 generation 될수 있는 여지를 막을 수 없음 즉 아래의 2가지 문제점이 있음 Input의 특성이 무시되고 같은 Output으로 매몰될 여지가 있음
  • 30. CycleGAN의 Loss 컨셉 핵심 컨셉 : 따라서 추가적인 loss의 조건은 원본 이미지로 reconstruct 되게끔 강제하는 것이다. 즉, 이 의미는 사진의 style을 바꾸는데 다시 원래 그림으로 복구 가능한 정도로만 바꾸라는 뜻이다.
  • 31. CycleGAN의 Loss 함수 기존 GAN Loss는 유지한다. 추가적으로 생긴 loss는 가짜이미지를 다시 genration한 이미지 와 기존 원본 이미지 x의 loss가 최소화 되어야 한다는 것이다. 마치 pix2pix의 pixel level difference를 추가해준 개념이다.
  • 32. 자 따라서 아래의 loss 함수로 위의 역할을 수행할 수 있게 되었 다. 다음 슬라이드에서 조금만 더 Loss에 대해 생각해보자.
  • 33. 반대방향 학습 같은 맥락으로 반대 방향의 학습도 가능하다. F가 G의 역함수 개 념이니까 이게 가능하다. 예를들어, 바로 위의 학습이 모네 그림 -> 실사 이미지의 학습이 라면 이번에는 실사 이미지 -> 모네 그림으로의 학습을 수행하 는 것이다.
  • 34. CycleGAN loss함수의 완성 따라서 위의 두 방향의 학습을 합치면 loss가 아래와 같이 된다. Cycle GAN은 이 두 방향의 loss를 합친다. Cycle GAN 연구Lab에 따르면 실제로 두 방향이 한 방향으로만 학습을 시켜보면 결과가 좋지 않았다고 한다.
  • 35. CycleGAN의 학습 결과 #1 학습의 결과는 아래와 같다. 그림 -> 사진 변환이 가능하다.
  • 36. CycleGAN의 학습 결과 #2 반대로 사진 -> 그림으로 바꿀수도 있다.
  • 37. CycleGAN 적용 사례 #1 loss를 이것저것 뺐을 때 어떤 결과가 있는지 실험을 해보았다. city scape 데이터셋을 살펴보자. 정답지는 사람이 직접 색깔로 label해 놓은 데이터셋이다. GAN만 사용하면 input으로 돌아오지 못하고 거의 같은 이미지 로 수렴한다.(label 데이터) 실험 시 가장 좋은 성능은 CycleGAN을 사용했을때였다.
  • 38. CycleGAN 적용 사례 #2 되돌아오는 이미지는 아래와 같다. 원본은 GTA 스크린샷, 정답지는 자율주행 차량 사진이다.
  • 39. CycleGAN 설계 특징 Generator 아키텍쳐 Cycle GAN연구에서 G의 아키텍쳐를 세우는게 매우 중요한 것 을 발견하였다. Disco GAN은 아래와 같은 G 아키텍쳐를 지닌다.
  • 40. CycleGAN의 첫번쨰 아키텍처 최초의 Cycle GAN은 U-Net을 사용하였다. 장점은 skip connection으로 인해 디테일이 훨씬 더 많이 간직된 다는 장점이 있지만 단점은 두가지의 컨텐츠가 비슷한 경우 Skip Connecton을 최대 한 사용하려고 하여 성능이 좋지 못했다고 한다.
  • 41. CycleGAN의 마지막 아키텍처 ResNet을 사용하였 장점은 이미지 퀄리티 입장에서 좋았는데 단점은 메모리를 많이 사용한다고 한다. 학습 파라미터가 적어 많은 변형을 일으킬 수 없다는 특징이 있 다.
  • 42. GAN Loss 함수의 변경 CycleGAN에서는 cross entropy 사용시 vanishing gradient 문제 가 발생했다. 따라서 대신에 LSGAN을 사용할 때 성능이 잘 나와서 이를 사용 하였다고 한다.
  • 43. L1 loss의 필요성 pix2pix에서 확인했듯이 L1 로스를 추가하는것이 성능 향상에 좋은 듯 하다.
  • 44. L1 loss의 추가의 어려움 CycleGAN은 아래 이미지를 얼룩말로 바꾸는 정답이 없기 때문에 직 접적인 L1 loss를 구하기 어려움
  • 45. CycleGAN의 간접적 L1 loss #1 얼룩말을 말처럼 바꾼 이미지를 이용하여 가짜 L1 로스(여기서 얼룩말이 정답지)를 넣어서 효과를 보았음 F(y)로 이미지를 생성한 뒤 이를 G()를 적용하여 정답지 y와 비교
  • 46. CycleGAN의 간접적 L1 loss #2 당연한 얘기지만 얼룩말을 넣었을때 얼룩말이 나오게끔 나오는 loss를 G에 추가하는 것도 도움이 된다.(identity loss)
  • 47. L1 loss를 추가한 결과물 L1 loss가 더 안정적인 가이드 라인이 되어준다. 그림-> 사진 에서 더 안정적인 결과물이 나왔다.
  • 48. Replay Buffer GAN 트레이닝을 진행하며 똑같은 샘플별로 성능을 살펴보면 트레이닝을 돌릴때마다 성능이 천차만별이다. 이 불안정성을 해결하기 위해 주기적으로 Generator가 만들어 놓은 사진을 다시 discriminator에게 보여줌, 이 부분은 Discriminator에게만 적용함
  • 49. CycleGAN의 한계점 모양 CycleGAN의 가장 큰 단점은 모양을 바꾸기가 어려움 사과를 오렌지로 바꾸는 것도 모양을 바꾸기가 어려움
  • 50. 데이터 분포 말 위에 사람이 있는 사진이 많지 않을 때 얼룩말로 바꾸는 것이 정상 동작하지 않는다. Optimization의 문제라기 보다 Dataset의 문제라고 생각됨
  • 51. Domain Adaption CycleGAN으로 어떤 도메인에 적용할 수 있는지 사례를 찾아보자.
  • 52. GTA5 <-> real streetview GTA 사진을 실제 거리뷰로 바꾸는 일을 시켜보았다.
  • 53. 재밌는 점은 정답지에 항상 벤츠 장식이 있어서 이것을 만들어 내는 것을 확일 할 수 있다.
  • 54. GTA와 자율주행의 관계 GTA 이미지 혹은 게임의 의미는 이 게임 자체가 좋은 무인자동차 학 습 TOOL이다.
  • 55. GTA를 통한 자율주행 모델링 실사에 가까운 GTA 게임에서 Object Detection을 훈련시키고 실제 도로에서 검증한다.
  • 56. GTA를 통한 자율주행 모델링의 한계점 하지만 GTA에서 학습된 모델로 실제 환경에서 돌렸을 때 정확 도가 그렇게 높지가 않다. Per-class accuracy는 object 인식의 확률의 평균(가로등은 몇%, 자동차는 몇% 등)이고 per-pixel accuracy는 픽셀단위 인식의 정 확도를 의미한다.
  • 57. 현재 기술의 한계점 현존하는 최고의 기술로 하더라도 6% 향상밖에 안됨
  • 58. CycleGAN의 성능 개선 별다른 Trick없이 Cycle GAN 으로 이미지를 실사화 하여 훈련시 켰을 때 기존의 정확도를 가볍게 뛰어넘었다. 이때 per-pixel accuracy로 보더라도 실사 훈련인 93.1% 대비 82.8%로 훌륭하다.