본문 바로가기
Study/Computer Vision

[CV] Statistical object recognition, PCA/LDA, SVD

by 유미미Yoomimi 2024. 6. 9.

📍 Statistical object recognition, PCA/LDA, SVD

2024년 연세대학교 컴퓨터과학과 4학년 과목인 Computer Vision을 수강하며...

 

 

#1. Object recognition에서 categorization에 대한 statistical한 관점

베이즈 정리 (Bayes Rule) 이용: p(zebra | image) = p(image | zebra) p(zebra)

 

  • 사후 확률 (Posterior): p(zebra ∣ image)
  • 우도 (Likelihood): p(image ∣ zebra)
  • 사전 확률 (Prior): p(zebra)

MAP decision (Maximum a Posteriori Decision):

 결국 우리의 목적은 posterior가 최대가 되도록 하는 결정 기준을 세우는 것. 즉, 이미지가 주어졌을 때 그 이미지가 특정 category에 속할 확률이 최대가 되게 하는 결정 기준을 세우는 것이다.

 

이는 두 가지 방식으로 달성할 수 있다.

Discriminative methods: model posterior (p(zebra ∣ image))


Generative methods: model likelihood and prior (p(image ∣ zebra), p(zebra))

p(image | zebra), p(image | no zebra)에 대해 이미지마다 아래와 같이 평가할 수 있음

 

middle->low는 이미지가 zebra가 아닌 경우 해당 이미지일 확률에 대해 모델이 초기에는 중간 확률(Middle)을 할당할 수 있지만, 추가적인 정보나 학습 과정을 통해 그 확률이 낮아질(Low) 수 있음을 나타내는 것이다.

 

결국 두 방식을 비교하면 다음과 같다.

 

C는 class를 나타낸다. generative method는 각 class 내에서 특정 값 x가 발생할 확률을 표현할 수 있고, discriminative method는 특정 값 x가 있을 때 class1일 확률, class2일 확률을 표현할 수 있다.

=> 결국 generative model은 클래스 간의 분포를 명확히 모델링할 수 있고 category가 하나만 있어도 모델링이 되지만, 복잡한 분포를 다루기 어려울 수 있다. 그리고 decision에 있어서 애초에 likelihood를 모델링할 필요가 없는 경우도 있다. 반면 discriminative model은 직접적으로 분류 문제를 해결해(이미지가 있을 때 class 맞히기) 효율적이고 classification rate가 보통 더 좋은데, 클래스 간의 분포를 이해하는 데는 제한적일 수 있다.

 

출처: Alex Holub


 

#2. Bag-of-Words Image Representation

 

  • 기원 1: 텍스처 인식 (Texture Recognition):
    • 텍스처는 basic element나 texton의 반복으로 특징지어짐.
    • 텍스처 인식에 중요한 것은 texton의 identity이지 이것의 공간적 배열이 아님. -> 히스토그램
  • 기원 2: Bag-of-Words 모델:
    • 단어의 빈도수를 기반으로 한 문서의 순서없는 표현. -> 이것도 결국 히스토그램
  • 결국.. "이미지 분류를 위한 Bag-of-Features"이란
    • 특징 추출 -> visual vocabulary 학습 -> feature를 visual vocabulary로 quantization -> 히스토그램
      • visual vocabulary 학습에서 clustering을 씀: K-means clustering
      • cluster center m(ramdomly initialization)에 대해 요소 x와 m의 거리를 다 더해 sum of squared Euclidean
        distances(D)를 계산하여 D를 minimize하기 위한 학습 진행

PCA (PRINCIPAL COMPONENT ANALYSIS), 주성분 분석

 

언제 쓰냐? high dimension data 분석할 때, algorithm 복잡도 낮출 때, denoising할 때, 정보 compress할 때

 

(잠깐! remind. PCA vs. LDA)

 

PCA Step:

Mean center the data
• Compute covariance matrix Sigma
• Calculate eigenvalues and eigenvectors of Sigma

  • Eigenvector with largest eigenvalue_1 is 1st principalcomponent (PC)
  • Eigenvector with kth largest eigenvalue_k is kth PC
  • eigenvalue_k / eigen 총합 = proportion of variance captured by kth PC

Javier Hernandex Rivera
Xiao Fern, Jeff Howbert
Xiao Fern, Jeff Howbert

 

PCA로 data를 preprocessing하면 좋은 점:

* Reduced dimension -> simpler hypothesis space

* Reduced noise

 

PCA 사용시 주의점:

* Fails when data consists of multiple separate clusters. (이것도 LDA 쓰는 게 좋을 때를 뜻함.)

* Directions of greatest variance may not be most informative (PCA가 분산이 가장 큰 방향을 주성분으로 하는 것인데 이 자체가 최선이 아닐 수 있음). 예를 들어 class 구분할 때는 PCA 대신 LDA 쓰는 게 좋음.

* 속도 느릴 수 있음

 

-> 계산을 단순화, 효율화하여 빠르고 안정적으로 PCA 연산을 하기 위해 SVD algorithm을 쓰자!

 

 

여기서 는 X*X^T의 고유벡터로 구성된 직교 행렬, 는 대각 행렬, V는 직교 행렬인데, U를 PCA의 W로 쓰면 된다.