斯坦福cs231n计算机视觉笔记(1)k近邻算法

现有一组训练集,总共有20张图像,10张猫的和10张狗的,训练集总共有两类,现在输入一张图像,需要你判断它是猫还是狗?我们可以把输入图像与训练集中的20张进行比较,计算两张图像之间的差距,从训练集中得到一张和输入图像距离最小的图像,这个图像属于什么类别,输入便判断为什么类别。

那么两张图像的距离该怎么计算呢?

图像在计算机中是用矩阵来进行存储的,如一4x4的图像,它有16个像素,对于彩色图像来说,每一个像素都有RGB三个通道,灰度图像则只有一个通道,也就是说彩色图像是以(4, 4, 3)这样的三维矩阵的形式储存在计算机中。

某一通道下的图像

 对于一张4x4的彩色图像,总共有4x4x3=48个数值我们可以将它与相同规模的图像对应位置的数值相减取绝对值再求和,得到的值便是两张图像的距离。

 上述这种求距离的方式称为曼哈顿距离,还有一种欧式距离,对应位置相减取平方求和,最后在开个根号 。

 两种距离的区别,我的理解是曼哈顿没有归一化,而欧式做归一化(这里我也不是很懂,不知道这样理解对不对)。至于选择那种距离,则可以在训练时两者都用,看那种效果好。

在上述运用当中,我们的k取值为1,就是找最近的点,它的类别是啥,我就是啥。但实际运用当中,k取1效果并不好,因为我们的训练数据往往存在偏差,只选最近的作为参考依据往往太过绝对。我们可以k取5,找离它最近的前5个,去统计它们分别是什么类别,选择类别数目最多的作为我的结果,这样可以有效地避免训练数据的误差。至于k具体取多少,跟上面一样多试几个,那个效果好,用那个。

在计算机视觉中,k近邻算法可以说几乎用不到,因为它的思想过于简单,通过比较图像像素的值的差距来判断图像是否相关。如果现在有一只白猫和一只黑猫,即便它们都是猫,但因为黑和白像素值差距很大,导致k近邻会判断为两者没有关系,而一只白猫和一只白狗,尽管它们不是同一个物种,但图像像素值很接近,k近邻会把它们判断关系很近。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值