knn计算机在图片中的应用,Stanford CS231n ,学习笔记一:图像分类(数据驱动方法、K近邻分类器kNN)...

## 图像在计算机中的存储形式和分类需要注意的问题

图像在计算机中一般是一个3维的0~255的矩阵序列(分别存储R\G\B三原色信道的值)。

在图像分类中需要注意的问题有:

* 视角、视点问题

* 照明度(曝光度、阻光度)问题

* 形态问题(变形、尺寸大小)

* 背景混淆

* 类内多样性

## 数据驱动方法

我们无法像排序一样设计一个具体的算法来解决这种问题。所以我们需要像教儿童一样,给出一定数量的照片,并标签上属于哪一类,以此来设计一种机器学习的方法,来学习每一类照片的综合视觉表征(特征)。 这样的一种方法就称为数据驱动方法。数据驱动方法依赖于首先给出的数据以及其分类标签。

### 图像分类的步骤

图像分类的任务就是获取一个像素序列(代表一个单个的图像),并依据我们的学习结果给图像一个标签。完整的步骤可以格式化如下:

* 输入:输入N个图片以及其标签作为训练集

* 训练/学习:使用训练集来学习/训练每一类的图像特征。这一步骤也称为训练模型。

* 评估:我们使用一个训练模型从未见过的数据集作为测试集进行分类预测,得到预测结果,并和真正的分类结果进行比较,用准确率来进行模型优劣的评估。

## 最近邻分类器

最近邻分类器在实际中并不常用,目前只介绍其原理。

最近邻分类器训练模型时,单纯的将图像的R\G\B信道的像素值进行简单的记录。在进行预测图片分类时,找出图片在像素值上的最近邻,将最近邻的分类标签作为其分类标签。

最近邻分类器使用的近邻距离分为L1和L2两种,公式分别如下:

$$

L1:\sum_p|I_1^p-I_2^p|

$$

$$

L2:\sqrt{\sum_p(I_1^p-I_2^p)^2}

$$

使用CIFAR-10数据集下,两种计算方法的准确率分别为38.6%和35.4%。这比随机盲猜要高,但是还是远远不及人类的分类能力。而最先进的卷积神经网络则可以达到95%的准确率,已经达到了人类的94%之上。

## K近邻分类器(kNN)

K近邻分类器的思想很简单,不再单纯找一个最近的,而是找K个最近的,由他们分别对结果产生贡献来计算最终的分类。但是有一个很大的问题是,如何选取这个K。

### 超参数优化的验证集

我们可以将训练集分为两部分,多的一部分用来训练,而另一部分我们叫做验证集,来验证在k取某定值的情况下的准确率,以选取最优的k。但是要记住,不能使用测试集做训练集或验证集,否则会导致过拟合的现象(在测试集的性能表现良好,但是实际性能可能比较差)。

#### 交叉验证

当训练集数据量比较小的时候,只用一个验证集可能会出现一定的问题导致实际性能低下。这时候我们可以训练集等分为若干份,进行多次交叉训练和验证,并取性能平均值,来选择k。

### 优点和缺点

kNN的优点在于低维数据时较优、训练时间较短,但是其测试预测时间要长。

针对预测时间长的问题,现在有出现近似最近邻等算法(ANN),使用kd-tree或者k-means进行解决。 神经网络也是一种不错的选择,其与kNN相反,训练时间长,但是测试时间短。

而且kNN在处理高维数据的时候,像素往往不能作为决定性因素,所以kNN在实际的图像分类中是不常用的。L1和L2距离的kNN似乎相比图片的语义表达,更为重视颜色的相近性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值