Commit dd2f6436 by 前钰

Upload New File

parent f2feb590
{
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 基于K-近邻的车牌号识别"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 一、案例简介\n",
"\n",
"图像的智能处理一直是人工智能领域广受关注的一类技术,在人工智能落地的进程中发挥着重要作用。其中车牌号识别作为一个早期应用场景,已经融入日常生活中,为我们提供了诸多便利,在各地的停车场和出入口都能看到它的身影。车牌号识别往往分为字符划分和字符识别两个子任务,本案例我们将关注字符识别的任务.\n",
"\n",
"## 二、作业说明\n",
"本次我们使用已经分割好的车牌图片作为数据集,包括数字 0-9、字母 A-Z(不包含 O 和 I)以及省份简称共 65 个类,编号从 0 到 64。数据已经分成了训练集和测试集,里面的文件夹用 label 编号命名,一个文件夹下的所有图片都属于该文件夹对应的类,每个图片都是 20 * 20 的二值化灰度图。尝试用 K-NN 的方法对分割好的字符图像进行自动识别和转化。 可以使用 sk-learn 等第三方库,不要求自己实现K-NN。\n",
"\n",
"### 基础任务(80分):\n",
"1. 数据预处理任务:将图片数据读入,标准化,将每个图像表示为一维向量,同时保留其对应的标签。这是进行模型训练之前的重要步骤。\n",
"\n",
"2. 模型训练任务:使用 sklearn库的KNeighborsClassifier类,构建K-NN模型,并对训练集进行训练。\n",
"\n",
"3. 模型评估任务:使用模型对测试集进行预测,然后计算模型的准确率。可以使用 sklearn库的accuracy_score函数来实现。\n",
"\n",
"4. 参数分析任务:探究当K值变化时,模型在测试集上的准确率如何变化。可以绘制一个图表,显示不同K值对应的准确率。\n",
"\n",
"5. 数据集大小影响任务:分析当训练集大小变化时,测试结果如何变化。可以尝试不同大小的训练集,记录并分析结果。\n",
"\n",
" \n",
"\n",
"### 扩展任务(20分):\n",
"1. 距离度量分析任务:分析在K-NN中使用不同的距离度量方式(如欧氏距离、曼哈顿距离等)对模型效果的影响。\n",
"\n",
"2. 方法对比任务:对比平权K-NN与加权K-NN的预测效果,分析不同权重设置对结果的影响。平权K-NN认为所有邻居的投票权重相同,而加权K-NN则根据距离远近来确定权重,更近的邻居有更大的投票权。\n",
"\n",
"3. 数据增强任务:考虑到车牌字符可能在不同的光照、角度和大小下出现,可以尝试进行数据增强,如旋转、缩放、剪切,亮度,对比度等操作,以提高模型的泛化能力。可调包(from PIL import Image,ImageEnhance )\n",
"\n",
"4. 数据均衡任务:如果数据集中的各类别样本数量不平衡,可能会对K-NN的性能产生影响。可以尝试使用过采样或者欠采样的方法,来使得各类别样本数量均衡。可调包(from imblearn.over_sampling import SMOTE )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"tips:\n",
"\n",
"图片数据的特征之一是冗余性,即一张128x128的图片降维到64x64依然不影响识别,因为图像的像素矩阵中的某个像素值与周边的像素值的相关性很强,因此相差并不大。所以,可以考虑对图像数据进行降维来增加模型的训练速度和精度."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.5 64-bit (conda)",
"name": "python385jvsc74a57bd007efdcd4b820c98a756949507a4d29d7862823915ec7477944641bea022f4f62"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment