数字图像处理与深度学习技术应用 课件 第11、12章 基于深度学习CNN模型的汉字识别、基于深度学习CNN模型的语音识别_第1页
数字图像处理与深度学习技术应用 课件 第11、12章 基于深度学习CNN模型的汉字识别、基于深度学习CNN模型的语音识别_第2页
数字图像处理与深度学习技术应用 课件 第11、12章 基于深度学习CNN模型的汉字识别、基于深度学习CNN模型的语音识别_第3页
数字图像处理与深度学习技术应用 课件 第11、12章 基于深度学习CNN模型的汉字识别、基于深度学习CNN模型的语音识别_第4页
数字图像处理与深度学习技术应用 课件 第11、12章 基于深度学习CNN模型的汉字识别、基于深度学习CNN模型的语音识别_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章基于深度学习CNN模型的汉字识别目录11.1深度学习技术概述11.2卷积神经网络基本概念11.3汉字识别系统设计11.4汉字图像预处理11.5投影与分割11.6构建汉字识别模型11.6.1构建卷积神经网络模型11.6.2识别模型训练11.7汉字识别模型检验 11.1深度学习技术概述深度学习思想是模拟人类神经系统的结构和功能来实现对数据的学习和识别。它是一种以人工神经网络为基础的机器学习方法,具有多层次的神经网络结构,被称为深度神经网络。主要特点:①多层次的神经网络结构;②自动特征学习;③端到端学习;④大规模数据和计算:。⑤广泛应用。重要概念和组成部分:①神经网络(NeuralNetworks):包括输入层、隐藏层和输出层。②深度神经网络(DeepNeuralNetworks,DNN):包含多个隐藏层的神经网络。③卷积神经网络(ConvolutionalNeuralNetworks,CNN):捉图像中的局部特征,通过池化层减小特征图的尺寸,最后通过全连接层进行分类。④深度学习框架:TensorFlow、PyTorch、Keras等简化了深度学习模型的构建和训练流程。⑤前馈和反向传播(FeedforwardandBackpropagation):前馈从输入层经过网络传递到输出层的过程,反向传播是通过计算梯度来调整网络权重的过程。

11.2卷积神经网络基本概念卷积神经网络(ConvolutionalNeuralNetwork,CNN)结构有:输入层、卷积层、池化层、输出层等,其他的还可以有全连接层,归一化层之类的层结构。基本概念(1)卷积层(ConvolutionalLayer)通过卷积操作对输入数据进行特征提取。通过共享权重的方式,减少需要训练的参数数量,从而提高模型的计算效率和泛化能力。其中,f是输入图像,g是卷积核,k是卷积核的大小。

(2)滤波器(Filter)或卷积核(Kernel)用于在卷积操作中提取特征的小矩阵。它在卷积过程中通过滑动窗口在输入数据上移动,并与局部区域进行卷积操作。实际就是一个数值矩阵,常用的卷积核大小有1×1、3×3、5×5、7×7等。局部感受野和权值共享是卷积操作的两个鲜明特点。(3)步幅(Stride)步幅定义了滤波器在输入数据上滑动的步长。较大的步幅可以减小输出特征图的尺寸。(4)填充(Padding)在卷积操作中,填充是在输入数据的边缘周围添加额外的像素。填充可以用来保持输出特征图的尺寸,减小信息丢失。(5)池化层(PoolingLayer)池化层用于减小特征图的空间尺寸,通过选择局部区域的最大值(最大池化)或平均值(平均池化)来实现。池化有助于减少计算量和提高模型的鲁棒性。(6)激活函数(ActivationFunction)作用是选择性地对神经元节点进行特征激活或抑制,能对有用的目标特征进行增强激活,对无用的背景特征进行抑制减弱。ReLU函数定义如下:ReLU(x)=max(0,x)特性:①非线性性。②缓解梯度消失问题。③稀疏激活性,提高模型的表达能力。④计算简单。(7)权重共享(WeightSharing)卷积操作中每个卷积核的值是不变的,同一滤波器的权重被用于不同位置的输入数据,这种权重共享的机制减少了模型的参数数量。(8)损失函数卷积神经网络(CNN)通常用于图像分类、目标检测等任务。对于这些任务,常见的损失函数包括交叉熵损失和均方误差损失,具体的选择取决于任务的性质。①交叉熵损失(Cross-EntropyLoss)在输出层使用Softmax激活函数时。二分类交叉熵:

