图像分类是计算机视觉中的一个核心问题,对象检测、图像分割问题也可以转化成图像分类问题。
图像分类需要在能够识别类别之间的差异的同时,忽略类别内部的差别:视角、尺寸、变形、遮挡、明暗、背景杂乱、类别内部的不同细分种类。
我们可以用大量已经标记好标签的图片来训练计算机,这样的算法称为数据驱动的方法。
最近邻居算法:将待预测的图片与训练集中的每张图片逐像素对比,找出最接近的图片的类别,即作为预测类别。衡量图片之间的差异可以通过数值差绝对值(L1)或平方(L2)。准确率只有40%。
k最近邻居算法(KNN):从最接近的1张图片,放宽范围到最接近的k张图片。
超参数:机器学习中策略的选择,比如L1还是L2。
过拟合:算法在一个数据集上效果好,但在另一些数据上效果变差。永远不要把测试集用于训练。
验证集:从训练集中拿出一小部分数据,用于尝试找出最佳的超参数。可以依次取1/3~1/10做验证集,然后对结果做平均,这种方法称为交叉验证。不过交叉验证计算量很大,一般只验证一组。
KNN主要问题是预测的开销过大,需要保存整个训练集,而且需要将待预测的图片与训练集中的每张图片做对比。而且像素级对比在图像识别上与人类认知差别很大,更多受颜色分布和背景的影响,而非画面主体。所以有效的算法必须在高于像素的维度上工作。
按照L2距离将相似的图片摆放在一起:
