🇯🇵

日语假名手写识别系统

深度学习课程设计 · 深圳职业技术大学 · 23智能2

TensorFlow CNN · 49 类假名 · 88.2% 准确率 · Tkinter 桌面应用

49
假名字符类别
270K
训练图像
88.2%
识别准确率
3
卷积层

01项目简介

基于深度学习的手写日语假名识别系统,使用 TensorFlow + Keras CNN 搭建三级卷积神经网络。支持用户在 Tkinter 画布上直接手写假名,实时识别并显示结果。完整实现数据预处理、模型训练、评估优化到桌面应用部署的全流程。

02数据集

使用 Kuzushiji-49 数据集:包含 49 个日语假名字符类别(48 平假名 + 1 迭代标记),总计 270,912 张 28×28 灰度图像,是经典 MNIST 格式的日语版本。

03模型架构

配置
卷积层 132 通道 → BatchNorm → Dropout
卷积层 264 通道 → BatchNorm → Dropout
卷积层 3128 通道 → BatchNorm → Dropout
全连接 11024 神经元
全连接 2512 神经元
输出层49 类 Softmax

04训练策略

优化器
Adam · 交叉熵损失 · Epochs: 7 · Batch Size: 64
早停法
patience=7,防止过拟合
学习率调度
ReduceLROnPlateau 动态调整
最终准确率
约 88.2%,49 类分类任务

05UI 界面与关键问题解决

Tkinter 桌面应用

白色画布 + 黑色笔迹
与训练数据格式一致,避免黑白反转
精准截图定位
ImageGrab.grab() 配合 winfo_rootx() 坐标计算
操作按钮
"清除"清空画布 · "识别"触发预测 · 实时显示结果

关键问题

黑底白字导致识别错误
画布背景色与训练数据反色,识别率大幅下降。解决:统一白色画布
截图区域偏移
窗口坐标与实际截图位置偏差。解决:使用 winfo_rootx/y 精准定位

06技术选型

模块技术
数据处理NumPy · Matplotlib
模型构建TensorFlow · Keras CNN(3 层卷积)
UI 界面Tkinter 桌面应用
模型部署load_model 函数热加载
训练曲线 黑底白字版本 白底黑字正确识别