
往期的文章,我们分享了手写字母的训练与识别
使用EMNIST数据集训练第一个pytorch CNN手写字母识别神经网络
利用pytorch CNN手写字母识别神经网络模型识别手写字母
哪里的文章,我们只是分享了单个字母的识别,如何进行多个字母的识别,其思路与多数字识别类似,首先对进行识别,并进行每个字母的轮廓识别,然后进行字母的识别,识别完成后,直接在上进行多个字母识别结果的备注
Pytorch利用CNN卷积神经网络进行多数字(0-9)识别
根据上期文章的分享,我们搭建一个手写字母识别的神经网络
第一层,我们输入Eminist的数据集,Eminist的数据是一维 2828的,所以第一层的输入(1,28,28),高度为1,设置输出16通道,使用55的卷积核对进行卷积运算,每步移动一格,为了避免尺寸变化,设置pading为2,则经过第一层卷积就输出(16,28,28)数据格式
再经过relu与maxpooling (使用22卷积核)数据输出(16,14,14)
第二层卷积层是简化写法nnConv2d(16, 32, 5, 1, 2)的第一个参数为输入通道数in_channels=16,其第二个参数是输出通道数out_channels=32, # n_filters(输出通道数),第三个参数为卷积核大小,第四个参数为卷积步数,最后一个为pading,此参数为保证输入输出的尺寸大小一致
全连接层,最后使用nnlinear()全连接层进行数据的全连接数据结构(3277,37)以上便是整个卷积神经网络的结构,
大致为:input-卷积-Relu-pooling-卷积
-Relu-pooling-linear-output
卷积神经网络建完后,使用forward()前向传播神经网络进行输入的识别
这里我们使用腐蚀,膨胀 *** 作对进行一下预处理 *** 作,方便神经网络的识别,当然,我们往期的字母数字识别也可以添加此预处理 *** 作,方便神经网络进行预测,提高精度
getContours函数主要是进行中数字区域的区分,把每个数字的坐标检测出来,这样就可以 把每个字母进行CNN卷积神经网络的识别,进而实现多个字母识别的目的
首先,输入一张需要检测的,通过preProccessing预处理与getContours函数获取中的每个字母的轮廓位置
transformsCompose此函数可以 把输入进行pytorch相关的 *** 作,包括转换到torch,灰度空间转换,resize,缩放等等 *** 作
然后加载我们前期训练好的模型
由于神经网络识别完成后,反馈给程序的是字母的 UTF-8编码,我们通过查表来找到对应的字母
字符编码表(UTF-8)
通过上面的 *** 作,我们已经识别出了中包括的字母轮廓,我们遍历每个字母轮廓,获取单个字母数据,这里需要特殊提醒一下 :我们知道EMNIST数据库左右翻转后,又进行了的逆时针旋转90度
这里我们使用cv2flip(imgRes,1)函数,进行的镜像,并使用getRotationMatrix2D函数与warpAffine函数配合来进行的旋转 *** 作,这里就没有PIL来的方便些
然后,我们对数据进行torch转换train_transform(imgRes),并传递给神经网络进行识别
待识别完成后,就可以把结果备注在原始上
以上就是关于利用pytorch CNN手写字母识别神经网络模型识别多手写字母(A-Z)全部的内容,包括:利用pytorch CNN手写字母识别神经网络模型识别多手写字母(A-Z)、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)