cs231学习笔记一 图像识别与KNN

课程地址:http://cs231n.github.io/classification/


图像识别

图像识别就是给你一张图,将其分类成一组给定类别中的一种。如图1所示,给定一张图片,以及可能的类别{猫、狗、帽子、杯子},要求将这张图片识别出到底属于哪一类。
一张图片输入计算机中,实际是转化为一个三维张量(宽*高*颜色通道),比如图一就是248 x 400 x 3共297,600 个数据,每个数据的取值范围都是0到255.

图 1
图像识别是计算机视觉的一个核心问题,有着大量的实际应用。而且许多看似不同的计算机视觉任务都能化为图像识别,如目标检测和图像分割等。但也同样面临着计算机视觉任务所面临的挑战,如图2所示。一个好的图像识别算法应该是对以下变量不变,对类间变量敏感。
  • 角度变化:一张图片可以从不同角度拍摄
  • 大小变化:同类物体的大小也可能不同
  • 形变:物体的形状可能不是固定的
  • 缺失:有时候只有物体的一部分出现在图像里
  • 光照条件:光照的强弱会对图片像素值产生剧烈的影响
  • 背景杂波:物体的颜色与背景颜色相近,导致难以识别
  • 类内差异:即使是同类物体,也有不同的表现形态。
图2

K最近邻

k最近邻的思想很简单:找到离测试样本距离最近的k个训练样本,根据这k个训练样本的类别投票。
实际运用k最近邻,要注意以下几点:
  • 要将数据按特征标准化(规范化)
  • 如果数据是高维的,要考虑降维处理
  • 将训练数据分成训练集和检验集。按经验训练集占70%-90%,这取决于超参数的多少和预期超参数的影响大小。如果超参数比较多,训练集占得比例就小一点。如果训练数据较少,可以考虑K折交叉验证。当然K越大,效果越好,但计算代价也就越大。
  • 超参数主要有k个邻居以及定义的距离
  • 如果KNN的计算时间太长,可以考虑使用FLANN加快速度
k最近邻有以下缺点:
  • 需要存储训练集数据
  • 测试时需要检索整个训练集以及存储训练样本与测试样本的距离,所以无论时间复杂度还是空间复杂度都很高,特别是当训练集很大时

你可能感兴趣的:(机器学习,cs231)