■ Key words
ㆍGAN(Generative Adversarial Network)
ㆍDCGAN(Deep Convolutional Generative Adversarial Network)
- Latent
ㆍCycleGAN
■ 주요내용
ㆍGAN(Generative Adversarial Network)
- 구성 : 생성모델(Generator)과 판별모델(Discriminator)이 대립적인 과정을 통해 동시 훈련.
판별모델은 실제 이미지를 바탕으로 분별하므로, 생성모델 보다 초기에 더 좋은 성능을 보임.
- 생성모델(Creator/Generator) : Random seed(noise)로부터 실제로 있을법한 image 생성
- 판별모델(Discriminator) : 만들어진 image와 input에 넣은 실제 image 비교
⇒ 학습하는 동안 Generator는 더 실제 같은 image를 만들어 내고, Discriminator는 더 잘 구별하게 됨
⇒ Discriminator가 생성된 이미지와 실제 이미지를 구별하지 못할 때 학습 종료
ㆍDCGAN(Deep Convolutional Generative Adversarial Network) : 감별자/생성자는 개별적으로 동시에 학습 진행
- Creator : Random seed(noise)를 입력받아 실제로 있을법한 image 생성
· 손실함수 : 감별자를 얼마나 잘 속였는지를 수치화
; 생성된 이미지에 대한 감별자의 결정과 1로 이루어진 행렬 비교
- Discriminator : 합성곱 신경망(CNN, Convolutional Neural Network) 기반의 image 분류기
⇒ 진짜 image에 (+), 가짜 image에 (-) 출력 / 이중분류(True/False)이므로 BinaryCrossentropy, sigmoid 사용
· 손실함수 : 가짜 이미지에서 진짜 이미지를 얼마나 잘 판별하는지 수치화
; 진짜 이미지 : 1 / 가짜 이미지 : 0 → 두 행렬 비교
⇒ Gradient를 사용해 생성자와 감별자의 학습 업데이트
- Latent
ㆍCycleGAN(Cycle-Consistent Adversarial Networks)
- 주기 일관성 손실을 사용하여 쌍(pair; 이미지의 구도;형태가 같은)을 이루지 않는 이미지들도 학습을 가능케 함
* 손실함수 : 학습할 한 쌍의 데이터가 없으므로, 주기 일관성 손실 적용; 결과가 원래 입력에 가까워야 함
⇒ 실제 이미지에 변형을 가하고, 이를 복원한 이미지가 실제 이미지와 얼마나 차이가 있는지 비교.
→ 소스 및 대상 도메인 간의 1:1 매핑 없이 한 도메인에서 다른 도메인으로 변환 가능
; 한 이미지 도메인의 특성을 캡쳐하고, 이것을 다른 이미지 도메인으로 변환(적용; 얼룩 → 말)
- 해상도 향상, 사진의 그림화, 스타일 변환 등에 활용 가능
ㆍ기타 GAN
- Least Squares GAN : LSGAN
- Semi-Supervised GAN : SSGAN, Class 분류와 동시에 진위여부를 확인하는 GAN
- Auxiliary Classifier GAN : Class, noise를 이용하여 만들어내는 GAN
- Stack GAN : Text를 이용해서 이미지를 생성하는 GAN
- Cycle GAN : 그림을 사진으로, 사진을 그림으로, 말을 얼룩말로 얼룩말을 말로!!
- Disco GAN : Cycle GAN과 유사, 가방에 신발 디자인을 반영하는 Cross Modality GAN
- Design GAN : 새로운 디자인 티셔츠를 만들기
- Style GAN : 1024x1024 고화질의 이미지를 만들어내는 GAN
Adapitve instance normalizaton : AdaIN - Style transfer
■ Session note
ㅁ 오전 session
ㆍGAN
- 목적 : 세상에 있을 법한 image를 만들어 내는 것
- 구조
· Generator : 가짜 이미지 생성 시도
· Discriminator : 가짜 이미지 판별
- 학습 : discriminator로 generator를 통해 생성된 image가 가짜인지 판별할 수 없게 되면 학습 종료
- 활용 : 숫자 같은 글자 생성 / 안경 낀 남자와 안 낀 남자를 학습하여 안경 안 낀 여자에게 안경 씌우기
* Auto Encoder는 이미지에서 특성을 추출한 반면, GAN은 일단 그려보면서 실제 이미지와 비교를 통해 맞춰가는 것
ㆍCycle GAN
- 말 image와 얼룩말 image의 구도가 달라도 domain의 특성만 잡아내어 학습함
⇒ 얼룩말 image로 가짜 말 만들기
→ 생성된 말 image에서 말의 특성을 제거하여 얼룩말 원본으로 돌아오는지 확인하여 말의 특성이 잘 적용됐는지 확인
→ 다른 구도 말 image와 비교하여 말이 제대로 만들어졌는지 확인
* 학습이 동시에 같이 진행됨; 얼룩말에 말 특성 적용 + 말의 특성 확인하기
? 정규화 : (0, 1), (-1, 1)의 차이 알아보기
ㆍGAN : 있을 법한 이미지를 만들어 내는 것
ㆍDCGAN
- Generator(생성자) : latent vector를 받아 image를 생성
- Discriminator(감별자) : image의 진위여부 판단
* Discriminator의 성능이 너무 좋으면 학습이 진행되지 않기 때문에 초기에 generator의 학습을 먼저 하거나 학습률을 높게 한 후 discriminator 사용
? freeze : 생성자를 먼저 학습
? check point : early stopping 처럼 학습 중간에 저장하는 기능
ㆍCycleGAN : 이미지 변환, 학습 데이터에 pair(배경, 구도, 자세가 같은 쌍)가 없을 경우 사용
- 특징 : 특성을 바꿔줌(얼룩무늬 / 사과에 오렌지 적용 / 여름과 겨울 느낌)
? GAN : 구현 - 논문과 같이 논리구조 짜기 / 사용 - 기존 라이브러리 활용
ㆍLatent Vecor : random noise - generator에서 image 생성 시 활용
? DCGAN에서 생성자를 학습시키는게 랜덤한 노이즈를 주고 이미지를 얼마나 잘 만들어내는지를 학습시키는건가요? 아니면 생성자가 사용하는 특성을 학습하는건가요?
- up-convolution, convolution 모두 가중치 update 필요 / 방향성과 목적에 따라 generator와 discriminator의 가중치 학습 방향이 다름
ㅁ 오후 Session
* 꼭 deep learning을 활용해야 하는가? machine learning으로 해결할 수 있는 문제는 아닌가?
ㆍCNN : filter(가중치 집합, kernel)를 사용하여 가중치 공유; 학습할 parameter 감소
- stride : filter로 학습할 때 한 번에 이동할 거리
- padding : 학습할 때 정보소실 및 크기 보존을 위해 테두리에 감싸는 것
- pooling : max, average 등 차원을 축소하는 단계 / channel 수는 변하지 않는다 / 가중치 X
ㆍ전이학습(Transferring Learning) : 다른 데이터로 학습한 모델을 가져와 활용하는 것
ㆍ이미지 분류 task
- Semantic Segementation : pixel 단위로 분류
- instance segmentation : 객체별 분류 / U-Net
- object detection : 박스 단위로 개체 인식 / R-CNN
ㆍAugmentation
- 학습 데이터 증가
- 다양한 상황에 대처
- 일반화 및 과적합 방지
- train data에만 적용
ㆍAuto Encoder : 차원 축소 → 특성 추출, 노이즈 제거, 이상치 탐지
- 인코더 : 차원 축소, 압축 → latent vector(variable, code 등)
- 디코더 : 이미지 복구; 인코더에서 원본의 특성을 잘 추출(압축)했는지 확인하기 위함
ㆍGAN : 세상이 있을 법한 이미지 생성
- 생성자 : random noise를 활용하여 이미지 생성
- 감별자 : 생성한 이미지와 실제 이미지 비교를 통한 감별
⇒ 서로 경쟁하며 동시에 학습
ㆍCycleGAN : 특성 변환
- label, pair가 없는 image 활용
- 원본 이미지 → 이미지 변형 → 특성을 활용한 원본 이미지로 변경 후 원본과 비교
* DCGAN : random noise → 실제 image / CycleGAN : 실제 image → 변형한 image
? Discriminator의 활성화함수는 True/False이기 때문에 일반적으로 sigmoid를 사용하나, 다른 함수를 사용해도 된다. 사용자가 코드/알고리즘을 짜기 나름
? LSTM 등 hidden layer의 특성중요도(permutation importance 등)를 추출하는 것은 현재 어렵다. 해석하려는 노력 중
* papers with code
■ 주요함수
ㆍ
■ Reference
ㆍGAN loss function : https://m.blog.naver.com/PostView.naver?blogId=euleekwon&logNo=221558014002&targetKeyword=&targetRecommendationCode=1
[GAN] 이제 제발 이해하자 GAN - 1장 (수식)
지난번에 이어서 이제 수식을 제대로 뜯어보자. 일단 왼쪽에 min 과 max 가 왜 나왔을까.. 왼쪽에서 G는 ...
blog.naver.com
ㆍGAN : https://ysbsb.github.io/gan/2020/06/17/GAN-newbie-guide.html
딥러닝 GAN 튜토리얼 - 시작부터 최신 트렌드까지 GAN 논문 순서 | mocha's machine learning
이번 포스팅에서는 GAN의 개념, GAN의 종류, 주요 논문들에 대한 짧은 리뷰를 이야기하려고 합니다. GAN의 종류들은 중요하게 언급되는 모델들을 선정하였고, 이 모델들에 대해서 간단히 설명을 듣
ysbsb.github.io
ㆍConditional GAN : https://youtu.be/iCgT8G4PkqI
ㆍDC-GAN : https://youtu.be/EYrt7fGyA08
ㆍGAN : https://youtu.be/N9ewzLUZhL8
ㆍ순환 일관성 적대 네트워크(cycleGAN) : https://ichi.pro/ko/gandanhan-yeong-eolo-doen-sunhwan-ilgwanseong-jeogdae-neteuwokeu-233980517355271
간단한 영어로 된 순환 일관성 적대 네트워크
CycleGAN은 이미지를 이미지로 변환하는 방법입니다. 불행히도 관련 수학을 완전히 이해하거나 이해하지 않고도 CycleGAN을 사용할 수 있습니다.
ichi.pro
ㆍDeep Learning : http://introtodeeplearning.com/
MIT Deep Learning 6.S191
MIT's introductory course on deep learning methods and applications.
introtodeeplearning.com
ㆍCycleGAN : https://ichi.pro/ko/gandanhan-yeong-eolo-doen-sunhwan-ilgwanseong-jeogdae-neteuwokeu-233980517355271
간단한 영어로 된 순환 일관성 적대 네트워크
CycleGAN은 이미지를 이미지로 변환하는 방법입니다. 불행히도 관련 수학을 완전히 이해하거나 이해하지 않고도 CycleGAN을 사용할 수 있습니다.
ichi.pro
'Data Science > 4. 딥러닝' 카테고리의 다른 글
[n433]Auto Encoder(AE) (0) | 2021.08.26 |
---|---|
[n432]Segmentation & Object Recognition (1) | 2021.08.25 |
[n431]Convolutional Neural Network(CNN) (0) | 2021.08.24 |
[n424]Transformer and BERT, GPT (0) | 2021.08.20 |
[n423]Language Modeling with RNN (0) | 2021.08.19 |