数据驱动方法
图像分类
图像分类时,分类系统接受一些输入图像,比如猫咪,并且系统已经清楚了一些确定分类或者标签的集合。计算机的工作就是看图片并且给它分配其中固定的分类标签。
图片表示
计算机呈现图片的方式为一堆数字,图像可能是一些800*600的像素,每个像素由三个数字表示,给出像素红、绿、蓝三个值。
由于是一个巨大的数字阵列,很难从中提取猫咪的特性,这个问题称为语义鸿沟,当以微小的方式改变图片时将导致像素网格整个发生变化。
数据驱动方法
我们可以不写具体的分类规则来识别一类物体,而是收集大量猫图片的数据集。例如CIFAR-10的数据集,其中包括10个不同的类别,5万张训练图片,1万张测试图片
然后通过训练机器对这些图片进行分类,机器收集所有的数据用某种方式进行总结生成一个模型,并总结出如何识别这些不同类的图片,最后我们用这个模型来识别新的图片集。
所以我们的函数不仅仅是输入一个图片然后识别出一只猫,而是需要两个函数:
- 1 训练函数,输入图片和标签,然后输出模型。
-
2 预测函数,输入模型,对新的图片集进行预测。
图片比较方法
在比较两个图片时,我们采用了L1距离(曼哈顿距离),对这些图片中的单个像素进行比较,利用测试图片的像素值减去训练图片对应的像素值,然后取绝对值得到两个图片的像素值的差,最后将其中所有的像素值相加。
下面是一个最近邻分类器的python代码: