본문 바로가기

AI

cs231n Deep Learning for Computer Vision 2.Image Classificaiton

이미지 분류를 위한 알고리즘 만들기 어렵다. 과거 attempts: find edges, corners..

⇒ 따라서, Data-driven approach : collect dataset, Use ML to train, Evaluate on new images.

 

 

CIFAR10 : dataset with 10 categories, 50k train images, 10k test images

 

 

 

 

Nearest Neighbor

Nearest Neighbor : (따로 train 필요 없음.) 새로운 데이터(흰색)을 어디로 분류할거냐? 가장 가까운 1개의 데이터의 분류를 따라감. K=3이면, 흰색과 가장 가까운 3개의 데이터를 보고 따라감.

그림 참조 : K-최근접 이웃(K-Nearest Neighbor) 쉽게 이해하기 - 아무튼 워라밸 (hleecaster.com)

 

N개의 데이터가 있을때

Train : O(1)  //training할필요 없으므로

Predict : O(N)

 

 

Distance는

L1 Distance (Manhattan) : 좌표축에 영향.

L2 Distance (Euclidean)

 

 

KNN의 hyperparameter:

  1. Number of K
  2. Distance방식 : L1 vs. L2

⇒ 뭐가 좋은지는 없으며 문제에 dependent하다.

 

 

Setting Hyperparameter

Idea1: split data into train, validation, test

Idea2: cross-validation (but, 비용때문에 많이 사용 안함)

 

 

K-NN : 이미지에 사용 안함

  1. Very slow
  2. Distance metric on pixels are not informative. (눈을 가리거나, shift시키거나, 색상 바꿔도 distance값 동일하게 구성해서 만들 수 있는 걸 보면, 이 distance metric이 그리 좋지는 않다는 걸 이야기함)

3. Curse of dimensionality

 

 

 

 

 

 

Linear Classification (선형분류기)

: 추후에 이게 NN의 기본 개념으로 들어가게 됨

 

 

- Parametric Approach

Input(Image : 32x32x3:3092) ⇒ f(x,W) ⇒ 10 numbers of giving class score

 

파라미터(W)가 있기에 이전의 KNN과는 다르게 training이 필요하며 이때 많은 컴퓨팅이 필요함. 그러나 나중에 test는 computing이 많이 필요하지 않아 모바일등에서 가능함.

 

f(x,W) = Wx + b //10개의 class score가 나옴.

(10x1) = (10x3072) (3027x1) + (10x1)

 

문제 : 범주당 1개의 단일 template이 사용된다. 따라서 car라도 이미지의 각도나 색상이나 다르더라도 평균내어 하나의 템플릿으로 만든다.

 

 

 

 

한계점 : 아래의 경우들에 대해서는 선 하나로 분류가 안됨.