基于PyTorch和Django的手写数字识别系统,支持在线手写输入和图片上传识别。
- 🎨 在线手写板绘制数字
- 📤 支持图片文件上传识别
- 🧠 基于CNN的深度学习模型
- 📊 实时显示识别结果和置信度
- 💻 友好的Web界面
- 后端: Django 4.2.0
- 深度学习: PyTorch 2.1.0
- 前端: HTML5 Canvas + JavaScript
- 图像处理: Pillow
- Python 3.10+
- CUDA (可选,用于GPU加速训练)
| 技术 | 版本 | 用途 |
|---|---|---|
| Python | 3.9-3.10 | 编程语言 |
| Django | 4.2.0 | Web框架 |
| PyTorch | 2.1.0 | 深度学习框架 |
| torchvision | 0.16.0 | 计算机视觉库 |
| NumPy | 1.24.0 | 数值计算 |
| Pillow | 10.0.0 | 图像处理 |
| CUDA | 12.1 (兼容12.9) | GPU加速 |
#如果要使用gpu训练模型可执行(否则可忽略)
# 1. 安装兼容版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
# 2. 确保NumPy正确
pip install numpy==1.24.0
# 3. 验证
python -c "import torch; import torchvision; print('PyTorch:', torch.__version__); print('torchvision:', torchvision.__version__); print('CUDA:', torch.cuda.is_available())"
python models/train_model.py训练完成后,模型将保存到 models/mnist_cnn.pth
python main.py访问 http://127.0.0.1:8000 使用应用
.
├── main.py # 应用入口
├── requirements.txt # 依赖列表
├── models/
│ ├── train_model.py # 模型训练脚本
│ └── mnist_cnn.pth # 训练好的模型
└── django_project/
├── manage.py
├── mnist_project/ # Django项目配置
└── recognition/ # 识别应用
├── ml_model.py # 模型定义
├── utils.py # 工具函数
├── views.py # 视图函数
├── static/ # 静态文件
└── templates/ # 模板文件
- 手写识别: 在画布上绘制0-9的数字,点击"识别"按钮
- 上传识别: 点击"上传图片"选择本地图片文件
- 清除画布: 点击"清除"按钮重新绘制
- 架构: 卷积神经网络 (CNN)
- 数据集: MNIST (60,000训练样本 + 10,000测试样本)
- 准确率: ~99%
- 输入: 28x28灰度图像
- 输出: 10个类别的概率分布