목록전체 글 (255)
Joonas' Note

--orphan 옵션으로 체크아웃하면, 이전 히스토리가 아예 없는 새로운 브랜치가 만들어진다. git checkout --orphan brand-new-branch 위 커맨드를 실행하면 brand-new-branch라는 이름으로 새로운 브랜치가 생기는데, 이전 히스토리가 없다. 이대로 커밋을 하나 쌓아보면 이렇게 된다. 참고 How to create a new (and empty!) "root" branch? I would like to define a new "root" branch in this git repository. By "root" branch I mean a branch that is entirely independent of all the other branches in the repos..

JUnit5에서는 4가지 Lifecycle 관리 annoation을 제공한다. JUnit4에서도 있었지만 이름이 바뀌었다. @BeforeAll - (JUnit4 @BeforeClass) @BeforeEach - (JUnit4 @Before) @AfterAll - (JUnit4 @AfterClass) @AfterEach - (JUnit4 @After) Lifecycle 관리 단위를 클래스마다로 바꿀 수 있는데, 호출 순서가 조금 바뀐다. 클래스 인스턴스가 생성되고 호출되므로, @BeforeAll과 @AfterAll은 더 이상 static 함수가 아니어도 된다. 실제 코드는 아래와 같다. HTML 삽입 미리보기할 수 없는 소스 출력이나 클래스 내부 변수의 상태를 확인해보면, 상태가 다른 것을 확인할 수 있다.

설명 이미지들의 평균 픽셀값을 확인하고 싶은 경우에 사용하면 된다. 오래 걸리는 경우에 로딩을 표시하려고 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..