Search
Duplicate

Image Classification

정의

시스템이 이미지 인풋을 받으면, 이미지를 보고 기존 시스템에 미리 정해놓은 카테고리 시스템에서 가장 알맞은 것을 고르는 과제다. 컴퓨터 비전분야의 핵심 과제라고 할 수 있다.

문제점

의미론적 차이로 인해 다양한 분류 오류 문제가 발생한다. 즉, 인간이 이미지를 보는 것과 달리 컴퓨터는 큰 격자모양의 숫자집합으로 인식하기 때문에 이미지에 미묘한 변화만 생겨도, 컴퓨터 입장에서는 픽셀값 전체가 모두 변화한다고 인식하게 된다. 구체적으로, 다음과 같은 6가지 어려움에 대응해야한다.
카메라 위치 변화(Viewpoint Variation): 같은 대상이더라도 카메라 위치가 달라지면 이미지가 달라지지만, 이를 동일하게 인식해야한다.
조명 조건 (Illumination conditions): 조명이 어둡든지 밝든지 간에 대상을 동일하게 인식해야한다.
형태 변화 (Deformation): 대상의 포즈가 달라지더라도 동일하게 인식해야한다.
가려짐 (Occlusion): 대상의 일부가 가려져도 그것이 동일한 대상임을 탐지해야한다.
배경과 비슷한 경우 (Background Clutter): 대상과 배경이 유사해보일 때, 이들을 구분해낼 수 있어야한다.
같은 클래스 내의 차이 (Intra-class Variation) : 같은 대상이더라도 생김새, 색, 나이, 크기가 제각기 다르므로 이를 올바르게 인지해야한다.

Data-Driven Approach

컴퓨터에게 이미지와 라벨이 있는 데이터셋을 던져주고, 머신러닝을 활용해 훈련시킨다. 그리고 새로운 이미지들에 대해 분류기가 예측하며 성능을 업뎃하는 원리다. 이는 딥러닝보다 큰 머신러닝 전반에 적용되는 개념이기도 하다.
# Data-driven approach 함수 표현 def train(train_images, train_labels): # 이미지에 맞춰 라벨 데이터를 학습 return model def predict(model, test_images): # 모델을 사용하여 테스트 라벨을 예측 return test_labels
Python
복사

Nearest Neighbor

 주의! 실용적인 목적보다 교육 학습용으로 주로 쓰이는 개념이다.
자세한 내용은 Nearest Neighbor 문서를 참고하시오.

K-Nearest Neighbors (KNN)

 주의! Computer Vision 분야에는 쓰이지 않는 개념이다.
Nearest Neighbor 알고리즘의 문제점을 개선하기 위해 만들어진 알고리즘이다.
자세한 내용은 K-Nearest Neighbors 문서를 참고하시오.

L1거리 (맨해튼 거리)

자세한 내용은 L1거리 (맨해튼 거리) 문서를 참고하시오.

L2거리 (유클리디언 거리)

자세한 내용은 L2거리 (유클리디언 거리) 문서를 참고하시오.

Parametric approach: Linear Classifier

원리

이미지를 입력 받으면(X), 가중치 파라미터(W)와 곱하여 카테고리 score 값(f(x,w))에 bias를 더해 계산하여 각각의 카테고리로 분류될 점수를 계산하는 방식이다.
f(xi,W,b)=Wxi+bf(x_i, W, b) = W x_i + b
xix_i = 이미지 매트릭스를 하나의 칼럼벡터로 변환한 값 (Dx1) WW = 가중치 bb = 편향 벡터(bias term). 훈련데이터셋과 무관한 상수항

Linear Classifier이 잘 동작하지 않는 경우

한 클래스 내에 다양한 특징들이 존재할 수 있지만, 모든것을 평균화시켜 하나의 템플릿만을 학습한다.
이미지는 고차원이기 때문에 일차함수 직선으로 분류하기 어려운 데이터의 분포가 있을 수 있다 (Paritiy Problem)
한 클래스가 다양한 공간에 분포할 수 있다 (Multimodal problem)
일차함수 직선으로 분류하기 어려운 데이터의 분포 예시1
일차함수 직선으로 분류하기 어려운 데이터의 분포 예시2
일차함수 직선으로 분류하기 어려운 데이터의 분포 예시3