汉字手写训练和识别
一、简介
本文是属于手写体文字识别应用,旨在基于MindSpore AI计算框架和Atlas实现手写汉字拍照识别系统。该系统能够对写在纸上的多个汉字,使用摄像头拍摄视频,实时检测字符区域并给出识别类别。该系统包括手写汉字模型训练(云上)、模型转换、模型部署、摄像头图像采集、模型推理(端侧)、结果展示等完整训练和应用流程。其中模型采用的是深度神经网络,目前深度学习在文字识别方面有着广泛的应用,多分类问题是其中重要的一类。然而,深层网络模型的结构通常很复杂,对于一般的多类别分类任务,所需的深度网络参数通常随着类别数量的增加而呈现超线性增长。本文需要识别字库中字的类别数高达3755类,模型训练是整个流程中耗时最长且决定识别精度的重要环节,模型推理在识别流程中占据较大部分。所以这两个环节的速度和精度对于用户体验至关重要。如何研究高性能、高精度、实用性强的方案变得极具挑战性。
二、文开发目的和意义
手写汉字是几乎所有国人的最自然技能之一。日常生活中有很多场景需要对写在纸上的汉字进行识别或者录入电脑。如下图是一位同事咨询该字如何发音,如果能够识别,就能达到认识,的目的。
生活中遇到的手写汉字
本文是属于手写体文字识别应用,在华为云ModelArts平台上基于MindSpore AI计算框架进行手写汉字模型的训练,然后通过ATC模型转化工具和ACL接口,将模型部署到Atlas上,实现手写汉字拍照识别系统。该系统能够对写在纸上的多个汉字,使用摄像头捕获视频/图像,实时检测手写文字区域并给出识别类别。本文的单字版使用MindSpore AI计算框架在3755类手写汉字数据集上进行模型训练,然后将训练好的模型转换为Ascend310支持的离线推理模型,在华为Atlas上借助摄像头对少量手写汉字进行实时检测和识别,具有完整性、代表性和实用性,满足了在实际场景下用摄像头进行文字的拍照感知、实时检测和识别的需求。
三、系统设计
系统可以划分为数据处理、模型构建、文字实时感知等三个主要子系统,各子系统相对独立,但存在数据关联。其中数据处理包括手写汉字数据集划分、新数据集制作、图像增强等字符图像预处理;模型构建和训练包括网络定义、模型训练等模块;文字实时感知包括视频解析、单字检测、图像预处理和字符识别与展示。为了说明各模块之间的结构关系,细化的整体结构图如下图所示。系统的各模块将在给出系统整体设计流程之后进行详细介绍。
系统整体功能结构图
3.1 基于MindSpore的系统流程
整个系统流程分为两个阶段。训练阶段在HITHCD-2018数据子集上借助MindSpore生成定制版ResNet模型。推断阶段包括摄像头图像采集、字符检测、图像预处理、文字识别等模块,具体流程见下图所示。
基于MindSpore训练的系统流程图
3.2 手写数据集
3.2.1数据集介绍
本文使用了HITHCD-2018数据集的子数据集。HITHCD-2018是哈尔滨工业大学收集的、用于手写汉字识别(HCCR)的大型数据库,有超过5346名书写者书写,目前规模最大、字类最多的数据库(Tonghua Su et al. HITHCD–2018: Handwritten Chinese Character Database of 21K-Category, I