Deep Learning study
생성 된 이미지를 평가할 때는 두 가지를 고려해 평가한다고 생각할 수 있습니다. Fidelity : 얼마나 실제같은 이미지를 생성하는가. Diversity : GAN이 얼마나 다양한 이미지를 생성하는가. 하지만 GAN 을 평가할 때 가장 많이 쓰이는 FID score 는 단순 두 분포의 거리를 측정하는 방법이기 때문에, 각각에 대한지표를 알 수 없다는 단점이 있습니다. 이렇게 조금은 애매한 지표이지만 그렇다고 GAN이 생성하는 이미지들의 quality를 측정할 마땅한 다른 방법이 딱히 없기에 가장 널리 쓰이고 있죠. Improved Precision and Recall Metric for Assessing Generative Models (GAN 을 평가지표로 Precision 과 Recall 을 처음 ..
torch.nn.functional.pad(input, pad, mode='constant', value=0) 내가 원하는대로 padding을 줄 수 있는 함수이다. pad 를 마지막 dim에만 줄 경우 (pad_left, pad_right) 모양으로 준다. pad 를 마지막 2개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom) 모양으로 준다. pad 를 마지막 3개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom, pad_front, pad_back) 모양으로 준다. 예제를 보면서 쉽게 생각해보자. >>> t4d = torch.empty(3, 3, 4, 2) #쉽게 이미지를 생각하자 (batch, channe..
오늘 볼 것은 GAN에서 나타나는 mode collapse에대한 문제제기와 이 현상이 생기지 않도록 하는 새로운 방법을 소개하는 논문입니다. 이미지 합성(image synthesis)라하면 가장 먼저 떠오르는 것은 GAN입니다. 하지만 GAN framwork를 사용하는 모델들은 각 input image에 따른 그럴듯한 이미지(plausible image)를 단지 하나, 또는 기껏해야 고정된 수 만큼의 output을 만을 가지게 됩니다. 이논문에서는 semantic segmentation map들로부터 생성하는 이미지에 중점을 두고 같은 semantic layout에 대해서 다양한 형태를 가진 임의의 수 만큼의 이미지를 생성해내는 새로운 방법을 소개합니다. Introduction 현재까지 이미지 생성에 대..
최근 generative network들이 많은 발전을 이루었음에도, 그 이미지 생성에대한 매커니즘은 여전히 잘 알려지지 않았습니다. 그래서 이 논문에서는 explorative sampling algorithm to analyze generation mechanism of DGNNs 을 소개합니다. 이 방법으로 한 쿼리로 부터 동일한 특징을 가진 sample들을 효율적으로 얻을 수 있다고 합니다. Instoduction 일반적으로, 생성모델은 latent space의 한 점(point)을 data space의 한 샘플(sample)에 매핑(map) 합니다. 즉 데이터 인스턴스 들은 latent vector로 임베딩(embedded)되는 것이죠. 그런 latent space 는 모델의 구조로부터 나온 경계..
오늘 정리할 것은 최대 우도 추정(MLE) 방법입니다. MLE를 공부하기 전에 Bayes theorem(베이즈 정리)를 간단하게 알아보겠습니다. Bayes Theorem 베이즈 정리는 두 확률변수의 사전확률(prior)와 사후확률(posterior)사이의 관계를 나타내는 정리입니다. 즉 사전확률(prior) 로부터 사후확률(posterior)를 알 수있게해줍니다. B를 관측 데이터, A를 모델 이라고 합시다. $$ P(A \mid B) \ = \ {{(P(B \mid A)P(A)} \over {P(B)}} $$ 사후확률(posterior) : P(A|B), B가 관측되었을때 A의 를 나타냅니다. 우도(likelihood) : P(B|A), 해당 관측치(B)가 나올 확률을 나타냅니다. 사전확률(prior)..
#include using namespace std; #define FOR(i,a,b) for(int i=a ; ib ; i--) int x[4] = {0,0,1,-1}; int y[4] = {1,-1,0,0}; int R,C,T,r1,r2,r[2],m[51][51],v[51][51]; bool check(int x, int y){ return (x=0 && y=0); } void proliferation(int a, int b){ int cnt=0,prol = m[a][b]/5; FOR(i,0,4){ int nx = a + x[i], ny = b + y[i]; if(check(nx,ny) && m[nx][ny]!=-1) cnt++; } m[a][b] = m[a][b] - prol * cnt; v[a][..