CS231n 02강 Image Classification
Image Classification은 CV 분야에서 핵심적인 Task이다.
Image Classification은 위 그림과 같은 고양이 사진을 보면 Machine이 알맞게 “고양이”라고 분류하도록 하는 것을 말한다.
사람은 자연스럽게 고양이라고 인식하지만, Machine은 쉽게 인식하기 어렵다.
그 이유는
- Semantic Gap : 사람과 다르게 Machine 은 이미지를 단순히 숫자의 집합으로 인식
- Viewpoint Variation : 카메라가 이미지를 촬영한 각도에 따라 픽셀 값이 달라짐
- Illumination : 명암에 따라 픽셀값이 달라짐
- Background Clutter : 사물이 배경과 유사한 경우 식별이 어려움
- Occlusion : 일부분만 보고도 사물을 파악할 수 있어야 함
- Deformation : 같은 사물이 다른 모습을 할 수 있음 ex) 고양이 자세 변경
- Intraclass Variation : 같은 사물이 다양성을 가짐
- Context : 주변 사물이 계속 바뀜
Image Classifier
이미지 분류는 배열을 정렬하는 것과 다르게 hard-coding이 어려움
따라서 Data-Driven Approach를 채택하는데,
- dataset을 이미지와 정답 레이블로 구성함
- 분류기를 훈련하기 위하여 ML 알고리즘을 적용함
- 새로운 이미지에 ML을 적용하여 예측
Nearest Neighbor
training step에서 모든 학습데이터를 저장하고, predict 단계에서 가장 유사한 이미지로 이미지의 레이블을 예측한다.
코드의 구현 부분은 위와 같다.
이때, Traning Cost는 단순히 데이터를 저장만 하면 되므로 O(1) 이지만,
Predict Cost는 저장되었던 모든 값들과의 거리를 계산해야 하므로 O(N)이 소요되므로 효율적이지 못하다.
따라서 현업에서는 Nearest Neighbor를 쓰지는 않지만, 학습 목적에서 이를 살펴보자.
일반화된 Nearest Neighbor를
K-Nearest Neighbors 라 한다. 약칭 KNN
핵심은 가장 가까이에 있는 이웃이 아닌,
K 번째 이웃까지 고려하여 다수결의 원칙에 따르는 것
이때 ‘거리’를 평가하는 측도는 크게 2가지가 있는데
L1 거리(Manhattan)와 L2 거리(Euclidean)가 그것이다.
Hyperparameter
그렇다면 최적의 K 값, 최적의 거리 측도 방법은 무엇일까?
이는 다양한 것들을 시도해 보고 가장 것을 경험적으로 택해야 한다.
여기서 일반적으로 Idea #3 을 이용하여 최적의 Hyperparameters를 찾는다.
한편 Validation set을 변화시켜가며 Hyperparameter를 설정하는 방법도 있는데, 이는 연산량이 크게 증가하기 때문에 DL에서는 사용하지 않는다.
Leave a comment