728x90

Paper

https://arxiv.org/abs/1707.07418

 

 

G-openmax는 openmax에다가 gan을 이용하여 생성한 sample들을 이용해서 추가적으로 openset에 대한 mean vector를 만들어 distance를 구하고 openset여부를 판별하는 방법이다.

과정은 아래와 같다.

 

- 먼저 Known Class에 대해서 Net을 학습시킨다.

- Unknown sample을 생성하기 위한 generative model을 학습시킨다.  (DCGAN)

- 이때, 생성한 sample들 중에서 openset sample을 선정해야 한다.

 

- openset sample을 DCGAN으로 생성한 sample을 Net에 통과시켜서 틀린 sample들로 선정한다.

: Net이 커버하지 못하는 sample이므로.. open sample이라고 생각.

 

-본 논문에서 open space는 original space의 sub-space라고 가정한다.

- 즉,openset 또한 training dataset이 내부에 존재하는 set이라고 생각, 그러므로  openset은 다른 분포의 데이터셋을 포함하지 않는다고 가정한다.

(Thus, in this paper we assume that open space classes belong to a subspace of the original space, which includes known classes. In order to preserve it, we also do not consider an unlikely scenario when the test set contains objects from other datasets. )

 

- 이러한 가정을 하는 경우, openset problem은 closed set에서 sampling을 하는 문제로 바꿀 수 있다는 점이 장점이다.

(The advantage of building algorithm based on this assumption is that we would turn an open space classification problem into a standard closed set problem by sampling objects from known subspace.)

 

이때 생성을 하는 방법은 DC-GAN을 이용한다. (논문에서는 VAE에도 적용할 수 있다고 하긴 한다. -맞는 말임)

생성하는 방법은 원래는 특정 Class에 대해서 one-hot vector로 생성하지만, 여기서는 open-example을 만드는 것이 목표이기 때문에 normal distribution을 이용하여 class vector를 생성한다. - we can generate a class mixture vector m ∈ R N using any distribution Pnorm (e.g. Normal distribution) by sampling m1,...,mN−1 from Pnorm, and assigning mN = 1 − ∑ N−1 i=1 mi , such that ∑ N i=1 mi = 1 as for the basis vectors bi ∈ R N. The dimensionality of class subspace space (number of classes) is typically much smaller than the dimensionality of the original space (number of pixels), so the generated open set images will be located is a small nonlinear subspace of it as desired.)

 

 

어찌 되었던 이렇게 생성된 unknown sample을 이용해서 Net_G를 학습시킨다.

 

Openmax는 known class에 대해서 mean vector와  traininig sample에 대해서 disrance들을 구하고 weibull fitting을 진행했고, 이를 통해 logit값을 recalibaration해서 각 class에 이상치인 정도를 openset score로 고려하였다.

 

이렇게 known class에 대해 이상치에 대한 probability를 계산하고 이를 기반으로 openset score를 구하는 방식을 논문에서는 pseudo probability estimation으로 openset을 추론한다고 표현한다.

 

그러나 G-openmax는 이러한 pseudo probability estimation을 사용하지 않는다. 

 

GAN을 이용해 생성한 sample을 사용해 직접적으로 openset에 대한 mean vector를 만들고, weibull distribution도 직접적으로 fitting한다. (non-pseudo probability estimation)

 

그래서 G-openmax의 경우, test time때 input으로 sample이 들어오는 경우  Known class와 Unknown class에 대해 모두 weibull distribution에 대해 이상치 확률값을 도출하고 이를 통해 calibration을 하고 softmax를 통과시킨다.

 

이때, unknown class를 판별하는 방법은 Weibull model로 calibration을 하고 softmax를 통과해 나온 최종 확률이 특정 threshold값을 넘지 않을때 이다.

 

 

- GAN으로 생성된 openset example results

 

GAN으로 생성된 sample들의 결과이다.  MNIST와 같은 경우는 다른 2class의 정보가 섞임으로서, 새로운 8이라던가, 9 class와 같은 모형이 생성되기도 하고, 이는 openset recognition에 도움이 된다고 생각을 한다. 그러나 더욱 복잡한 dataset의 경우 gan으로 sample들을 생성하더라도, openset을 나타내는 sample이라고 보기 어려운 sample들이 생성되었고, 이는 크게 도움이 안되는듯 하다.

 

(However, we perfomed the same experiment as in [3] and figured out there are no obvious performance improvement by using G-OpenMax over the natural image setting. A more general reason might be that the generated images are not plausible with respect to the training classes in order to be good candidates to represent unknown classes from open space. More specifically, unlike the MNIST and HASYv2 dataset, ImageNet classes enjoy large variety, therefore not many common features are encoded in the learned latent space. Since our method is based on disentangling class information from other object features, the results it produces in this case do not differ much from interpolation in the pixel space.)

 

 

Pros

 

GAN을 이용해 Openset example을 생성한다는 idea가 재밌긴 하다.

idea 자체는 closed set의 sample들을 조합해서 training data가 나타내지 못하는 open-sub space공간을 GAN으로 생성하겠다는 것이다. 그러나, open space를 기존 training sample로 채운다는 것이 쉽지 않은 방법이라고 생각한다.

 

그래서 MNIST와 같은 간단한 데이터셋에 대해서는 이게 가능하지만, IMAGENET과 같은 real-image에서는 잘안되는 것을 확인할 수 있다.

 

 

Cons

 

간단한 데이터셋에서 밖에 안되는 것이 사실 큰 단점이다.

그래도 interpolation 개념을 가져와 open example을 생성하는 개념은 재밌는 생각이다.

728x90

+ Recent posts