基于CNN网络的汉字图像字体识别及其原理
现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为OCR系统,也就是光学字符识别系统,例如对于古老出版物的数字化。但是目前OCR系统主要针对文字的识别上,对于出版物的版面以及版面文字的格式的恢复,并没有给出相应的解决方案。对于版面恢复中主要遇到的困难是文字字体的恢复。对于汉字字体识别问题,目前主要有几种方法,但是都是基于人工特征提取的方法。以往的方法主要分为两大类,第一种为整体分析法,将一整片数据看做采用小波纹理分析抽取字体特征用于分类;使用滤波器提取文字的全局文字特征作为分类特征;使用小波包做多级分解,提取字体纹理特征的方法了;使用人工经验方式提取特征。可以看到这些方法都有一个重要的缺陷,如果一个文字整个版面含有不同的字体信息,这种场景就不能采用整体分析法。第二种为个体分析法,个体分析法对象为单个字符图像,依然采用小波分解提取特征。这种方法需要知道单个汉字的图像,对于现代出版物的识别系统中,可以很容易得到单个汉字的图像。很显然这种方法可以解决整体法不能解决文字中夹杂其他字符比如英文的情况。另外有人提出特征点的方法来处理汉字字体识别,但是特征点的提取也是有问题,因为定义提取的特征需要人为干预。
由此可见,在考察完整体法和个体法来看,个体法明显更灵活并适用于多种情况。但是应该看到传统方法基本上都是采用图像处理的方法,计算复杂度都很高。另外不同汉字的外形差异是不一样的,而采用图像处理的方法往往不能有效解决这个问题。
综上所述,我们可以看到传统汉字字体识别方法的不足,因为汉字字符的复杂性,特征提取方法不能处理多变的汉字外形,特征点提取方法需要人工专家定义重要的特征点位置。而且,对于哪些特征点重要也不能给出统一的标准。故而基于CNN网络的字体识别方法可以靠卷积核以及池化层,自动生成特征,这就避免人为特征提取上的不稳定性以及盲点。我们通过计算机内嵌的字体生成实验数据,然后训练CNN深度学习网络。最终实现结果显示出了良好的稳定性,较高的正确率,一次训练多次使用等通用性好的优点。
与传统特征提取方法不同,卷积神经网络通过卷积核提取特征,每一个神经元和前一层的局部感受区域相连,通过卷积核计算局部特征。以卷积窗口的移动生成特征平面,每一个特征平面共享一个卷积核,做到权值共享,降低了权值的数量的优点。CNN网络主要用于识别二维图像,由于共享权值采用监督学习的方式得到。所以避免了人为提取特征,故而CNN具备从训练数据中学习共享权值的优点。通常CNN网络分为多层,其中一种叫卷基层,一种叫池化层,卷基层和池化层可以有多个。分别用于特征的提取和特征参数的处理。
基于CNN网络的汉字图像字体识别及其原理的更多相关文章
- [Python]基于CNN的MNIST手写数字识别
目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...
- 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像内容识别
程序环境为高性能集群:CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In ...
- 卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别
由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的C ...
- 基于LeNet网络的中文验证码识别
基于LeNet网络的中文验证码识别 由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013 ...
- MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...
- OverFeat:基于卷积网络的集成识别、定位与检测
摘要:我们提出了一个使用卷积网络进行分类.定位和检测的集成框架.我们展示了如何在ConvNet中有效地实现多尺度和滑动窗口方法.我们还介绍了一种新的深度学习方法,通过学习预测对象边界来定位.然后通过边 ...
- 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...
- Java基于opencv实现图像数字识别(五)—投影法分割字符
Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...
- Java基于opencv实现图像数字识别(四)—图像降噪
Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...
随机推荐
- 使用Ajax的Time实现倒计时功能
网上有网友想实现一个功能,就是倒计时的功能.以某时间点与当前时间比较,还剩余时间,进行实时显示.这个问题,让Insus.NET想起以前有做过一个实时时钟有点相似.http://zzk.cnblogs. ...
- winform窗体 小程序【进程】
进程 一个应用程序就是一个进程,我的理解是,只要是打开应用程序,就会创建进程. 在.NET框架在using.System.Diagnostics名称空间中,有一个类Process,用来创建一个新的进程 ...
- oracle中scott/tiger、sys、SYSDBA、system都是什么用
scott 是个演示用户,是让你学习ORACLE用的 SYSDBA 不是用户,可以认为是个权限,超级权限详细点说吧 超级用户分两种 SYSDBA和SYSOPTSYSOPT 后面3 ...
- Web前端基础——CSS
一.CSS概述 css ( cascading style sheets ) 层叠样式表,可以轻松设置网页元素的显示.位置和格式外,甚至还能产生滤镜,图像 淡化,网页淡入淡出的渐变效果,简而言之,cs ...
- Collection集合的带All功能的测试
public class Demo4_CollectionAll { public static void main(String[] args) { // Demo1(); // Demo2(); ...
- 判断ArryaList有没有重复对象的方法
ArrayList类是List类下一种常用的子类,如果要判断容器里面的对象是否有相等,有两种方法. 下面是自定义的一个Student类,假设容器里重复是按照对象的两个属性都相等. /** * @aut ...
- Windows平台如何部署scrapy
0.安装Anaconda 这个不教了,自己去Anaconda官网上下个安装包,装上就好. https://www.anaconda.com/distribution/ 1.使用Anaconda创建一个 ...
- 深入理解CSS3 gradient斜向线性渐变——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3639 一.问题没有想 ...
- python学习之老男孩python全栈第九期_day002知识点总结
1. 格式化输出: (1) %(占位符) s(str字符串) d(digit数字) (2) 想单纯输入%,需要输入两个%(%和占位符冲突),前面的%相当于转义. 2. while else循环: (1 ...
- tinyint、smallint、bigint、int 区别
1byte=8bit [tinyint] 从 0 到 255 的整型数据.存储大小为 1 字节.如果设置为UNSIGNED类型,只能存储从0到255的整数,不能用来储存负数. [smallint] ...