(9)Dropout随机地关闭一些神经元,用来防止过拟合的正则化技术。阻止它们参与前向传播和反向传播过程。多分类交叉熵:

其中,M是判别的数量。是观测样本i属于c类的预测概率。②均方误差损失(MeanSquaredError,MSE):

在每个训练迭代中,Dropout的过程如下:随机选择一部分神经元(隐藏层中的节点);将选择的神经元的输出置为零;执行前向传播和反向传播过程;更新权重时,只考虑那些没有被置为零的神经元。图11-1Dropout功能示意图(10)全连接层(FullyConnectedLayer)在卷积神经网络的末尾,通常会添加一个或多个全连接层,用于将卷积层的输出转换为最终的分类或回归结果。11.3汉字识别系统设计汉字识别系统一般包含学习和识别两个过程。图11-2汉字识别系统功能图(1)图像收集和准备。(2)对图像进行预处理。(3)构建汉字图像训练集。(4)选择模型结构。(5)模型构建。添加适当的卷积层、池化层、全连接层等组件,并选择合适的激活函数。importtensorflowastffromtensorflow.kerasimportlayers,modelsmodel=models.Sequential()model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(height,width,channels)))model.add(layers.MaxPooling2D((2,2)))model.add(layers.Conv2D(64,(3,3),activation='relu'))model.add(layers.MaxPooling2D((2,2)))model.add(layers.Conv2D(64,(3,3),activation='relu'))model.add(layers.Flatten())model.add(layers.Dense(128,activation='relu'))model.add(layers.Dense(num_classes,activation='softmax'))(6)模型训练。选择合适的停止训练策略。pile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])model.fit(train_data,train_labels,epochs=num_epochs,validation_data=(val_data,val_labels))(7)模型评估。使用测试集对模型进行评估,计算准确率、精确度、召回率等性能指标。如果模型性能不满足要求,可以通过调整超参数、改进数据集或尝试其他模型结构来进行优化。test_loss,test_acc=model.evaluate(test_data,test_labels)将图像处理技术与深度学习相结合的识别过程:(1)获取待识别的汉字图像。(2)对待识别的汉字图像进行与学习过程相同的图像预处理,包括图像的灰度化、二值化、腐蚀、膨胀、投影分割等操作。(3)使用训练好的模型对新的汉字图像进行识别。predictions=model.predict(new_data)(4)部署和应用。(5)误差分析和改进。。(6)用户界面设计(可选)。11.4汉字图像预处理理论基础1.汉字图像预处理步骤(1)获取需要处理的图像。(2)进行灰度化、二值化处理。(3)进行腐蚀、膨胀处理。(4)进行投影与分割。(5)将分割后的图像保存到指定位置。效果展示图11-5膨胀图像进行腐蚀处理图11-4对二值图像进行膨胀处理图11-3对灰度图像进行二值化处理11.5投影与分割理论基础汉字图像 水平投影 垂直投影图11-6投影与分割实现步骤

