从效果看来,KNN并不适合图像识别,它的识别更多基于背景,而不是图片的语义主体。所以在实际应用中我们一般不适用KNN识别图像,但是在学习过程中,通过KNN算法我们可以学习到图像识别的整个流程,对我们的帮助是非常大的
图像识别流程
无论是哪种分类算法,图像识别的流程主要为以下流程
- 输入图像:一般来说,输入的是图像的像素值
- 训练模型:通过输入的图像来训练模型
- 评价模型:用测试数据来测试模型的分类能力从而评估模型的泛化能力
在训练模型阶段,由于很多模型都会有或多或少的参数需要设定(这些参数我们称为“超参”),所以我们需要增加一些步骤来确定这些参数,比如验证集或者交叉验证等方法,这些在接下来都会提到
可视化Cifar10数据集
在下载完 cifar10数据集 后,我们首先需要读取cifar10数据集中的数据,这个我就不多介绍了,网上应该也有很多,注意Python版本就可以了,这里使用Python3.5。然后我们随机抽取一部分图像进行可视化
def VisualizeImage(X_train, y_train):
"""可视化数据集
:param X_train: 训练集
:param y_train: 训练标签
:return:
"""
plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'
classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
num_classes = len(classes)
samples_per_class = 8
for y, cls in enumerate(classes):