본문 바로가기

Ai Study

[CS231n (2017)] Image Classification

이미지를 인식하기 위해

1. 이미지와 label(이미지 설명)이 모두 있는 dataset을 모으기

2. 머신러닝을 통해 이미지 분류기(classifier)를 학습시키기

3. 테스트용 이미지를 통해 분류기 성능을 평가하기

이 세 단계를 거친다.

 

첫 째로 사용할 분류기는 'Nearest Neighbor Classifier'

현재는 사용하지 않는 분류기이긴 함.

이 분류기로 이미지를 인식하는 과정은

1. 모든 train_image와 train_label을 메모리에 저장

2. test_image(테스트할 이미지 하나)를 모든 training data 이미지와 비교해가며 제일 유사한 것을 찾음

 

비교를 하는 기준 : distance

우선, L1 distance(맨해튼 distance)를 사용한다.

L1 distance = test 이미지의 값과 training 이미지의 값을 뺀 것의 절댓값

ex:) (1,1) - (3,3) -> (2,2)이고, 2+2=4 만큼의 distance를 가짐.

 

Q. classification speed와 training data의 size의 관계는?

A. 선형적임.(반비례적(?)) size가 2배가 되면 시간도 2배가 걸림(속도는 1/2배)

 

L2 distance(Euclidean distance) 도 있음. 어느 distance를 사용할 건지는 hyperparameter이다.

L2 distance = test 이미지의 값과 training 이미지의 값을 뺀 것의 제곱에 루트를 씌움.(일반적으로 두 점 사이의 거리 공식)

 

Nearest Neighbor Classifier은 test 이미지와 가장 거리가 짧은 training 이미지를 고르는 것다면, 

k-Nearest Neighbor은 k개의 가장 가까운 training 이미지들을 고르고, 다수결로 label을 골라 '이 test 이미지는 이거야!'라고 하는 것. 이 떄 k 또한 hyperparameter이다.

 

Q. Nearest Neighbor Classifier에서 test 이미지 대신 training 이미지로 test를 진행하면?

A. 이미 test할 training 이미지가 training 이미지 dataset에 존재하므로 정확도 100%, distance=0이 된다.(이 때 L1 distance를 쓰든 L2 distance를 쓰든 동일)

 

Q. k-Nearest Neighbor에서 위 상황이 실행된다면?

A. 상황에 따라 다르다. 예를 들어 k=5일 때, 당연히 training 이미지 중 1위로 뽑힌 이미지는 그 test에 쓰인 training 이미지 본인(?)일테지만, 2,3,4,5위로 뽑힌 training 이미지가 그것과 다른 label의 이미지일수도 있다.

 

Q. hyperparameter를 정하는 법은?

A. 문제마다 다르다! 해봐야 한다.

 

hyperparameter를 정하는 방법

1. training data에서 20% 정도 validation data를 분리해 hyperparameter를 tune한다.

2. training data의 수가 적은 경우 training data를 여러 개로 분리해 돌아가며 validation data를 맡는 cross-validation을 한다. (5-fold-cross-validation은 training data를 5개로 분리한 것)

 

 

 

 

이제, linear classification으로 넘어갑니다.

linear classification은 parameter 기반의 접근 방식입니다.(parametric approach)

score function = f(x,W)은 10 by 1 행렬이고, f(x,W) = Wx (+b) 에서

W은 10 by 3072 행렬, x는 3072 by 1 행렬(열벡터)이다. (W = parameter, weights)

(편향 b = 10 by 1)

 

Q. what is linear classification?

A. 이미지 내의 모든 픽셀값에 대해 가중치 W를 곱하여 처리를 한 것의 합

 

Cifar-10 dataset에는 10개의 label이 있고, 각각 linear classifier가 있다. 즉, 10개의 선형 분류기가 있는 것.

마치 좌표평면 위에 10개의 선이 있는 것과 같다.