手写体识别

Posted 自挂逸夫楼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写体识别相关的知识,希望对你有一定的参考价值。

此网络用了一个网络 + 三个并联的网络

 

第一个网络,识别ACBDE

结构:

输入 32 × 32 × 1

第一层:16个5*5的卷积核,relu激活,maxpool池化

第二层:32个3*3的卷积核,relu激活,maxpool池化

第三层:64个3*3的卷积核,tanh激活,maxpool池化

输出层:将第三层的输出变成一维向量,然后使用5个节点,最后用softmax激活

dropout = 0.6

网络出为分别为ABCDE的概率

网络准确率为98.12

 

第二个网络,识别A

结构:

输入 32 × 32 × 1

第一层:8个5*5的卷积核,relu激活,maxpool池化

第二层:16个3*3的卷积核,relu激活,maxpool池化

第三层:32个3*3的卷积核,tanh激活,maxpool池化

输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活

 dropout = 0.5

网络输出为A的概率

网络准确率为99.1

 

第三个网络,识别C

结构:

输入 32 × 32 × 1

第一层:8个5*5的卷积核,relu激活,maxpool池化

第二层:16个3*3的卷积核,relu激活,maxpool池化

第三层:32个3*3的卷积核,tanh激活,maxpool池化

输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活

dropout = 0.6 

网络输出为C的概率

网络准确率为99.2

 

 

第四个网络,识别E

结构:

输入 32 × 32 × 1

第一层:16个5*5的卷积核,relu激活,maxpool池化

第二层:32个3*3的卷积核,relu激活,maxpool池化

第三层:64个3*3的卷积核,tanh激活,maxpool池化

输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活

 dropout = 0.4

网络输出为E的概率

网络准确率为98.9

 

 

首先将图片输入第一个网络

如果是A的概率最大

就放入第二个网络

若第二个网络判定A的概率 < 0.4

则将A的概率置为0之后寻找最大的概率,并将他作为输出

 

如果是C的概率最大

就放入第三个网络

若第三个网络判定C的概率 < 0.2

则将C的概率置为0之后寻找最大的概率,并将他作为输出

 

如果是E的概率最大

就放入第四个网络

若第四个网络判定E的概率 < 0.2

则将E的概率置为0之后寻找最大的概率,并将他作为输出

 

最后总体网络的查准率为98.29

查全率对于ABCDE分别是 97.86, 98.88, 98.99, 97.63, 98.28

 

使用11000张图片

8000张图片做训练集 3000张图片做验证集合

 

 

对于之前网络的比较:

第一层使用3*3的卷积核时 准确率<97.5

卷积层激活函数全部使用relu 准确率 < 93.0

只使用一个网络 准确率<98.12

 

因为图像较为简单 第一层使用大卷积核能更好的提取特征

因为是做分类问题,负数对于sigmoid和softmax均有影响

所以在最后一个卷积层使用tanh保留负数

 

用多个网络加大了神经网络深度的同时,减少了过拟合的出现

 

以上是关于手写体识别的主要内容,如果未能解决你的问题,请参考以下文章

手写数字识别基于matlab GUI知识库手写数字识别(写字板+图片)含Matlab源码 1227期

[图像识别]-离线识别手写数字

基于BP神经网络的手写体数字识别matlab仿真实现

手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期