首页 分享 实用性高的那种教程:使用Tensorflow和Keras进行手写识别

实用性高的那种教程:使用Tensorflow和Keras进行手写识别

来源:花匠小妙招 时间:2024-11-28 17:57

手写体识别(也就是由手写体分类)是一个具有挑战性的问题,因为每个个体写作风格有巨大的差异。解决这个问题的传统方法是提取诸如不同字母的曲率、字母b/w的间隔等的语言相关特征,然后使用类似SVM的分类器来区分作者。在本文中,将会展示一个基于深度学习的方法来识别这些功能。我们将把小块的手写图像传递给CNN,并用softmax分类损失进行训练。

为了演示这种技术的有效性,让我们用它来分类英文手写文本。

完整的代码:

https://github.com/priya-dwivedi/Deep-Learning/blob/master/handwriting_recognition/English_Writer_Identification.ipynb

获取的数据

IAM手写数据库是英文手写图像的最大数据库。它有1539页由600多名作家编写的扫描文本。为了达到这个演示的目的,我们将拿出数量最多的前50名作家。对于每个作者来说,数据库是由他们编写的单个句子的集合。以下是其中一个作者的示例:

神经网络不需要太多的原始数据预处理。所以我们不会对这些图片做任何修改,而是将完整的图片传递给神经网络,还会传递一小段文字。

生成的补丁数据

我们希望神经网络能够理解个体作家的写作风格,也希望这个神经网络能独立于文本(可以在任何语言上工作)。所以不是传递单个的句子或单词,而是传递随机的文本片段。这是通过从每句话随机裁剪113x113大小的补丁来完成的。下面的图片是8个这样的补丁拼贴。

8个补丁组成的拼贴画

我们可以编写一个生成器函数来移动每个句子,并从中产生随机的图像块。对于每个图像,我们将限制到可以生成的补丁总量的30%。

模型和结果

为此,我们可以使用Tensorflow后端在Keras中构建一个卷积神经网络(CNN)。这里将使用具有多个卷积和maxpool层的标准CNN,一些密集层和一个softmax激活的最终输出层。在卷积层和密集层之间使用RELU激活,并使用Adam优化器对模型进行优化。

模型的大小需要与数据的大小成正比。三个卷积最大层和几个致密层就足以解决这个问题。具体参见下面的模型总结:

CNN模型概述

经过一些超参数调整之后,我们在模型测试数据集上损失了94%。

请参阅下面的两个补丁,该模型被分类为同一个作者。 “t”的形状看起来非常相似,所以也会让人直观地觉得属于同一个作者。

总结

使用深度学习的手写识别是一种非常强大的技术,原因如下:

·它自动识别出强大的功能

·我们采用随机补丁的方法使模型文本独立

·预测精度高,可以在实际应用中使用

发表于: 2018-01-262018-01-26 09:53:27原文链接:http://kuaibao.qq.com/s/20180126G0VHDK00?refer=cp_1026腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。如有侵权,请联系 cloudcommunity@tencent.com 删除。

JBPM Workflow补丁生成keras图像识别keras文字识别有多少层使用CSS识别浏览器和操作系统?使用IIS和MVC进行授权的问题

相关知识

TensorFlow学习记录(八)
tensorflow识别花朵
keras中Lambda层的使用
转移学习:使用VGGNet对花朵图像进行分类
手写数字识别
Python教程之使用 Gradio 部署 Keras 花卉分类模型
深度学习应用开发
深度学习入门——基于TensorFlow的鸢尾花分类实现(TensorFlow
基于TensorFlow Lite实现的Android花卉识别应用
基于深度学习和迁移学习的识花实践

网址: 实用性高的那种教程:使用Tensorflow和Keras进行手写识别 https://www.huajiangbk.com/newsview764859.html

所属分类:花卉
上一篇: 【深度学习系列】手写数字识别
下一篇: 手写字可以识别吗?分享3个黑科技

推荐分享