👩‍💻LEARN : ML&Data/Lecture

[CS231n] Lecture2. Image Classification Pipeline

쟈니유 2023. 5. 8. 22:30
728x90

 

Image Classification

이미지 input → 사전에 정해둔 label(category) 중 input 이미지에 적합한 label 도출 

 

문제 : Semantic Gap 

사람이 보고 판단하는 개념과 컴퓨터가 보고 판단하는 개념이 다름 

(컴퓨터는 행렬 형태 0~255의 값으로 인식)

 

Challenges 

Viewpoint variation : 카메라가 움직일 때 픽셀값이 바뀜

Illumination : 조명 문제

Deformation : 다양한 포즈(변형된 이미지)

Occlusion : 객체가 숨거나 가려진 경우

Background Clutter : 바탕과 유사한 색상일 경우 

Intraclass variation : 같은 class여도 그 안에서 다양한 형태로 존재함 

→ edge, corner간의 조합과 규칙을 베이스로 한 hard coding으로 객체를 인식하려고 했지만 한계가 있었음 

Data-Driven Approach

데이터(이미지, 라벨)을 대규모로 수집하여 이를 classifier 학습에 사용한 후 새로운 이미지에 대해 evaluate하는 것 

 

Classifier 예시 : Nearest Neighbor 

train : 모든 데이터와 라벨을 기억

predict(test) : 유사한 train 이미지의 라벨을 예측 

Distance Metric : L1 (I1-I2)으로 유사도 측정 

 

import numpy as np

class NearestNeighbor : 
	def __init__(self):
    	pass
        
    def train(self, X,y):
    #X : N x D , y : N x 1 
    
    	self.Xtr = X
    	self.ytr = y 
        
    def predict(self, X):
    	num_test = X.shape[0]
        Ypred = np.zeros(num_test, dtype = self.ytr.dtype)
        
        for i in xrange(num_test):
        	distances = np.sum(np.abs(self.Xtr - X[i,:], axis=1)
            min_index = np.argmin(distances)
            Ypred[i] = self.ytr[min_index]
            
        return Ypred

문제점: train에는 O(1), predict는 O(N)의 복잡도

 

K-Nearest Neighbors

Distance Metric을 이용해 K개의 가까운 이웃을 찾고, 이웃끼리 투표를 통해 label을 정하는 것 

이미지 분류에서의 정확도는 다소 떨어짐 

 

 

Distance Metric : train - predict 이미지 간 유사도 측정 

L1이 적합한 경우 :  입력값 요소들의 개별 의미가 있고 이를 알고 있는 경우 (좌표축에 영향을 많이 받는편)

L2가 적합한 경우 : 요소들 간의 실질적인 의미를 모르는 경우 (좌표축에 영향을 덜받음?)

Hyperparameter

K-nn에서의 K, distance 종류 등 알고리즘 선택 시 미리 세팅해야 하는 값들을 의미함

 

방법1. Split data (train, val,test)

train : 모델 학습, val : 모델 중 가장 높은 성능을 보이는 것을 확인하고 이 파라미터를 기억함, test : val의 가중치로 테스트 

방법2. Cross-validation

train-val dataset을 n개의 fold로 나눈 후 val set을 여러개로 지정해서 파라미터를 선택하는 것

다만 이 방법은 작은 데이터셋에 적합함(학습량이 많음) 

 

Linear Classification

Neural Network를 구성하는 블럭으로 사용될 수 있음 

 

Parametric Approach : Linear Classifier 

Parametric model 중 단순한 Linear Classifier로 이미지 분류 접근하기

이미지와 이미지에 대한 가중치를 통해 각 클래스 별 score를 도출  

 

Interpreting a Linear Classifier 

각 클래스에 대해 하나의 템플릿만을 학습한다는 문제가 있어 모델이 학습한 템플릿 이미지에 맞추어 linear classifier가 선으로 이를 구분하는 방법을 시도할 수 있음 

하지만 선을 그어서 해결할 수 없는 분류 문제가 있음 (XOD, multimodal...etc) 

이에 W의 적합성을 score function으로 접근