OpenCV计算机视觉基础教程(Python版)(慕课版)(第2版)课件 第10章 机器学习和深度学习_第1页
已阅读1页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

OpenCV计算机视觉基础教程(Python版)(慕课版)(第2版)主讲教师:_______第10章机器学习和深度学习本章主要内容:机器学习深度学习AI大模型实战10.1.1KNN算法KNN是一种经典的监督学习算法,广泛应用于解决分类和回归问题。KNN算法的基本原理:对于未知样本,通过计算其与训练数据集中所有已知样本的距离,选择距离最近的k个邻居,根据这k个邻居的标签(分类问题)或值(回归问题)进行预测。1.图解KNN算法在OpenCV中应用KNN算法的基本步骤如下。(1)调用cv2.ml.KNearest_create()函数创建KNN模型对象。(2)将训练数据和标签作为输入,调用KNN模型对象的train()方法训练模型。(3)将待分类数据作为输入,调用KNN模型对象的findNearest()方法执行预测,返回预测结果、邻居标签、距离等信息。在图像中随机选择30个点,为每个点随机分配标签(0或1);图像中用矩形表示标签为0的点,用三角形表示标签为1的点;再随机新增一个点,用KNN算法找出其邻居和其与邻居的距离,并确定其标签(即完成分类)。示例代码2.用KNN算法识别手写数字OpenCV源代码中的“samples\data\digits.png”文件是一幅手写数字图像(其中数字为0~9),如图10-2所示。digits.png的尺寸为2000px×1000px,其中每个数字图像的尺寸为20px×20px,每个数字的图像有500个(排列成5行、100列的形式),共有5000个数字图像。可使用这些数字图像来训练KNN模型和执行测试。示例代码10.1.2SVM算法SVM是一种监督学习算法,广泛应用于分类和回归分析。SVM算法的核心目标:在不同类别之间找到一个“最优”的超平面,使两类样本之间的间隔(margin)最大。SVM算法中的基本概念如下。超平面:也称决策边界。在二维空间中,超平面是一条直线;在三维空间中,超平面是一个平面。支持向量:指位于分类边界上的样本。这些样本直接决定了分类器的边界。即使移除非支持向量样本,也不会影响最终的超平面位置。间隔:指从超平面到最近的两个异类样本之间的距离。1.图解SVM算法在图像中选择5个像素,分为两类,类别标签分别为0和1。将5个像素和标签作为已知分类数据训练SVM模型;然后用模型对图像中的所有像素进行分类,根据分类结果设置图像像素颜色,从而直观显示图像像素的分类结果。示例代码如下。2.使用SVM算法识别手写数据前面的示例中,KNN算法直接使用了像素值作为特征向量。SVM算法还可以使用图像的HOG描述符作为特征向量来对图像进行分类。

示例代码如下。10.1.3

