手写数字识别项目

手写数字识别项目

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

相关推荐
爱笑的眼睛1118 分钟前
超越`cross_val_score`:深入剖析Scikit-learn交叉验证API的设计哲学与高阶实践
java·人工智能·python·ai
Ven%1 小时前
【AI大模型算法工程师面试题解析与技术思考】
人工智能·python·算法
天勤量化大唯粉1 小时前
枢轴点反转策略在铜期货中的量化应用指南(附天勤量化代码)
ide·python·算法·机器学习·github·开源软件·程序员创富
Swizard2 小时前
拒绝“狗熊掰棒子”!用 EWC (Elastic Weight Consolidation) 彻底终结 AI 的灾难性遗忘
python·算法·ai·训练
Spider赵毅2 小时前
python实战 | 如何使用海外代理IP抓取Amazon黑五数据
python·tcp/ip·php
月光技术杂谈2 小时前
基于Python的网络性能分析实践:从Ping原理到自动化监控
网络·python·性能分析·ping·时延·自动化监控
龘龍龙2 小时前
Python基础学习(四)
开发语言·python·学习
洵有兮2 小时前
python第四次作业
开发语言·python
kkoral2 小时前
单机docker部署的redis sentinel,使用python调用redis,报错
redis·python·docker·sentinel
BoBoZz193 小时前
IterativeClosestPoints icp配准矩阵
python·vtk·图形渲染·图形处理