本项目基于 CNN 卷积神经网络构建日语假名手写识别系统,包含模型训练、测试集验证、Tkinter 手写板 UI三大模块。用户可在画布上手写日语假名,系统实时识别并显示结果。
系统环境:Python 3.10 · TensorFlow GPU
Kuzushiji-49 数据集,包含 49 个日语假名字符类别(48 平假名 + 1 迭代标记),总计 270,912 张 28×28 灰度图像。
| 层 | 配置 |
|---|---|
| 卷积层 1 | 32 通道 → BatchNorm → Dropout |
| 卷积层 2 | 64 通道 → BatchNorm → Dropout |
| 卷积层 3 | 128 通道 → BatchNorm → Dropout |
| 全连接 1 | 1024 神经元 |
| 全连接 2 | 512 神经元 |
| 输出层 | 49 类 Softmax |
训练曲线:
使用 Tkinter 构建手写识别桌面应用:
初始版本画布背景为黑色,与训练数据(白底黑字)不一致。改为白色背景 + 黑色笔迹后问题解决。
修复前(黑底白字):
修复后(白底黑字):
非全屏窗口下 ImageGrab.grab() 捕获区域错误。通过 winfo_rootx() / winfo_x() 获取画布绝对坐标精准定位。
| 模块 | 技术 | 对应知识点 |
|---|---|---|
| 数据处理 | NumPy + Matplotlib | 通用数据预处理流程 |
| 模型构建 | TensorFlow + Keras CNN | 图像分类模型 |
| UI 界面 | Tkinter | 手写数字 UI 案例 |
| 模型部署 | load_model 函数 | 模型加载方法 |