K均值聚类算法K均值聚类是一种广泛使用的无监督学习算法,主要用于数据集的划分,目的是将数据集划分为k个簇,使得每个簇内样本的相似度较高,而不同簇之间样本的相似度较低。其核心思想是通过迭代优化,最小化簇内样本与簇中心的距离平方和。1.图解K均值聚类算法在尺寸为240px×320px的图像中选择3类数据点,为了便于说明K均值聚类算法,在选择数据点时设置了坐标的随机取值范围。将所有点作为分类数据,调用cv2.kmeans()函数并应用K均值聚类算法对该数据进行分类;在图像中用不同颜色显示分类数据和质心。示例代码如下。2.使用K均值聚类算法量化图像颜色使用K均值聚类算法量化图像颜色,得到特殊效果图像示例代码如下10.2深度学习机器学习通常包含输入、特征提取、分类和输出4个基本步骤。深度学习将机器学习中的特征提取和分类合并在同一个步骤中完成。相对于机器学习,深度学习需要的输入数据量更大,计算量也更大。深度学习的“深度”体现在神经网络层次规模上,例如,深度残差网络(DeepResidualNetwork,ResNet)及其变种实现的神经网络多达上百层。OpenCV在3.1版本中引入dnn模块,并在3.3版本中将其迁移到了核心模块中。使用dnn模块时,只需要导入预训练模型即可实现图像处理。OpenCV支持目前流行的深度学习框架,包括Caffe、TensorFlow和Torch/Pytorch等,以及基于开放神经网络交换(OpenNeuralNetworkExchange,ONNX)的框架。10.2.1基于深度学习的图像识别图像识别是指将图像内容作为一个对象来识别其类型。使用OpenCV中的深度学习预训练模型进行图像识别的基本步骤如下。(1)从配置文件和预训练模型文件中加载模型。(2)将图像文件处理为块数据。(3)将图像文件的块数据设置为模型的输入。(4)执行预测。(5)处理预测结果。1.基于AlexNet模型的图像识别AlexNet是一种深度卷积神经网络模型,其主要特点如下。大规模深度网络:包含5个卷积层、3个全连接层,远超当时的其他模型。线性整流单元(RectifiedLinearUnit,ReLU):首次在大规模网络中使用ReLU替代Sigmoid/Tanh,解决了梯度消失问题,加速训练。数据增强:通过随机裁剪、水平翻转和颜色变换扩充训练数据,显著减少过拟合。Dropout正则化:在全连接层引入Dropout(丢弃率为50%),防止神经元共适应,提升泛化能力。GPU加速:利用NVIDIAGeforceGTX580作为图形处理单元(GraphicsProcessingUnit,GPU)并行计算,缩短训练时间。局部响应归一化:在当时被认为有助于增强模型的泛化能力,后续研究表明该技术可被批量归一化替代。示例代码2.基于ResNet模型的图像识别ResNet由何凯明等人提出,其主要特点是在神经网络中增加了残差单元,可通过残差学习解决因网络深度增加而带来的退化问题,提高预测准确率。使用基于ResNet模型的预训练模型进行图像识别,示例代码如下。10.2.2基于深度学习的目标检测目标检测是指检测出图像中的目标图像,并识别其类型。使用OpenCV中的深度学习预训练模型进行目标检测的基本步骤如下。(1)从配置文件和预训练模型文件中加载模型。(2)创建图像文件的块数据。(3)将图像文件的块数据设置为模型的输入。(4)执行预测。(5)处理预测结果。1.基于MobileNet-SSD模型的目标检测MobileNet-SSD是结合了MobileNet和单次拍摄多边框检测器(SingleShotMultiBoxDetector,SSD)两种技术,专门为移动设备和嵌入式系统设计的一种轻量级目标检测模型。示例代码2.基于YOLO模型的目标检测YOLO是由约瑟夫·雷蒙(JosephRedmon)等人提出的目标检测算法。YOLO将图像分成若干个网格,对每个网格计算边框和可信度。Darknet是一个开源神经网络框架,支持YOLO系列目标检测模型。OpenCV的cv2.dnn.readNetFromDarknet()函数用于从Darknet框架格式的文件加载预训练的深度学习模型。

示例代码如下。Ultralytics负责维护YOLOv5及其后续版本如YOLOv10,并提供了丰富的文档和支持资源。可在GitHub仓库中查看详细的安装指南和使用教程,并下载预训练模型。使用Ultralytics维护的YOLOv10模型的基本步骤如下。(1)在GitHub仓库中下载预训练模型权重文件,如YOLOv10s权重文件为yolov10s.pt。(2)在命令提示符窗口中执行“pipinstallultralytics”命令安装Ultralytics。(3)使用Ultralytics中的YOLO类加载预训练模型。(4)使用模型完成推理和预测,获得预测结果。(5)处理预测结果。示例代码10.3.1准备工作调用通义大模型API实现图像识别和图像处理需做如下准备工作。开通阿里云百炼的模型服务。获取APIKey。配置APIKey到环境变量。安装SDK。1.开通阿里云百炼的模型服务使用阿里云主账号(账号需实名认证)访问阿里云百炼。如果页面右上角显示包含“立即开通”的提示,可单击“立即开通”按钮开通阿里云百炼的模型服务,新人可获得免费额度。开通阿里云百炼的模型服务后不会立即产生费用,仅在超出免费额度后产生相应费用。如果页面右上角未显示相应提示,则表示已经开通。2.获取APIKey获取APIKey的基本步骤如下。……3.配置APIKey到系统环境变量将APIKey配置到系统环境变量,可避免在代码里显式地配置APIKey,降低信息泄露风险。将APIKey配置到Windows系统环境变量的基本步骤如下。……4.安装SDK可以通过OpenAI的PythonSDK或DashScope的PythonSDK来调用阿里云百炼上的模型。OpenAI的PythonSDK的安装命令如下。DashScope的PythonSDK的安装命令如下。10.3.2调用API进行图像识别调用QVQ-Max模型API识别本地图像中的对象,示例代码如下10.3.3调用API去除图像中的文字调用通义万相模型API去除图像中的文字,示例代码如下。10.4.1实验1:调整图像颜色1.实验目的掌握机器学习中使用K均值聚类算法调整图像颜色的基本方法。2.实验内容选择一幅图像,使用K均值聚类算法调整图像颜色,k值可通过滚动条输入,如图10

温馨提示

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

评论

0/150

提交评论