本文为课设论文:对于汉字数字的识别,模型搭建和代码并不是难点,预处理才显得重要和困难。虽然模型准确率能达到90%~95%,但是也存在没解决的问题。
如有需要,可以私信提供完整代码工程及其数据集。(tensorflow2搭建模型 pandas数据处理 matplotlib可视化显示 )
随着时代的不断进步和技术的发展,网络社交媒体的兴起也带来了图像数据的“爆炸性”增长。作为人们日常交流的主要方式之一,图像因其内容丰富,直观等优点而被广泛用作交流的载体。基于卷积神经网络的图像识别是图像识别领域中重要应用,通过使用图像进行特征值提取,识别和卷积等一系列算法运算来识别和分析不同的图像。人工智能的飞速发展使得机器学习在其研究领域中越来越重要。使用算法学习每条数据并预测结果。这已成为打开人工智能之门的重要钥匙。在机器视觉中,图像识别是基础,但是如何将图像中的低级信息与高级图像语义相关联成为图像识别的关键问题。
本文中所需要解决的问题是:针对含有若干汉字(0-10)的图像,能够自动检测并识别出图像中的汉字。
卷积神经网络是在早些年提出的,近年来人工智能的快速发展使这种模型重新回到学者的视野。它在图像技术,生物医学技术,工业生产等领域起着重要作用。神经网络的最早概念是由科学家在人类神经系统中扩展的,它模仿了人类神经系统并提出了神经网络的概念。从神经网络的概念出发,卷积神经网络得到了进一步的改进,该模型的出现为机器视觉带来了好消息。
我们选择CNN卷积神经网络而不是选择传统机器学习方法在于卷积神经网络具备以下几点优势:首先CNN不需要人工去提取特征,传统的机器学习需要人工提取特征.;其次传统的机器学习表达能力有限,深度学习表达能力强;最后深度学习适合处理大数据,而数据量比较小的时候,用传统机器学习方法也许更合适。
tensorflow2:我们选择TensorFlow 2.0 替代1.0版本,在于代码上的简洁性,可用性和灵活性,可以极大程度上增快我们的开发效率。
使用numpy,pandas进行基本的数据挖掘与处理。
使用 matplotlib,cv2进行图像的读取显示,转化处理。
数据网站:http://www.nlpr.ia.ac.cn/databases/handwriting/download.html
我们从网站中选择了如上图的四个部分的数据作为训练数据和测试数据,然后查询数字汉字字符的GB2312编码十进制格式。从所有汉字类别中选择出汉字(0-10)。
紧接着我们判断图像是RGB三通道,所以我们需要将RGB三通道图像转为灰度。对图像进行灰度处理的同时我们Resize操作统一图片尺寸为(32,32),结果如下:
此时图片从三通道转换成一通道,随后设置阈值,对图片进行二值化处理,得到如下图:
我们可以明显看出,数字特征更为明显,并且像素点非0即1更有利于计算。同时我们考虑了进行腐蚀和膨胀,但从结果可知,对精度影响不大,在此不多做声明。
由于数字类别过于简单,样本特征比较明显,初步没有考虑使用经典卷积神经网络,例如AlexNet、VGG、GoogLeNet、ResNet,如果选择了深层的经典神经网络那就意味着需要训练更多的参数以及更多的样本数量,如果后期的训练结果不理想可以考虑使用。
开始我们搭建了两个网络结构:
模型一:
在这个模型中,卷积核的大小都是33,步长都是采用默认的1。这是由于参考了经典模型vgg,两个33的卷积等价与55的卷积,三个33的卷积等价与7*7的卷积。这样的目的是为了减少训练参数的参数,同时增加层数可以提高分类结果的精度。但绝对不是层数越多效果一定越好,在RetNet模型论文中有提到可能产生退化问题,但是本模型的深度远远达不到,无需担心。模型中使用的激活函数都是relu。
具体参数使用如上表所示,我们可以将模型一称为五层结构:
在第二个模型中,我们进行了三次卷积,两次最大池化,两次全连接以及Dropout 防止过拟合。具体参数使用如下表。
模型一训练结果如下: