手写数字识别项目

手写数字识别项目

这是一个使用PyTorch实现的手写数字识别项目,基于MNIST数据集训练了一个卷积神经网络模型。

项目结构

  • train.py - 训练手写数字识别模型
  • predict.py - 使用训练好的模型预测图像中的数字
  • download_mnist.py - 直接下载MNIST数据集
  • visualize_mnist.py - 可视化MNIST数据集中的样本
  • draw_and_predict.py - 交互式绘图工具,可以绘制数字并进行实时预测

环境要求

  • Python 3.6+
  • PyTorch
  • torchvision
  • matplotlib
  • numpy
  • Pillow (PIL)
  • tkinter (Python内置,用于交互式绘图工具)

可以使用以下命令安装所需依赖:

bash 复制代码
pip install torch torchvision matplotlib numpy pillow

使用说明

1. 下载数据集

运行以下命令直接下载MNIST数据集:

bash 复制代码
python download_mnist.py

2. 可视化数据集

查看MNIST数据集中的样本:

bash 复制代码
python visualize_mnist.py

这将生成多个图像文件,显示数据集中的随机样本和每个数字的样本。

3. 训练模型

运行以下命令开始训练模型:

bash 复制代码
python train.py

训练完成后,模型将保存为mnist_cnn.pt。同时会生成以下文件:

  • sample_digits.png - 显示训练数据集中的一些样本
  • accuracy.png - 显示训练过程中测试集准确率的变化

4. 预测图像

使用训练好的模型预测图像中的数字:

bash 复制代码
python predict.py

按照提示输入图像路径,程序将显示预测结果。

5. 交互式绘图和预测

启动交互式绘图工具,可以自己绘制数字并实时预测:

bash 复制代码
python draw_and_predict.py

使用方法:

  • 在黑色画布上用鼠标绘制白色数字
  • 调整画笔粗细
  • 点击"预测"按钮进行识别
  • 点击"清除"按钮清空画布
  • 点击"保存"按钮保存当前绘制的图像

模型结构

该项目使用了一个简单的卷积神经网络(CNN),结构如下:

  • 2个卷积层
  • 最大池化层
  • 2个全连接层
  • Dropout用于防止过拟合

性能

在MNIST测试集上,该模型通常可以达到约99%的准确率。

代码

git clone https://gitee.com/wan_you_to/digital-recognition.git

相关推荐
weixin_307779131 小时前
AWS Lambda解压缩S3 ZIP文件流程
python·算法·云计算·aws
独行soc8 小时前
2025年渗透测试面试题总结-18(题目+回答)
android·python·科技·面试·职场和发展·渗透测试
S01d13r9 小时前
gunicorn + flask 处理高并发请求
python·flask·gunicorn
杜子不疼.9 小时前
《Python列表和元组:从入门到花式操作指南》
开发语言·python
pan0c239 小时前
数据处理与统计分析 —— numpy入门
python·numpy
max5006009 小时前
基于桥梁三维模型的无人机检测路径规划系统设计与实现
前端·javascript·python·算法·无人机·easyui
秋氘渔10 小时前
综合案例:Python 函数知识整合 — 学生成绩管理系统
开发语言·python
AI 嗯啦11 小时前
SQL详细语法教程(三)mysql的函数知识
android·开发语言·数据库·python·sql·mysql
databook11 小时前
把数学对象画出来:Manim Mobject类库速查手册
python·数学·动效
图灵学术计算机论文辅导12 小时前
傅里叶变换+attention机制,深耕深度学习领域
人工智能·python·深度学习·计算机网络·考研·机器学习·计算机视觉