Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- NTMs
- 불규칙적 샘플링
- 의료정보
- Transformer
- operation management
- multi gpu
- nccl 설치
- GaN
- first pg on this rank that detected no heartbeat of its watchdog.
- 분산 학습
- queueing theory
- gru-d
- Time Series
- nccl 업데이트
- 패혈증 관련 급성 호흡곤란 증후군
- pre-trained llm
- length of stay
- 딥러닝
- timellm
- ed boarding
- moirai
- 리뷰
- nccl 업그레이드
- timesfm
- irregularly sampled time series
- 토픽모델링
- m/m/s
- pytorch
- 대기행렬
- ERD
Archives
- Today
- Total
데알못정을
GAN: 존재하지 않는 이미지를 어떻게 생성할까? 본문
728x90
이미지 데이터는 다차원 특징 공간의 한 점으로 표현될 수 있다.
여기 여자아이들 우기 사진이 있다고 하자. 우기의 '코'의 길이 라는 특징 1과 우기의 '눈'의 모양 이라는 특징 2를 확률 변수로 두고 어떤 한 공간상에 표현하면 확률 분포를 만들 수 있다.
생성 모델(Generative Model)은 실존하지 않지만 있을 법한 이미지를 생성할 수 있는 모델이다. 위 다변량 분포와 비슷하게 생성모델이 분포를 만들어 내면 우기의 코의 길이, 눈의 모양과 비슷하게 이미지를 만들어 낼 수 있다. 이와 같이, 생성모델의 목표는 이미지 데이터의 분포를 근사하는 모델 G를 만드는 것이다. 이러한 목적을 갖고 제안된 모델이 GAN 이다.
GAN은 다음과 같이 시간이 지나면서 생성모델의 분포(초록)이 원본 데이터의 분포(검정)에 들어 맞게 학습한다.
GAN의 학습 구조
생성자(Generator)는 latent vector(랜덤 노이즈)를 통해 가상의 이미지를 만들고 식별자(Discriminator)는 실제 이미지와 가상의 이미지를 바탕으로 이 이미지가 실제인지 아닌지 판별한다. 판별한 확률을 바탕으로 loss를 계산해서 경사하강법을 통해 Generator는 더 비슷하게 만들도록 노력하고 Discriminator는 진짜 이미지를 분류해내도록 노력한다. 이렇게 하도록 하는 목적함수의 수식은 다음과 같다.
D(x) 는 데이터가 진짜면 1에 가까운, 아니면 0에 가까운 확률을 뱉는 함수이다. 좌항을 보면 실제 데이터(p_data)로부터 뽑은 샘플을 D(x)에 넣고 log를 씌우게 된다(그 다음 평균값을 취함). D에 대해 함수V가 maximize 된다는 것은 D(x)가 1에 가까워진다는 것이고, 진짜 이미지에 대해서 잘 판별할 수 있도록 한다는 것이다. G(z)의 z는 랜덤 노이즈(그냥 랜덤 값)인데, z를 받아 새로운 데이터를 만든다.(가짜이미지) 이 G(z)를 D( )에 넣어 실제인지, 가짜인지 판별한다. G에 대해 함수V를 minimize한다는 것은 우항의 값을 0에 가깝게 만든다는 것이고,(G는 우항에만 있음) 만약 D(G(z))가 1을 내뱉는 다면 (가짜이미지를 잘 만든 것) 우항이 0에 가깝게 된다. 따라서 G(z)의 목적은 V식이 minimize 되면 되므로 경사하강법을 할때 G 에 대해 미분을 하게되고 반대로 D(x)는 D에 대해 미분을 하게 된다. 구글에 공개되어있는 코드를 통해 손으로 쓴 글 (mnist) 데이터에 대해 원본 데이터와 비슷한 가짜 데이터를 만들어 보았다. 아래 사진은 코드의 일부이다.
(출처에 참고한 코드를 상세하게 설명해 놓은 블로그 주소를 달았다.)
gpu가 연결이 안되서 학습이 너무 느려서 epoch를 100으로 다시 맞추고 학습을 했다.
그 결과 가짜 이미지가 이와 같이 생성이 되었다!
학습 과정을 gif로 만드는 코드를 실행하여 epoch 100 동안 어떻게 학습이 되는지 시각화 해보았다.
출처
[1] GAN 실습 코드 (https://velog.io/@wo7864/GAN-%EC%BD%94%EB%93%9C%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%9D%B4%ED%95%B41)
[2] 나동빈."GAN: Generative Adversarial Networks (꼼꼼한 딥러닝 논문 리뷰와 코드 실습)".YOUTUBE
728x90
'Research' 카테고리의 다른 글
Domain Adaptation in Computer Vision: Everything You Need to Know - Korean Version (0) | 2023.08.06 |
---|---|
Multimodal machine learning (0) | 2023.02.22 |
[CNN/Transfer learning] 타코, 브리또 사진 분류하기 (1) | 2022.09.30 |
DB 설계 및 HeidiSQL을 이용한 DB 구현 PART4: DB 제작 하기 (1) | 2022.09.30 |
DB 설계 및 HeidiSQL을 이용한 DB 구현 PART3: SQL 개념 및 예문 (1) | 2022.09.30 |
Comments