Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HelloMNIST - 手写数字识别完整项目

基于PyTorch的深度学习项目,包含MLP和CNN两种神经网络模型,支持训练、保存、Web推理全流程。


📁 项目结构

项目采用分层架构,训练、推理、模型文件分离:

HelloMNIST/
│
├── 📂 train/                # 训练环境(仅需训练依赖)
│   ├── MLP.py               # MLP模型训练脚本
│   └── CNN.py               # CNN模型训练脚本
│
├── 📂 web/                  # Web推理环境(仅需推理依赖)
│   ├── app.py               # Flask推理服务器
│   └── templates/
│       └── index.html       # 交互式手写界面
│
├── 📂 models/               # 模型存储目录
│   ├── mlp_model.pth        # 训练好的MLP模型参数
│   └── cnn_model.pth        # 训练好的CNN模型参数
│
├── 📄 README.md             # 项目说明(本文档)
└── ⚙️ pyproject.toml        # 项目配置文件

目录说明

  • train/ - 训练相关代码,依赖PyTorch、torchvision
  • web/ - Web推理服务,依赖Flask、Pillow
  • models/ - 模型存储目录(由训练脚本自动生成)

🚀 快速开始

1. 环境准备

# 安装uv包管理器(如果还没安装)
pip install uv

# 克隆项目
git clone git@github.com:HandyWote/HelloMinist.git
cd HelloMNIST

2. 训练模型(需要安装训练依赖)

uv pip install -e ".[training]"
cd train
uv run MLP.py
uv run CNN.py
  • 输出:模型保存到 models/ 目录

3. 启动Web服务(需要安装Web依赖)

uv pip install -e ".[web]"
cd web
uv run app.py

服务启动后,访问 http://127.0.0.1:5002

4. 使用界面

  1. 绘制数字:在左侧画布上用鼠标写数字(0-9)
  2. 选择模型
    • MLP分析:使用全连接神经网络
    • CNN分析:使用卷积神经网络(推荐)
  3. 查看结果:右侧显示预测数字和10个类别的概率分布
  4. 重置画布:点击"重置画布"清除

🎓 进阶使用

数据增强训练

MLP.py和CNN.py已添加数据增强:

transforms.RandomRotation(15)              # 随机旋转±15度
transforms.RandomAffine(0, translate=(0.1, 0.1))  # 随机平移
transforms.RandomPerspective()             # 随机透视变换

重新训练:

# 删除旧模型
rm mlp_model.pth cnn_model.pth

# 重新训练
uv run MLP.py
uv run CNN.py

调整线条粗细

如果需要更细的笔画:

// 修改 templates/index.html 第457行
ctx.lineWidth = 8;  // 从20改成8或10

📦 模型文件说明

mlp_model.pth / cnn_model.pth

存储位置models/ 目录

加载方式

# 由 web/app.py 自动加载
checkpoint = torch.load('../models/mlp_model.pth')
model.load_state_dict(checkpoint['model_state_dict'])
model.eval()

📄 许可证

MIT License - 可自由使用、修改、分发


最后更新:2025年11月30日

About

手写数字识别,基于PyTorch的深度学习项目,包含MLP和CNN两种神经网络模型,支持训练、保存、Web推理全流程。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages