本节主要简单介绍了图像分类和流程,讲解了最近邻分类器的原理以及超参数的的调优与交叉验证
顾名思义,就是给定一个图像,判断出它属于哪一个类。通常通过带有标签的数据作为训练集用各种方法进行训练, 然后在测试集上进行测试,预测出最可能的类别(标签)。
图像分类面临的困难:视角变化、大小变化、形变、遮挡、光照条件、背景干扰、类内差异等
图像分类流程:输入->学习->评价
NN分类器的原理非常简单。针对图像分类来说,就是将给定的图像与带标签的图像逐个像素进行比较,选取距离最小图像的标签作为给定图像类别的预测,这里可以计算L1距离和L2距离。 L1距离公式(绝对值相加) : d1(I1,I2)=∑p|Ip1−Ip2| d_1(I_1,I_2)= \sum\limits_{p} |I_1^p-I_2^p|
L2距离公式(欧氏距离): d2(I1,I2)=∑p(Ip1−Ip2)2−−−−−−−−−−√ d_2(I_1,I_2)= \sqrt{\sum\limits_{p} (I_1^p-I_2^p)^2}
顾名思义,就是选取距离最小的K个图像,将数量最多的标签作为给定图像类别的预测。
KNN优缺点 (1)优点: 算法简单,易于理解,易于实现,不需要参数估计,不需要事先训练。 (2)缺点: 测试需要计算量特别大(实际中关注测试效率远远大于训练效率),训练样本必须存储在本地,内存开销也特别大。 实际中在图像分类中很少使用KNN,因为KNN实质是比较像素的差异,导致图像更多的是按照背景和颜色被分类。
当我们在设计机器学习算法的时候,除了最终预测的时候使用测试集,其他时候都不能使用(很容易造成过拟合)。我们可以在训练集中分出一部分(50%~90%)作为验证集,在验证集上进行超参数调优。一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法。
当训练集数量较少时,我们一般使用交叉验证的方式(一般分为3、5、10份),比如:将训练集平均分成5份,其中4份用来训练,1份用来验证。然后我们循环着取其中4份来训练,其中1份来验证,最后取所有5次验证结果的平均值作为算法验证结果。
链接:http://cs231n.github.io/classification/ 链接:https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit https://zhuanlan.zhihu.com/p/20900216?refer=intelligentunit 链接:http://blog.csdn.net/han_xiaoyang/article/details/49949535