Deep Learning for Computer Vision/Generative Adversarial Networks (GAN)

1. 이미지, 차원(dimension), 그리고 분포(distribution)간의 관계

Do-Woo-Ner 2021. 9. 16. 14:50

안녕하세요. 

이번 글에서는 이미지(data), 차원(dimension), 그리고 분포(distribution)간의 관계에 대해서 설명해보도록 하겠습니다.

 

앞으로 AutoEncoder, VAE, GAN이해하기 위한 가장 기본적인 background이니 만큼 잘 설명해보도록 하겠습니다.

 

 

 

1. 이미지와 차원(dimension) 간의 관계

먼저, 한 가지 질문을 던지면서 글을 시작하도록 하겠습니다.

 

"색(color)을 표현(representation)하기 위해서는 몇 차원이 필요한가요?"

 

답부터 말씀드리면 "색을 표현하기 위해서는 3차원이 필요"합니다. 현실세계에서는 3차원 (R,G,B) 값을 다양하게 조합하여 색상표현할 수 있죠. 그리고, 이렇게 표현된 공간을 "색 공간 (color space)"라고 부릅니다.

 

<그림 출처: https://geraldbakker.nl/psnumbers/rgb-explained.html>
<위 그림을 설명을 위해첨부되었습니다 . 실제 pixel 값과 색상이 매칭이 안될 수 도 있으니 유의하세요 !>

 

 

 

 

 

"그렇다면, 색을 표현할 수 있는 모든 경우의 수는 어떻게 될까요?"

 

당연히 조합 경우의 수를 구하면 되므로 \(255^{3}\)  이 될 것입니다

 

<그림 출처:  https://overface.tistory.com/593>

 

 

 

 

 

"gray color를 표현하기 위해서 필요한 차원은 무엇일까요?"

 

gray color1차원 (0~255) 으로 모두 표현 가능합니다. 또한, gray color표현할 수 있는 모든 경우의 수255가지가 되겠죠. 그래서, 흑백 이미지를 다루는 문제에서는 이미지를 1차원으로 가정하고 gray scale이라고 표현하기도 합니다.

 

<그림 출처:  https://medium.com/javarevisited/converting-rgb-image-to-the-grayscale-image-in-java-9e1edc5bd6e7>

 

 

 

 

 

"앞서 색상관련해서는 정해진 차원(1차원 or 3차원)이 필요하다고 했는데, 그렇다면 이미지를 표현하기 위해서도 정해진 차원이 필요한가요?"

 

결론부터 말씀드리면, 이미지에 대한 차원은 "이미지 크기에 따라 달라진다" 입니다. 아래 gray scale의 튜링 이미지의 크기가 200×200이라고 한다면, 이러한 이미지를 표현하기 위해서는 40000 차원이 필요합니다. 왜 이렇게 고차원이 나오는지 설명해보도록 하겠습니다. (사실 엄밀히 말하면 색상도 R,G,B외에 다른 요소들로 표현할 수 있으면 색상의 차원은 또 달라질 수 있습니다)

 

 

 

 

200×200 gray scale 이미지를 표현한다고 하면 어떻게 생각해볼 수 있을까요? 먼저, 이미지라는 것은 pixel의 조합으로 이루어져 있습니다. 그리고, 하나의 픽셀에는 하나의 색 표현이 가능하죠. Gray scale인 경우에는 하나의 pixel0~255 사이 값 중 하나가 할당될 수 있습니다.

 

<그림 참고: https://blog.tonkabi.com/blog/post/computer-vision-vs-human-vision>

 

 

그렇다면, 200×200 gray scale 이미지의 pixel들을 1차원 일렬로 늘린다고 생각해보겠습니다.

 

<2D 이미지를 1D 이미지로 늘리는 예시>

 

 

그럼 40000개의 pixel이 나올 것입니다. 이때, 각각의 pixel들은 0~255개의 값을 지니고 있죠. 이를 다른 관점에서 보면, 40000개의 독립된 변수로 볼 수 있고, 각각의 변수는 0~255 값의 범위를 갖고 있다고 할 수 있죠. 40000개의 독립된 변수하나의 이미지 구성될 수 있기 때문에, 200×200 gray scale 이미지는 40000차원을 갖는다고 할 수 있습니다. 200×200 이미지는 40000 차원의 독립된 변수들이 갖는 고유의 값들에 의해 표현될 수 있는 것이죠. 

 

 

 

"그렇다면, 200×200 gray scale 이미지를 표현할 수 있는 모든 경우의 수는 어떻게 될까요?"

 

정답은 아래에서 구한 것 처럼 \(10^{96329}\) 경우의 수가 됩니다.

 

 

 

 

 

2. 이미지와 분포간의 관계 

앞서 200×200 gray scale 이미지의 차원 40000차원이고, 표현할 수 있는 이미지의 개수 (경우의 수)는 대략  \(10^{96329}\) 라고 했습니다.

 

"그렇다면, 200×200 gray scale 에서 표현될 수 있는 모든 경우의 수에 해당하는 이미지들은 의미가 있다고 할 수 을까요?"

예를 들어, \(10^{96329}\) 경우의 조합들 중에서는 아래 왼쪽과 같이 의미 없는 이미지(noise image)들도 있을 것이고, 오른쪽 같이 사람이 구별할 수 있는 의미 있는 이미지가 있을 수 있습니다. 

 

<그림 출처: http://web.mit.edu/kenta/www/three/grayscale-noise/zxevanas/images/?S=A>

 

 

여기서 우리는 또 한 가지 질문을 던져볼 수 있습니다.

 

"200×200 gray scale  즉, 40000차원 상에서 의미있는 이미지들은 고르게 분포(uniform distribution)하고 있을까요? 아니면 40000차원이라는 공간의 특정 영역에 몰려있거나 특정 패턴으로 분포(non-uniform distribution)하고 있을까요?"

 

이러한 질문에 을 하는 방법 중 하나는 200×200 gray scale 이미지들을 uniform distribution으로 수 없이 샘플링 해봐서 경험적으로 보여주는 것입니다. 만약, uniform distribution을 전제로 수 없이 샘플링 했을 때, 의미있는 이미지들이 종종 보인다면 의미있는 이미지들이 40000차원 상에 고르게 분포한다고 볼 수 있겠죠.

 

(※ 직관적으로 이해하기 위해 편의상 40000차원을 아래 이미지 처럼 3차원으로 표현했습니다. (즉, 아래 그림은 '본래 40000차원이다'라고 간주하시면 될 것 같습니다))

 

 

"오토인코더의 모든 것"이라는 영상에서 이활석님은 20만번 샘플링한 결과 의미없는 이미지(noisy image)만 추출된 것을 확인 할 수 있었다고 합니다. 이러한 실험을 통해 의미있는 이미지들은 40000차원에서 특정 패턴 또는 특정 위치에 분포해 있다고 경험적으로 결론내릴 수 있게 되는 것이죠.

 

(↓아래 영상 1:01:25초 부터)

 

 

 

 

 

 

 

지금까지 AutoEncoder, VAE, GAN을 배우기 위한 기본 지식들을 정리해봤습니다.

다음 글에서는 AutoEncoder에 대해서 다루면서 dimension reduction에 대한 개념을 소개하도록 하겠습니다. 왜냐하면 VAE, GAN 같은 논문들을 살펴보려면 "latent"말을 이해하기 중요하기 때문이죠!

 

그럼 다음 글에서 뵙도록 하겠습니다!