목록2022/06 (8)
Joonas' Note
설명 이미지들의 평균 픽셀값을 확인하고 싶은 경우에 사용하면 된다. 오래 걸리는 경우에 로딩을 표시하려고 tqdm을 사용했는데 그냥 빼도 된다. 이미지의 픽셀값을 전부 다 저장하고 평균을 출력하다간 메모리가 터진다. 그래서 Moving average로 해결했다. 코드 HTML 삽입 미리보기할 수 없는 소스 결과 아래와 같이 1,000장 정도 되는 얼굴 사진을 모두 겹쳐서 그려볼 수 있다.
(이전글 작성 중) 논문: https://arxiv.org/pdf/1703.10593.pdf 논문 저자 PyTorch 구현체: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/ CycleGAN Image-to-Image Translation에 대한 논문 중 pix2pix를 기반으로 나온 이후의 논문이다. (pix2pix는 작성중) 그러다보니, Discriminator는 PatchGAN을 쓰고, Generator로는 LSGAN을 사용하고 있다고 한다. pix2pix는 데이터 셋에서 변환하려는 두 이미지 쌍을 pair하게 가지고 있어야했지만, CycleGAN에서는 unpair한 데이터 셋 A, B를 주어도 잘 변환하는 점이 특징이다. 즉, 실제 사진을 모네..
예전에 블로그 스킨을 수정한 적이 있다. 블로그 스킨 수정 반응형이면서 심플했던 티스토리 기본형 #2를 사용하고 있었다. 오랫동안 사용했는데, 갑자기 몇 가지 고치고 싶은 부분이 생겼다. 왼쪽에 블로그 제목이 너무 큰 부분을 차지하고 있어서, 글에 blog.joonas.io Version 1.4 - 2023/06/03 - 다크 모드 지원 (오른쪽 상단 스위치로 수동 설정 또는 시스템 설정을 통해 자동으로 반영) Version 1.3 - 2023/01/29 - 글 목록에서도 목차(TOC) 생성을 시도하는 오류 수정 - 코드 블럭에 대한 CSS를 아래와 같이 수정 Version 1.2 - 2023/01/03 grid layout으로 인한 레이아웃 깨지는 버그 수정 Version 1.1 - 2022/06/18..
이전 글 - [딥러닝 일지] WGAN (Wasserstein GAN) WGAN-GP 논문: https://arxiv.org/abs/1704.00028 앞선 WGAN에서 애매하게 넘어간 것이 있다. 바로 weight clipping 이다. 얼마만큼의 weight로 clipping을 제한할 것인가는 매직 넘버였다. 논문에서는 [-0.01, 0.01]을 사용했지만, 대부분의 가중치들이 양쪽 끝에 걸린 것을 볼 수 있다. Gradient penalty는 weight clipping처럼 한 쪽으로 몰려있지 않고 가중치가 고르게 퍼져있다. 변경 사항으로는, loss function을 gradient penalty를 계산해서 새로 정의한 것과, 판별자 모델에서 배치 정규화(Batch normalization) 층이 ..
이전 글 - [딥러닝 일지] PyTorch로 DCGAN 훈련해보기 WGAN 논문: https://arxiv.org/pdf/1701.07875.pdf DCGAN의 한계와 차이점 WGAN은 기존의 DCGAN 네트워크 구조는 거의 그대로 두고, 손실 함수만 바꿔서 학습을 안정화시켰다. 모드 붕괴 이진 분류(Binary Cross Entropy)로 진짜/가짜 여부만 판별하기 때문에 발생하는 문제가 있다. 결국은 판별자를 속이는 이미지를 만들도록 학습했기 때문에, 잘 속이는 일부 샘플(mode)을 발견하면 그것만 계속 만들어낸다. 잠재 공간의 모든 포인트가 일부 샘플로 모이면, 손실 함수의 미분값이 0에 가까운 값으로 무너지게 된다. (mode collapse) 이전 글에서도 직접 학습해 본 결과에서 확인할 수 ..
이전 글 - [딥러닝 일지] VAE; Variational Auto Encoder DCGAN Deep Convolutional Generative Adversarial Network에 대한 내용은 인터넷에 충분하게 많이 있으니 생략한다. 아래 링크가 가장 읽기 좋았다. https://jaejunyoo.blogspot.com/2017/02/deep-convolutional-gan-dcgan-2.html https://memesoo99.tistory.com/32 논문 링크: https://arxiv.org/pdf/1511.06434.pdf Tutorial 파이토치 공식 문서의 튜토리얼에 DCGAN에 대한 코드와 설명이 이미 잘 되어있다. DCGAN Tutorial — PyTorch Tutorials 1.11..
이전 글 - [딥러닝 일지] Auto Encoder (with MNIST) AE와 다른 점 인코더로 매핑한 잠재 공간의 어떤 포인트들이 정규 분포의 형태로 만들어진다는 점이다. 다시 말해, 디코더로 만들어지는 비슷한 샘플 이미지들은 비슷한 잠재 공간으로부터 만들어진다는 의미이다. 잠재 공간을 살펴보면, 각 레이블별로 AE에 비해 더 뭉쳐있을 것이다. 이제 encoder는 각 차원별로 확률 분포를 구하기 위해 평균(mean)과 표준편차(std)를 학습한다. 특징들의 평균과 분산을 계산하는 것이다. z가 되는 수식에서 엡실론 \( \varepsilon \) 은 표준 정규 분포 \( {\displaystyle \mathrm {N} (0,1)} \) 를 따르는 적당한 난수이다. 코드에서 바뀌는 부분은 이렇다. ..
이전 글 - [딥러닝 일지] MNIST Competition 생성 모델 이번에는 MNIST 데이터셋으로 0~9 사이의 숫자를 주면 28x28 크기의 숫자 이미지를 만들어내는 생성 모델을 연습했다. 그 중에서도, 가장 기초적인 형태의 오토 인코더(Auto Encoder) 모델이다. 입력 이미지를 잠재 공간(Latent space)의 어떤 형태로 만드는 Encoder 부분과, 잠재 공간의 값을 다시 재구성하는 Decoder 부분으로 이루어진다. 여기서 잠재 공간의 차원은 2개, 10개 등 상관없고 당연하겠지만 고차원일수록 많은 표현들을 내포할 수 있으므로 좋다. 레이어를 분리해서 학습을 진행하는 경우도 있고 하나로 합쳐서 학습해도 되는데, 중간값을 확인할 수 있도록 분리해서 진행했다. encoded = En..