(1)将二值化图像进行水平投影。(2)根据水平投影图像确定并记录水平分割点。(3)将二值化图像进行垂直投影。(4)根据垂直投影图像确定并记录垂直分割点。通过分割点组合,在原图中绘制包含汉字的蓝色矩形框。(5)通过坐标分割出单个汉字图像。效果展示图11-7投影分割示意图11.6构建汉字识别模型11.6.1构建卷积神经网络模型(1)卷积神经网络的输入是深度为3的图像,故第一层为卷积层,输入为3,输出为16,卷积核为3*3,步长为1。使用函数BatchNorm2d()进行归一化处理,激活函数ReLU()被激活。(2)第二层为卷积层,输入为16,输出为32,卷积核为3*3,步长为1。使用函数BatchNorm2d()进行归一化处理,激活函数ReLU()被激活。(3)第三层为池化层,池化层进行MaxPool2d()取最大值,核的大小为2*2。(4)第四层为卷积层输入为32,输出为64,卷积核为5*5,步长为1。使用函数BatchNorm2d()进行归一化处理,激活函数ReLU()激活;(5)第五层为卷积层输入为64,输出为128,卷积核为3*3,步长为1;使用函数BatchNorm2d()进行归一化处理,激活函数ReLU()激活;(6)第六层为池化层,池化层进行MaxPool2d()取最大值,核的大小为2*2;(7)第七层为全连接层,输入为128*12*12,经过全连接层进行分类,输出为20个类别特征数据。构建汉字识别模型模型编程实现/***************************************************************/*类名称:CNN(nn.Module)*功能:汉字识别的神经网络结构/***************************************************************/classCNN(nn.Module):def__init__(self):super(CNN,self).__init__()self.layer1=nn.Sequential(nn.Conv2d(3,16,kernel_size=3,stride=1),nn.BatchNorm2d(16),nn.ReLU(inplace=True))self.layer2=nn.Sequential(nn.Conv2d(16,32,kernel_size=3,stride=1),nn.BatchNorm2d(32),nn.ReLU(inplace=True)模型编程实现)self.layer3=nn.Sequential(nn.MaxPool2d(kernel_size=2,stride=2))self.layer4=nn.Sequential(nn.Conv2d(32,64,kernel_size=5,stride=1),nn.BatchNorm2d(64),nn.ReLU(inplace=True))self.layer5=nn.Sequential(nn.Conv2d(64,128,kernel_size=3,stride=1),nn.BatchNorm2d(128),nn.ReLU(inplace=True))self.layer6=nn.Sequential(nn.MaxPool2d(kernel_size=2,stride=2))模型编程实现)self.fc=nn.Sequential(nn.Linear(128*12*12,1024),nn.ReLU(inplace=True),nn.Linear(1024,128),nn.ReLU(inplace=True),nn.Linear(128,20),nn.Softmax(1))defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)x=self.layer4(x)x=self.layer5(x)x=self.layer6(x)x=x.view(x.size(0),-1)x=self.fc(x)returnx11.6.2识别模型训练确定损失函数交差熵(CrossEntropy)是分类问题中使用比较广的损失函数。配合Softmax回归一起使用,在神经网络输出层后加上一个Softmax层,将神经网络的输出变成一个概率分布。得到的输出结果与正确结果的距离越小,代表设计的神经网络效果越好。模型训练步骤①获取训练集的路径;②将训练集内汉字图像的文件名加载到列表中,并给每一类的汉字图像加上相同的标签进行分类,准备进行训练;③确定学习率为0.02;④确定学习次数为1500;⑤确定分类数目为20;⑥选择模型,模型为之前创建的卷积神经网络模型;⑦确定损失函数,此系统使用的是交叉熵损失函数;⑧将分类好的图像按照规定的参数进行训练;⑨将训练出的结果数据保存在模型中,给识别过程使用。11.7汉字识别模型检验汉字识别步骤汉字识别步骤如下:①获取测试集待识别汉字图像;②对汉字图像进行预处理(灰度化、二值化);③对汉字图像进行投影分割;④对分割后的图像进行识别。作者杨淑莹敬上谢谢!第12章基于深度学习CNN模型的语音识别目录12.1语音识别系统设计12.2语音信号预处理及特征提12.2.1语音信号预处理12.2.2MFCC特征提取12.3构建语音识别模型12.3.1构建卷积神经网络模型12.3.2识别模型训练12.4语音识别模型检验12.1语音识别系统设计语音识别系统一般包含学习和识别两个过程。图12-1语音识别系统功能图(1)数据收集和准备。(2)对语音信号进行预处理。包括语音信号分帧、预加重、提取语音信号的MFCC特征等操作。(3)构建语音信号训练集。将收集的语音信号进行预处理,按照帧的时间顺序和特征值转换成二维图像。(4)选择卷积神经网络(CNN)模型结构。(5)模型构建。在深度学习框架中构建语音识别模型,包括输入层、卷积/循环层、全连接层等组件,并选择适当的激活函数。(6)模型训练。将数据集划分为训练集、验证集和测试集。使用训练集对模型进行训练,使用验证集对模型进行模型调优,监控模型在训练集和验证集上的性能。(7)模型评估。使用测试集对模型进行评估,计算准确率、WER(WordErrorRate)等性能指标。语音处理技术与深度学习相结合的识别过程:(1)获取待识别语音信号。(2)对待识别的语音信号进行与学习过程相同的预处理,包括包括语音信号分帧、预加重、提取语音信号的MFCC特征等操作,按照帧的时间顺序和特征值转换成二维图像。(3)使用训练好的模型对新的语音图像进行识别。(4)部署和应用。(5)误差分析和改进。(6)用户界面设计(可选)。12.2语音信号预处理及特征提取基本原理(1)语音信号预加重预加重的主要目的是为了使语音信号的频谱变得平坦。值取的是0.97,(2)分帧(2)将n个采样点结合在一起作为一个观测点位,成为一帧。为了解决相邻两帧变化过大的问题,相邻帧之间会有一段重叠区域,重叠区域的大小为n的值的二分之一或三分之一。(3)加窗加窗的意思就是加汉明窗,把汉明窗与每一帧相乘,以增加帧的连续性。的值为0.9<<1.0,本模块中基本原理式中,X(n)为语音信号,N为傅里叶变换点数。(4)快速傅里叶变换得到语音信号频谱上的分布。W(n)公式如下实现步骤实现步骤如下:①获取语音信号;②语音信号预加重;③语音信号分帧;④语音信号加窗;⑤语音信号快速傅里叶变换。12.2.2MFCC特征提取基本原理(1)三角带通滤波器作用是使频谱更平滑,并消除谐波,增强原语音的共振峰。滤波器的公式为:(2)计算经过滤波器组后的语音信号对数能量公式如下:式中(3)通过离散余弦变化(DCT)得到MFCC特征MFCC特征提取步骤MFCC特征提取步骤如下:①获取语音信号;②语音信号预加重;③语音信号分帧;④语音信号加窗;⑤语音信号快速傅里叶变换;⑥语音信号的频谱数据通过三角带通滤波器;⑦三角带通滤波器输出结果对数运算;⑧对数运算结果进行离散余弦变换得到MFCC特征矩阵;⑨根据MFCC特征矩阵值把特征矩阵转换为图像。效果展示提取MFCC特征后,需要将特征矩阵转换为图像组成训练集来进行训练。图12-2一条语音MFCC特征图像12.3构建语音识别模型12.3.1构建卷积神经网络模型(神经网络有十三层,步骤如下:①第一层为卷积层,filters为32,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活,加入Dropout避免过度拟合;②第二层为卷积层,filters为32,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活;③第三层为池化层,池化层进行MaxPool2d()取最大值,核的大小为2*2;④第四层为卷积层,filters为64,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活,加入Dropout避免过度拟合;⑤第五层为卷积层,filters为64,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活;⑥第六层为池化层,池化层进行MaxPool2d()取最大值,卷积核2*2,加入Dropout避免过度拟合;⑦第七层为卷积层,filters为128,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活,加入Dropout避免过度拟合;⑧第八层为卷积层,filters为128,卷积核3*3,步长为1,padding为same。激活函数ReLU()激活;⑨第九层为池化层,池化层

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论