[CS231n]Lecture02-Image Classification Pipeline

Lecture 02: Image Classification Pipeline

  • 이 글은, Standford University 의 CS231n 강의를 듣고 스스로 정리 목적을 위해 적은 글입니다.

1. Image Classification 의 기본 TASK

  • 위 사진을 보고, → ‘CAT’ 혹은 ‘고양이’ 라고 classification
  • 자연스럽게 따라오는 문제는 “Sementic Gap” : 우리가 준 data (pixel 값 [0, 255]) 와 Label 간의 gap
  • 또한, 이 과정에서 극복해야 하는 Challenges
    • Viewpoint Variation ( 같은 객체에 대해 시점이 이동해도 robust)
    • Illumination ( 빛, 밝기, 명암 등에도 robust)
    • Deformation ( 다양한 Position, 형태의 변형에도 robust)
    • Occlusion ( 다른 물체나 환경에 의해 가려지는 data 에도 robust)
    • Background Clutter ( 배경과 비슷하게 보이는 객체에도 robust)
    • Intraclass Variation ( 한 종류의 클랫스에도 다양한 색과 모습의 객체가 있을 수 있다.)

2. 기존의 시도와 New Era

  • Hard Coded Algorithm 과 여러 규칙 (rule-based로 해석된다) 들을 통해서 Image를 Classify 하는 노력들이 있어왔다. 이들의 문제는, (1) 위에 언급한 문제들이 Robust 하지 않다. (2) 객체가 달라지면, (고양이, 호랑이, 비행기 등) 객체마다 다 다른 규칙을 성립해줘야 한다. 즉 한마디로 요약하자면, Algorithm의 확장성이 없다.
  • 이런 문제에 좀더 강한 방법이 지금 우리가 공부하고 있는, Data-Driven Approach
    1. Image 와 Label pair 의 dataset 을 모은다.
    2. Machine Learning 알고리즘을 이용해 classifier 를 학습시킨다.
    3. Classifier 를 new images 에 테스트에 평가한다.

3. First Classifier : Nearest Neighbor

3-1. Nearest Neighbor 의 기본 알고리즘

  1. train set 에서의 모든 data 와 label 을 기억한다.
  2. test Image 와 가장 가까운 train Image 의 label로 test image를 predict 한다.
    • 이 때 ‘가장 가까운’ 을 계산 할 때**, L1 distance** 와 L2 distance 가 쓰일 수 있다. 이 외에도, 다양한 distance 지표가 쓰일 수 있다.

3-2. Nearest Neighbor Classifier 의 문제

  • 이미지 classification 에는 잘 사용되지 않는다.
  • train 보다 predict 하는데 훨씬 오래 걸린다.
    • train 은 train data set 의 기억만 하면 되지만, predict 할 때는 전체 train data 에 대해 거리를 측정해야하고, sorting 해야하는 문제가 발생한다.
    • Time Complexity - train O(1), predict O(N) (N은 train data 수)

위 그림을 보면, 연두색 공간에 노란색 class 가 포함 되어 있는 것을 볼 수 있다. 이는 generalize 면에서 부족한 모델이라고 볼 수 있다. 같은 알고리즘 이지만, 이를 해결 하는 방법은 K 개의 가까운 neighbor 로 부터 majority voting 을 받은 것으로 classify 를 하는 것이다.

3-3. K-Nearest Neightbors

Single Nearest 만 보는 것이 아니라, K 개의 가까운 point 의 투표를 통해 해당 test data 의 label 을 예측한다.

  • 이 때, Voting 하는 방법에는 majority voting ( 다수결 ) 과 weighted voting ( 가중치를 주어 투표: distance 가 가까운 것에 가중치를 준다.)
  • 가중치를 주는 방법에는 distance 가 커지면 곱해지는 weight 을 줄이는 방법으로 1 / (1+distance) 등을 weight 을 곱해준다.

3-4. k-Nearest Neighbor on images NEVER USED

  • 차원의 저주 문제
  • knn 이 잘 동작하기 위해서는 dataset 공간을 조밀하게 커버할 만큼의 충분한 training space 가 필요하다. 하지만, data 의 차원이 늘어날 수록 그 충분한 data 의 수가 exponential 하게 늘어난다.

4. Setting Hyperparameters

Model 최적의 hyperparameter 를 찾기 위해서는 data set 을 구분하여, unseened data 를 사용하여 성능 검증을 하고, model selection 을 해야한다. 이는 단순이 hyperparameter 를 찾는 용도 뿐만 아니라 우리가 세운 가설을 서로 비교 할 때는 data set 을 정확히 구분하고, test set 을 통해 비교하고, 선택해야한다. 그 방법에는 train, validation, test set 으로 dataset 을 나누는 방법과 cross validation 방법이 있다.

  • 첫 번째 방법으로는, Validation set 을 통해 hyperparameter(가설)를 검증하고 선택하여, Test set 을 사용하여 Evaluate 과 Reporting 등을 한다. 딥러닝 모델링에서는 이 방법으로 많이 사용한다.

  • 두 번째 방법은, data set 의 크기가 크지 않을 때, Train set 안에서 folds 들을 나누어 각 fold 가 돌아가며 validation set 이 되며, 이들의 평균값으로 가설을 비교한다. 이는 딥러닝 모델에서는 적합하지 않은 형태이다. 모델 자체의 연산이 많은데다가, 같은 모델에 대해 많은 validation 이 효율적이지 않기 때문이다. 또한 data가 많지 않은 상태에서 딥러닝 모델을 선택하는 것은 옳지 않다.

5. Second Classifier : Linear Classifier

Linear Classifier 는 Neural Network 의 기본 골격이다. (1) image data 와 W (parameters or weights) 을 통해 연산을 해주고, (2) function 을 통과해 Classification 을 해준다.

특히 Linear Classifier 의 경우 아래 와 같이, (1) image data 와 W 를 dot product 를 해주고 (2) linear function f 를 통과한다.

$$f(x, W) = Wx$$

6. Reference

Lecture 2 | Image Classification

Syllabus | CS 231N

[CS231n]Lecture02-Image Classification Pipeline

https://emjayahn.github.io/2019/05/13/CS231n-Lecture02-Summary/

Author

Emjay Ahn

Posted on

2019-05-13

Updated on

2019-07-17

Licensed under

Comments