Viewpoint variation
Illumination
Deformation
Occulusion
Intraclass variation
def classify_image(image):
...
return label s
Attemps have been made
Data-Driven Approach
데이터와 라벨을 기억
def train(images, labels):
...
return model
def predict(model):
...
return test_labels
import numpy as np
class NearestNeighbor:
def __init__(self):
pass
def train(self, X, y):
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 range(num_test):
distances = np.sum(np.abs(self.Xtr - X[i, :]), axis = 1)
min_index = np.argmax(distances)
Ypred[i] = self.ytr[min_index]
return Ypred
만약 벡터가 어떤 식으로 생겨 먹었는지 모를 경우엔 좌표계에 따라 달라지는 L1보단 L2를 사용하는 게 좋을 것이다.
K-Nearest Neighbors : Decision Metric
feature를 나타내는 가중치 행과 이미지 픽셀을 나타내는 열을 inner product하여 각 클래스에 대한 유사성을 판단한다.
선형 결정 경계를 그린다.
[출처] CS 231n | Stanford University school of Engineering