手写数字识别项目

手写数字识别项目

这是一个使用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

相关推荐
mortimer1 小时前
安装NVIDIA Parakeet时,我遇到的两个Pip“小插曲”
python·github
@昵称不存在1 小时前
Flask input 和datalist结合
后端·python·flask
赵英英俊2 小时前
Python day25
python
东林牧之2 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
何双新2 小时前
基于Tornado的WebSocket实时聊天系统:从零到一构建与解析
python·websocket·tornado
AntBlack3 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉
凪卄12133 小时前
图像预处理 二
人工智能·python·深度学习·计算机视觉·pycharm
巫婆理发2223 小时前
强化学习(第三课第三周)
python·机器学习·深度神经网络
seasonsyy3 小时前
1.安装anaconda详细步骤(含安装截图)
python·深度学习·环境配置
半新半旧4 小时前
python 整合使用 Redis
redis·python·bootstrap