版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章、计算机视觉清华大学出版社2025-3-10本章学习目标了解计算机视觉的发展历史了解计算机图像的表示与处理了解深度学习在计算机视觉中的应用熟悉和掌握卷积神经网络的使用4.1计算机视觉概述日常生活和工作中,大部分任务都离不开视觉的支持。有研究表明,超过80%的外界信息是通过视觉感知获得的。计算机视觉技术诞生之前,图像和视频对于计算机而言仅仅是数据文件,机器只能识别这些文件的格式、大小等基本属性,却无法理解其中的内容。计算机视觉(ComputerVision,CV)这一重要研究领域,让计算机具备了从图像和视频等视觉输入数据中提取有价值信息的能力。计算机视觉则给予了人工智能发现、观察和理解视觉数据的底层基础。4.1.1计算机视觉简介计算机视觉广泛应用于自动驾驶、医疗影像、工业检测、智能监控等领域。深度卷积神经网络(CNN)在图像分类、目标检测、物体识别等方面展现了卓越的性能,大大提高了视觉系统的精度和效率。图4.1什么是计算机视觉4.1.1计算机视觉简介计算机视觉领域中的部分核心概念像素特征图形处理特征提取图像分类目标检测图像分割图像标注4.1.2计算机视觉发展史早期探索阶段计算机视觉的早期研究(20世纪50-70年代)主要集中于基本的图像处理和简单的视觉任务,如边缘检测、形状识别和对象的基本分割。基础形成阶段20世纪80至90年代进入了基础形成阶段(20世纪80-90年代)。机器学习方法成为核心研究工具,广泛应用于图像处理、图像识别等研究。深度学习兴起阶段2010年以来,多层神经网络,直接从原始数据中自动学习特征表示,大幅减少了人工干预和领域知识的依赖。这种方法不仅降低了人工成本,还能够捕捉到更加复杂和深层的特征模式,从而显著提升了视觉任务的性能和应用范围。4.1.3计算机视觉应用与挑战(一)随着技术的不断进步,计算机视觉已经在多个领域得到广泛应用,其主要应用包括:自动驾驶人脸识别工业监控智能零售智慧农业4.1.3计算机视觉应用与挑战(二)尽管计算机视觉在多个领域取得了显著进展,但仍面临挑战:标注数据缺乏特征不完整实时性要求道德和隐私问题4.2学习案例3:手写数字识别MNIST(ModifiedNationalInstituteofStandardsandTechnology)是一个经典的手写数字数据集。本小节将通过MINST手写数字识别案例的学习,为读者介绍数字图像识别的基本概念和方法。重点学习的内容包括: 数字图像的表示与处理 二分类和多分类模型 激活函数、损失函数与优化器 构建多层神经网络4.2.1计算机图像的表示MNIST是机器学习领域中最常用的基准测试数据集之一,包含60,000个训练样本和10,000个测试样本.每个样本是一个28x28像素的灰度图像,代表0到9的手写数字。其中,某个手写数字(例如8)的数字图像和对应的灰度值矩阵。4.2.2数据处理数据处理是计算机视觉任务中的关键步骤,涉及对图像原始数据的预处理、转换和特征提取,以便模型能够有效学习和理解图像内容。任务包括:安装PyTorch及其依赖库图像预处理数据集批处理4.2.3二分类与多分类(1)二分类问题是指将数据划分为两类的任务,目标通常是预测某个输入数据(样本)属于正类(例如“是”)或负类(例如“否”)。在二分类任务中,模型的输出通常为一个二值标签。多分类问题则是将数据划分为多个类别的任务,其中每个输入只能属于一个类别,模型的输出为多个类别中的一个。4.2.3二分类与多分类(2)激活函数对多层神经网络而言,如果没有激活函数,每一层的计算仅是线性变换的叠加,无论网络的层数有多少,最终的输出仍然只是输入的线性组合,无法突破线性模型的局限性。在神经网络中,激活函数的引入主要是为了增加模型的非线性能力,使其能够解决更为复杂的问题。激活函数的设计灵感来源于生物神经元的运行机制。研究发现,生物神经元的响应输出并非线性,只有当输入的累计值超过某个阈值时,神经元才会发出固定的响应。4.2.3二分类与多分类(3)常用激活函数激活函数输出范围梯度消失问题计算复杂度适用场景特点和局限性Sigmoid(0,1)有较高二分类问题;早期简单神经网络梯度容易消失;输出非零中心化,更新效率低tanh(-1,1)有较高数据有正负对称关系;序列建模任务(如RNN,LSTM等)零中心化提升梯度效率,但仍有梯度消失问题ReLU[0,+∞)较少低深层神经网络(如CNN);最常用的默认激活函数简单高效,但存在“神经元死亡”问题Softmax(0,1)无较高多分类问题的输出层输出类别概率分布,归一化求和为14.2.3二分类与多分类(4)损失函数在二分类任务中,常用的损失函数是二元交叉熵损失(BinaryCross-EntropyLoss,BCELoss),在PyTorch中,使用torch.nn.BCELoss()实现该损失函数。对于多分类任务,通常使用交叉熵损失(Cross-EntropyLoss,CELoss)。模型的输出通常先通过Softmax激活函数将预测值映射为各类别的概率分布,然后利用CELoss计算模型预测的概率分布与真实分布之间的差异。PyTorch中,使用torch.nn.CrossEntropyLoss()实现该损失函数。4.2.4多层神经网络多层神经网络(Multi-LayerNeuralNetwork,MLP)的本质是一个由多个层组成的神经网络模型模仿生物神经系统中的神经元连接模式,主要用于对复杂非线性问题建模。多层神经网络包含:输入层:接收输入数据;隐藏层:通过线性变换和非线性激活函数对输入数据进行处理,从而学习数据潜在模式与关系;输出层:生成最终的预测结果。4.2.4多层神经网络定义(1)#代码示例4-6,手写数字识别多层(两层)神经网络类定义classHWR_Model(torch.nn.Module):def__init__(self,in_features,hidden_size,out_classes):super(HWR_Model,self).__init__()#1.线性层1self.linear1=torch.nn.Linear(in_features,hidden_size)#2.激活函数self.relu=torch.nn.ReLU()#3.线性层2self.linear2=torch.nn.Linear(hidden_size,out_classes)#4.激活函数层#将数据缩放到0-1之间,输出的是每种数的概率,它们的之和等于1self.softmax=torch.nn.Softmax(dim=1)
defforward(self,x):#1.先经过线性函数层1out=self.linear1(x)#2.经过激活函数层out=self.relu(out)#3.经过线性函数层2out=self.linear2(out)#4.经过激活函数层out=self.softmax(out)returnout4.2.4多层神经网络定义(2)计算设备通常包括以下三类:中央处理单元(CPU):作为计算设备中的基本单元,中央处理器单元CPU(CentralProcessingUnit)是最常见的计算资源,负责执行各种计算任务,适合于处理逻辑判断和较小规模的计算任务;图形处理单元(GPU):图形处理单元GPU(GraphicsProcessingUnit)拥有数千个小的计算核心,是专为并行计算设计的设备,广泛用于深度学习和大规模数据处理。与CPU相比,GPU在执行矩阵计算等重复性高的任务时具有更高的效率,适合训练深度神经网络等大规模模型。其他计算设备:例如TPU(张量处理单元)等专门为深度学习优化的硬件,加速特定计算任务,或用于大规模数据处理和分布式计算的集群设备等。4.2.4多层神经网络定义(3)模型训练前需要确认:是否有可用的GPU设备确保模型和数据被加载到相同的计算设备上代码示例如下。#代码示例4-7,检查当前环境是否支持cuda,并创建deviceiftorch.cuda.is_available():
device=torch.device("cuda")else:
device=torch.device("cpu")#创建类对象model(称为模型),并将其装载到device设备上model=HWR_Model(28*28,500,10).to(device)#打印该模型print(model)4.2.4多层神经网络定义(4)损失函数与优化器#代码示例4-8,多分类损失函数定义#识别手写数值0-9,共10个分类importtorch.optimasoptimimporttorch.nnasnnlossFunction=nn.CrossEntropyLoss()learning_rate=0.01#多分类常用的优化器optimizer=optim.Adam(model.parameters(),lr=learning_rate)4.2.4多层神经网络定义(5)模型训练与预测#代码示例4-9,模型训练importdatetimestarttime=datetime.datetime.now()
#记录开始时间#循环次数设置为5epoches=5forepochinrange(epoches):#使用enumerate封装迭代器,用于返回索引值i(从0开始)
fori,(features,labels)inenumerate(train_loader):
#装载到内存或GPU中device='cpu'or'gpu'
features=features.view(-1,28*28).to(device)
labels=labels.to(device)
#1.正向传播
pred=model(features)
#调用model的forward()方法
#2.计算损失
loss=lossFunction(pred,labels)
#3.反向传播
loss.backward()
#4.更新参数
optimizer.step()
#5.清空梯度
optimizer.zero_grad()
ifi%100==0:
print(f"loss={loss:.4f}")endtime=datetime.datetime.now()elapsedTime=(endtime-starttime).secondsprint("训练完成,耗时{}秒!".format(elapsedTime))4.3学习案例4:CIFAR-10图像分类CIFAR-10数据集是一个常用于图像分类和计算机视觉任务的标准基准数据集。本节将通过一个基于CNN的CIFAR-10数据集分类案例,帮助读者深入理解CNN在图像分类任务中的应用,并掌握其核心构建方法。重点学习内容包括:
CNN结构 卷积层 池化层 构建CNN分类网络4.3.1CIFAR-10简介(1)CIFAR-10数据集(CanadianInstituteforAdvancedResearch10)由加拿大多伦多大学的AlexKrizhevsky和GeoffreyHinton等人创建。该数据集包含60,000张彩色图像,每张图像的尺寸均为32x32像素,分为10个类别:飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船、卡车。每个类别均包含有6,000张图像,其中50,000张用于训练,10,000张用于测试。4.3.1CIFAR-10简介(2)CIFAR-10图像集获取#代码示例4-14,下载CIFAR-10测试集示例代码importtorchimporttorchvision#训练集train_dataset=torchvision.datasets.CIFAR10(root="./data/cifar-10-python",
train=True,download=True)#测试集test_dataset=torchvision.datasets.CIFAR10(root="./data/cifar-10-python",
train=False,download=True)4.3.2卷积神经网络(1)卷积神经网络(CNN)是一种深度学习模型广泛应用于图像识别、目标检测等计算机视觉任务中。在学习CNN之前,我们需要考虑两个问题:1)计算机视觉(CV)处理的对象以何种形式存在?2)多层线性神经网络(参考4.2.4)应用于计算机视觉任务是否适当?4.3.2卷积神经网络(2)卷积神经网络做了什么?受人类视觉神经系统启发,CNN通过卷积核的局部感受野来处理图像;每个卷积核仅关注图像中的一小部分特征。通过该种方式,网络能够从局部特征逐步提取到更为抽象的全局信息,从而有效地捕捉图像的关键特征。4.3.2卷积神经网络(3)卷积神经网络结构CNN是一种特殊的深度学习模型或人工神经网络多层感知器,由多个层次构成每个层次在处理图像时起到不同的作用。CNN主要包括:卷积层、池化层、全连接层和输出层等组件,如图4.17所示。图4.17CNN网络结构4.3.3卷积层(1)卷积层(ConvolutionalLayer)是卷积神经网络(CNN)的核心组成部分具有三个非常重要的特征:局部卷积、参数共享和多核卷积。根据卷积核中的权重值,以及在image中对应的数据,特征图中第一个特征数据(左上角)的计算过程如下所示:1×1+1×0+1×1=20×0+1×1+1×0=10×1+0×0+1×1=1最终,计算结果为:2+1+1=4。4.3.3卷积层(2)卷积层三个非常重要的特征:局部卷积、参数共享和多核卷积。该机制具有:减少模型参数量。由于同一个卷积核的权重在整个输入图像上都是共享的,减少了需要训练的参数量。尤其是在处理高维数据(如大尺寸的图像)时,CNN模型的计算效率会更高。提升泛化能力。参数共享不仅能够简化模型,也增强了卷积核对局部模式的学习能力。例如,图像中的不同区域可能会存在相同的边缘或形状。由于卷积核采用参数共享机制,因而能在不同位置识别出相似的特征,从而提升了网络的泛化能力。平移不变性。如果一个物体在图像中发生了平移,由于参数共享机制,卷积核仍能在不同位置提取到相似特征。例如在人脸识别中,即使人脸在图像中的位置发生了变化,卷积核依然可以在人脸的不同部分检测到眼睛、鼻子等特征。4.3.2卷积层(3)卷积层三个非常重要的特征:局部卷积、参数共享和多核卷积。具体原因为:虽然参数共享提高了网络的效率,但单个卷积核只能提取一种特定的特征,如边缘或某种纹理。为了弥补这一缺陷,CNN通常会在每一层使用多个卷积核。每个卷积核提取不同的特征类型,这样CNN能够从同一输入图像中提取出多样化的特征表示。多核卷积有助于模型更全面地理解和表示复杂的图像内容。4.3.2卷积层(4)卷积层三个非常重要的特征:局部卷积、参数共享和多核卷积。卷积核的权重值是CNN中的可训练参数,因此,初始值通常是随机的;模型在训练过程中通过反向传播和梯度下降算法不断调整权重;最终,不同卷积核能够学习不同类型的特征。4.3.4池化层卷积运算通常会按固定步长滑动卷积核窗口生成特征图。该过程中不可避免地会产生大量重复和冗余信息,尤其是在图像中具有相似颜色或纹理的区域时。例如,在处理一张包含天空的图片时,天空区域的各部分颜色和纹理通常非常接近,这将导致卷积层提取的局部特征高度相似;不仅增加了特征冗余,同时使得计算量增大。为消除冗余信息,保留关键特征,池化层(PoolingLayer)被引入CNN中。池化层具有下述几个显著的特点:特征不变性特征
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026食品加工行业市场竞争生态及行业政策环境分析报告
- 2026福建龙岩连城县第三中学秋季招聘编外教师若干人的备考题库带答案详解(B卷)
- 2026浙江舟山市定海区干览镇人民政府第一批招聘城市管理辅助人员1人(7-28)笔试题库带答案详解(培优)
- 2026年青铜峡市机关事业单位助理岗位见习考前冲刺试卷【A卷】附答案详解
- 2026安徽桐汭企业管理咨询有限责任公司青年就业见习人员2人模拟试卷含答案详解【综合题】
- 长沙经开集团招聘笔试题目答案大全及解析
- 2026年8月宁波大学附属第一医院招聘编外影像科技术员6人考试备考试题及答案详解
- 2026年泸州市纳溪区政务服务中心(窗口人员)招聘笔试参考试题及答案详解
- 2026年陕西省汉中市政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 2026年上海市宝山区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 中医理疗公司忠诚顾客维护管理制度
- 硬包安装合同范本
- 2026年安徽省检察官逐级遴选笔试题目及答案
- 2026-2030直升机市场发展现状调查及供需格局分析预测报告
- (2026年)党务工作人员知识测试题库及答案
- Ozon平台开店流程指南
- 房地产开发项目融资分析报告模板
- 医保专网接入管理制度(3篇)
- 球房承包合同协议书
- CCER项目:三峡新能源江苏如东H6(400MW)海上风电场项目
- 2025浙江宁波朗辰新能源有限公司招聘3人笔试参考题库附带答案详解
评论
0/150
提交评论