Image Classification
1.图像识别的挑战
- 观点差异:对象的单个实例可以相对于相机以多种方式定向。
- 规模变动:视觉类的大小通常会发生变化(现实世界中的大小,不仅限于图像的大小)。
- 变形:许多感兴趣的物体不是刚体,并且可能以极端方式变形。
- 遮挡:感兴趣的对象可以被遮挡。有时只能看到对象的一小部分(少至几个像素)。
- 照明条件:照明的影响在像素级别上非常明显。
- 背景混乱:感兴趣的对象可以融合到他们的环境,使他们很难辨认。
- 类内变异:感兴趣的类别通常可以相对广泛一些,例如chair。这些对象有许多不同的类型,每种都有各自的外观。
一个好的图像分类模型必须对所有这些变化的外积保持不变,同时保持对类间变化的敏感性。
2.最近邻分类器
import numpy as np
class NearestNeighbor(object):
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.zreos(num_test,dtype=self.ytr.dytpe)
for i in range(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
Intuitively, higher values of k have a smoothing effect that makes the classifier more resistant to outliers.
直观上,k值越高,平滑效果越好,分类器对异常值的抵抗能力越强。一般不会使用最近邻而是使用K近邻。