전체 글
-
[CVPR2019]Style-GAN카테고리 없음 2021. 6. 24. 14:58
PG-GAN->Style-GAN->Style-GAN2 로의 두번째 논문. 개인적으로 이 논문은 보통 논문의 2개분량의 novelty가 들어가지 않았나 싶다. Style-GAN2를 우선적으로 구현해보자. Abstract & Introduction Style Transfer에 기반하여 아이디어를 본따왔다 한다. Style Transfer는 style이미지 한장, content이미지 한장을 합성하여 이미지를 만드는 논문. Style Transfer에서 따온 것은 이미지에서 style을 뽑을 수 있다는 것을 활용하여 모델에 style을 계속 주입한다. 이 논문에서는 새로운 모델의 구조만으로 기여도를 높이기 때문에 loss function이나 regularization등은 전혀 건들이지 않았다. 가장 중요한 개념..
-
시간복잡도 & 공간복잡도 대략 계산알고리즘 2021. 6. 22. 16:15
시간 제한이 1초인 문제에 대하여 N의 범위가 500인 경우 : 시간복잡도가 $O(N^3)$인 알고리즘을 설계 N의 범위가 2000인 경우 : 시간복잡도가 $O(N^2)$인 알고리즘을 설계 N의 범위가 100,000인 경우 : 시간복잡도가 $O(N\log N)$인 알고리즘을 설계 N의 범위가 10,000,000인 경우 : 시간복잡도가 $O(N)$인 알고리즘을 설계 N의 범위가 10억 이상인 경우 : 시간복잡도가 $O(\log N)$인 알고리즘을 설계 int a[1000] : 4KB int a[1000000] : 4MB int a[2000][2000] : 16MB 코테에서는 보통 메모리 사용량을 128~512MB로 제한한다. 일반적으로는 데이터의 갯수가 1000만 단위가 넘어가지 않도록 해야한다. 리스트의..
-
[ICLR2018]PG-GAN카테고리 없음 2021. 6. 22. 15:19
Abstract & Introduction 속도와 안정성을 모두 잡는 방법을 제시한다. "When we measure the distance between the training distribution and the generated distribution, the gradients can point to more or less random directions if the distributions do not have substantial overlap, i.e. are too easy to tell apart." -> 우리가 GAN으로 하고 싶은 것은 훈련 데이터 분포로부터 유사한 분포를 만들어 내는 것인데, GAN을 훈련하다가 G가 만들어낸 분포가 훈련 분포와 겹치는 것이 없는, 즉, D가 분류선을 ..
-
가중치 초기화논문&부가지식 2021. 6. 21. 12:18
https://reniew.github.io/13/ 참고 1. LeCun Initialization LeCun은 지난번 소개한 LeNet의 창시자이며, CNN을 세상에 도입한 사람이라 할 수 있다. 1998년 LeCun은 효과적인 역전파를 위한 논문에서 초기화 방법에 대해서 소개했는데 정규분포를 따르는 방법과 균등분포를 따르는 두가지 방법에 대해서 소개하였다.(LeCun 98, Efficient Backprop) 2. Xavier Initialization Xavier Initialization 혹은 Glorot Initialization라고도 불리는 초기화 방법은 이전 노드와 다음 노드의 개수에 의존하는 방법이다. Uniform 분포를 따르는 방법과 Normal분포를 따르는 두가지 방법이 사용된다.(G..
-
[미]파이토치 DataParallel, DistributedDataParallel, apex + amp 정리파이토치&텐서플로우&관련코딩 2021. 6. 13. 14:47
ICCV KD rebuttal 때 이미지넷 요청을 받았었는데 시간이 없어서 찾아보고 적용. 먼저 정리하자면, 분산처리에는 2가지 방법이 있고 파이토치에서는 크게 DataParallel과 Distributed.DataParallel이 있다. 하지만 Distributed는 오류가 뜬다 하여 nvidia에서 제공하는 apex를 썼다. 예를 들어 배치가 128이고 resnet101을 훈련시킨다고 하자. 속도의 향상, 또는 VRAM의 부족으로 인해 분산처리를 이용하여 훈련하려고 한다. 서버 컴이 다 돌아가고 있어서 순서 설명은 GPU4개를 이용하는 것으로 설명하였고, 실제 코드는 확장성을 위해 GPU는 4개중 0,1,3 3개를 이용하는 것으로 구현하였다. 기준 GPU는 0. 1. DataParallel 1. 배치..
-
(미결) GAN학습 할 때 G부터? D부터? + 추론시간은 모델 크기에 비례?파이토치&텐서플로우&관련코딩 2021. 5. 31. 16:32
2021-05-31 : 정석대로라면 보통 D부터 훈련하는게 맞다고 들었다. 그런데 BEGAN을 훈련하다보니 훈련속도가 너무 느려서 오피셜 코드와 비교하다 보니 흥미로운 사실을 발견함. 아래 코드처럼 모든 코드가 같고 훈련 순서만 바꿔서 훈련해보았는데 G부터 훈련하는것이 약 8배정도 더 빠르다. 빠른 코드 느린 코드 또한 DCGAN에서는 위의 경우가 거의 해당하지는 않았지만 G부터 훈련하는것이 약 10퍼센트정도 더 빨랐다. self.conv_layer.append(nn.Conv2d(128, 128, kernel_size=3, padding=1, stride=1)) self.conv_layer.append(nn.BatchNorm2d(128,0.8)) self.conv_layer.append(nn.LeakyR..
-
BEGAN : Boundary Equilibrium Generative Adversarial Networks논문&부가지식 2021. 5. 22. 21:11
교수님 추천으로 읽은 논문. WGAN의 상위 호환으로 보인다. Abstract & Introduction 이 논문 또한 GAN의 수렴성과 불안정성을 개선시키기 위한 논문이다. 하지만 이전 WGAN이나 WGAN-GP, SoftmaxGAN과 달리 수렴성에 대한 지표를 제공할 수 있는 방법론을 활용하였다. Proposed Method 가장 중요한 것은 D를 오토인코더를 썼다는 점. 따라서 대표적인 로스 함수가 아래와 같이 된다. $$L(v) = |v - D(v)|^n$$, where $D : \mathbb{R}^{N_x}$ is the autoencoder function, $\eta \in {1,2}$ is the target norm, $v \in \mathbb{R}^{N_x}$ is a sample of..
-
GAN 모델링 할 때 고려해봐야 할 것들.논문&부가지식 2021. 5. 12. 15:47
먼저 GAN을 훈련 할 때의 주요 문제점을 보자. Converge : 수렴을 안하여 이상한 이미지를 만들어 낸다. 또는 불안정하여 성능이 올라가지 않는다. Mode Collapse : G가 계속 하나의 이미지만 만드는 것. Slow training : gradient가 죽는다. 보통 generator 에서 일어남. 왜냐하면 generator가 더 늦게 update되므로. 1. Feature Matching \=> gene img와 기본 img의 feature에 L2-norm을 취한다. 즉, 1, 0과 같이 이진 클래스로 안하고 KD처럼 아웃풋을 맞추는 것. $$||E\_{x \\sim p\_{data}} f(x) - E\_{z \\sim p\_z (z)} f(G(z))||\_2^2$$ feature ma..