CH02-计算机视觉的常用库和工具包_第1页
CH02-计算机视觉的常用库和工具包_第2页
CH02-计算机视觉的常用库和工具包_第3页
CH02-计算机视觉的常用库和工具包_第4页
CH02-计算机视觉的常用库和工具包_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

计算机视觉的常用库与工具包目录CONTENT1.OpenCV2.Mahotas3.PyTorch4.TorchVision5.OpenMMLab6.Fastai7.TensorFlow8.其他

学习目标掌握OpenCV库的基本操作与Mahotas库中的基本图像处理掌握PyTorch的基本语法和常用操作,熟悉PyTorch中的神经网络构建和优化方法。了解TorchVision库在计算机视觉任务中的应用和价值。掌握TensorFlow的基本语法和常用操作,包括张量计算等。掌握OpenMMlab提供的深度学习工具和库的使用方法。了解Fastai的基本语法和常用功能。了解PyTorchLightning的基本使用方法。知识目标1能够熟练地使用OpenCV库进行图像的读取、显示、保存等基本操作和基本图像处理技术(如色彩空间转换)。能够使用PyTorch框架构建和训练深度学习模型等。掌握TorchVision提供的数据集加载和预处理功能,能够方便地获取和处理图像数据。能够利用OpenMMlab提供的深度学习工具和库实现深度模型的搭建。技能目标2学习目标培养读者的图像处理与分析能力,使其能够使用相关的工具包和库进行项目实践。培养读者的独立思考和自主学习能力,主动探究和学习计算机视觉相关工具包和常用库使用。培养读者的迁移学习能力,鼓励读者能够自主拓展延伸学习更多有关计算机视觉领域的知识。素质目标3培备独立思考的意识、求知严谨的态度和勇于探究的精神引导读者积极主动获取、评估、鉴别和使用工具,注重技术应用的正当性和合法性,避免技术滥用带来的不利影响。思政目标4章节介绍在本章节中,我们将详细介绍OpenCV库、Mahotas库、PyTorch、TorchVision、TensorFlow、OpenMMlab、Fastai以及PyTorchLighting等8个常用的计算机视觉库,并拓展了部分其他优秀的深度学习框架供读者参考学习。希望通过本章的学习,读者能够对计算机视觉领域常用的工具和算法库有一个全面且深入的了解,后续学习能够使用这些工具去实现具体的项目。OpenCV012.1.1OpenCV简介OpenCV库是一种计算机视觉和机器学习库,由Intel在1999年开发,提供了一系列用于图像和视频处理的函数和算法。OpenCV覆盖计算机视觉的许多应用领域,被广泛应用于图像处理、人脸识别、物体识别等领域,成为计算机视觉研究的有力工具。定义和功能OpenCV库的算法功能OpenCV库提供了一系列的计算机视觉算法,包括图像处理、特征提取、物体检测等,广泛应用于图像识别、人脸识别等领域。图像的基本操作OpenCV库提供了丰富的图像基本操作功能,如图像读取、写入、显示、变换、滤波、特征提取等,方便用户进行图像处理和分析。多平台支持OpenCV库支持Windows、Mac、Linux等多种操作系统,可以实现跨平台的图像处理任务,满足不同应用场景的需求。123算法与函数库OpenCV是一个开源的计算机视觉和机器学习库,提供了丰富的图像处理和计算机视觉功能,广泛应用于图像识别、人脸识别、物体检测等领域。计算机视觉库OpenCV简介OpenCV提供了一系列的图像处理基本操作,如图像读取、显示、变换、滤波等,帮助用户快速实现图像处理任务。图像处理基本操作介绍OpenCV还支持一些高级操作,如图像加法、减法、除法、翻转、阈值处理等,可以满足不同场景下的图像处理需求。图像处理高级操作介绍应用领域人脸识别技术的应用

自动驾驶医疗领域人脸识别技术在安全监控、人脸支付等领域有着广泛的应用,通过识别人脸特征进行身份验证和支付操作,提高了安全性和便捷性。计算机视觉技术在医疗领域有着广泛应用,如医学影像分析、疾病诊断、手术导航等,为医生提供辅助决策和治疗支持。图像识别技术在自动驾驶汽车中起着关键作用,通过对道路、车辆、行人等目标的识别和跟踪,实现智能驾驶和交通管理。2.1.1OpenCV基本操作图像的读取与写入图像的显示图像通道的拆分与合并图像的保存图像的加法拓展内容1.图像的读取与写入图像读取的两种实现方式:img=cv2.imread('图像路径',0)#以灰度图形式读取图片img=cv2.imread(‘图像路径’,cv2.IMREAD_GRAYSCALE)

注:OpenCV读取图像时,返回的是一个numpy数组。其通道顺序是BGR,而不是常见的RGB(如下图,三种图像的区别)(1)RGB通常用于图像编辑和显示应用程序,顺序为红色、绿色和蓝色。(2)BGR通常用于图像处理应用程序,顺序为蓝色、绿色和红色。RGBBGRGRAY2.图像的显示图像的显示是指在OpenCV中,调用imshow()函数,将读取到计算机内存中的图片显示出来.

cv2.imshow(‘image',img)显示单张图片显示多张图片cv2.imshow('IMG_1',img)#显示单张图像

cv2.imshow('IMG_2',img2)imgs=np.hstack([img,img2])

#水平拼接图像cv2.imshow('HorizontalStack',imgs)#显示水平方向上排列的多张图像思考:那如果使用np.vstack()拼接两个图像会呈现出什么效果呢?3.图像通道的拆分与合并cv2.split()函数用于将多通道阵列分割成多个单通道阵列。用于分离图像的各个颜色通道。其语法格式为:

cv2.split(src,dst)cv2.merge()

拆分(split)

合并(merge)BGROpenCV的cv2.split函数对一张图片的RGB通道进行拆分后,得到的结果是三张灰度图。每张灰度图对应于原始彩色图像中的一个颜色通道,它们本身并不是图像的亮度信息,而是特定颜色通道的强度信息。14.图像的保存OpenCV提供了cv2.imwrite()函数,用于将处理后的图像文件保存到指定文件夹中。cv2.imwrite('filename.jpg',image),其中'filename.jpg'是保存的图像名称,image是保存的图像数据。所支持的图像格式除了.jpg外,还有.png、.bmp等,使图像保存更加灵活235.图像的加法+=图像的加法是指将两幅图像进行像素级别的叠加操作,语法格式如下:cv2.add(src1,src2,dst)对于每个像素,取两个输入图像对应像素的值和作为输出图像对应像素的值。若输入图像的深度不同,则该函数会用较深的图像的深度来处理输出图像。常用于图像融合、图像叠加、图像修复、图像标注(加水印)、图像加密等任务中6.OpenCV图像基本处理操作拓展内容基本操作函数名含义图像相减cv2.subtract()指两个图像的逐元素相减,可用于图像处理中的背景减除、图像差分等操作。图像相除cv2.divide()执行两个图像的逐元素相除,用于图像处理中图像归一化、直方图均衡化等操作,有助于改善图像视觉效果。图像相乘cv2.multiply()该函数执行两个图像的逐元素相乘操作,可用于图像处理中的图像增强、图像融合、调整图像的对比度等操作。图像翻转cv2.flip()对输入图像进行翻转操作,如:cv2.flip(img,0)中,0表示垂直翻转;若为1则表示水平翻转;为-1表示水平和垂直方向上均翻转。阈值处理cv2.threshold()对图像进行阈值操作,通常为二值化处理。如:ret,thresh=cv2.threshold(src,thresh,maxval,type)。ROI区域操作cv2.ROI()对ROI区域进行截取或填充操作。边界填充cv2.copyMakeBorder()对图像的边界进行填充操作。图像的平移图像的旋转图像的缩放图像的仿射变换2.1.2OpenCV基本变换2.1.2图像的平移基本变换是图像处理和计算机视觉任务中的构建块,它们可以单独使用或组合使用,以达到所需的图像效果或准备数据以供进一步分析。图像平移操作是指将图像的像素按照给定的偏移量在坐标进行移动,语法格式:cv2.translate(src,dx,dy,dst=None,interpolation=cv2.INTER_LINEAR,borderMode=cv2.BORDER_CONSTANT,borderValue=None)左移120个像素y轴移动80个像素例:1.图像的平移代码实现:importnumpyasnpimportcv2img=cv2.imread('F:/ch02_ImgTransform_VPPT/image/0001.jpg')#读入图片(输入图片路径)rows,cols=img.shape[:2]###在x轴上移动120,在y轴上移动80TransX=120TransY=80TransM=np.float32([[1,0,TransX],[0,1,TransY]])dst=cv2.warpAffine(img,TransM,(cols,rows))cv2.imshow('Transition',dst)cv2.imwrite('F:/ch02_ImgTransform_VPPT/trans.jpg',dst)

#存储平移后的图片(保存图片路径)cv2.waitKey(0)cv2.destroyAllWindows()2.图像的旋转

旋转操作是指对图像进行旋转变换操作,在OpenCV中可以通过调用旋转函数来实现图像的旋转操作,通过设置旋转中心、角度以及旋转系数等参数,可以对推向进行任意角度的旋转操作。通常具有以下两种实现形式:语法格式:cv2.getRotationMatrix2D(center,angle,scale)cv2.getRotationMatrix2D((num_cols,num_rows),angel,scale)

(以该函数举例如下)旋转30°旋转60°translation_matrix=np.float32([[1,0,int(0.5*num_cols)],0,1,int(0.5*num_rows)]])rotation_matrix=cv2.getRotationMatrix2D((num_cols,num_rows),30,1)rotation_matrix=cv2.getRotationMatrix2D((num_cols,num_rows),60,1)核心代码:3.图像的缩放

图像的缩放操作是指将图像的尺寸变大或变小的过程,即减少或增加源图像数据的像素个数,其语法格式:voidresize(InputArraysrc,OutputArraydst,Sizedsize,doublefx=0,doublefy=0,int

interpolation=INTER_LINEAR)

importcv2image=v2.imread('F:/ch02_ImgTransform_VPPT/image/0001.jpg')#设置缩放因子,例如缩小到原图的40%scale_percent=40#可以根据需要调整缩放比例#计算缩放后的新尺寸width=int(image.shape[1]*scale_percent/100)height=int(image.shape[0]*scale_percent/100)dim=(width,height)resized=cv2.resize(image,dim,interpolation=cv2.INTER_AREA)cv2.imshow("Originalimage",image)cv2.imshow("Resizedimage",resized)cv2.waitKey(0)cv2.destroyAllWindows()运行结果4.图像的仿射变换

图像的仿射变换操作是一种线性变换,指的是将一个二维坐标转换到另一个二维坐标,仿射变换主要用来实现图像的平移、旋转、缩放和剪切等集合变换操作,其语法格式:

dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])色彩空间转换图像边缘检测2.1.3OpenCV高级操作1.图像的色彩空间转换

图像的色彩空间转换是色彩空间转换又称颜色变换,指将图像从一种颜色空间转换到另一个颜色空间。其语法格式:

cv2.cvtColor(src,code[,dst[,alpha[,beta]]])(a)RGB图(b)BGR图1.图像的其他色彩空间转换①cv2.COLOR_BGR2RGB②cv2.COLOR_BGR2GRAY③cv2.COLOR_BGR2HSV④cv2.COLOR_BGR2HLS⑤cv2.COLOR_BGR2Lab⑥cv2.COLOR_BGR2Luv⑦cv2.COLOR_BGR2XYZ⑧cv2.COLOR_BGR2YCrCb部分基本的色彩空间转换操作①②③④⑤⑥⑦⑧2.图像的边缘检测

图像的边缘检测是计算机视觉和图像处理中的一个基本问题,其目的是在图像中检测出目标物体的边缘信息,即物体的轮廓。其基本处理过程为

12345图像获取:灰度图像;若不是则需进行转换滤波处理:减少噪声对边缘检测的干扰计算梯度值:计算每个像素值的梯度值,常用的算法有Sobel算子,Prewitt算子、Roberts算子等图像增强:将图像灰度点邻域强度值有显著变化的点凸显出来,削弱或去除边缘以外的区域图像检测:使用阈值化确定图像中真正的边缘点拓展内容:Sobel算子是一种在图像处理和计算机视觉中用于边缘检测的算法。它通过计算图像亮度函数的一阶导数的近似值来工作,这些导数对应于图像的水平和垂直变化率。Sobel算子的输出是突出图像边缘的二值图像,其中白色表示边缘可能存在的位置。Sobel算子的优缺点:①优点:计算效率高\边缘检测效果良好;②局限:可能会产生一些错误的边缘响应(如边缘附近存在高频率噪声),此时可以使用其他边缘检测算子如Canny算子。.2.图像的边缘检测使用Sobel算子实现图像的边缘检测代码实现:importcv2importnumpyasnp#读取图像image=cv2.imread('F:/ch02_ImgTransform_VPPT/image/0001.jpg',cv2.IMREAD_GRAYSCALE)#使用Sobel算子进行边缘检测sobelx=cv2.Sobel(image,cv2.CV_64F,1,0,ksize=5)#水平方向sobely=cv2.Sobel(image,cv2.CV_64F,0,1,ksize=5)#垂直方向#结合两个方向的梯度sobel_abs=cv2.addWeighted(cv2.convertScaleAbs(sobelx),0.5,cv2.convertScaleAbs(sobely),0.5,0)#输出结果cv2.imshow('SobelX',sobelx)cv2.imshow('SobelY',sobely)cv2.imshow('SobelAbsolute',sobel_abs)cv2.waitKey(0)cv2.destroyAllWindows()运行结果:原始输入运行输出2.图像的边缘检测edges=cv2.Canny(image,threshold1=100,threshold2=200)例如:Canny算子实现边缘检测Canny算子是一种著名的边缘检测算法,由JohnF.Canny在1986年提出。Canny算子旨在提供一个最优的边缘检测过程,通常包括以下实现过程:噪声降低:使用高斯滤波器对图像进行平滑,以减少图像噪声梯度计算:算法计算图像每个像素点的梯度幅度和方向。这通常使用Sobel算子或类似的一阶导数算子来完成。非极大值抑制:Canny算子在这一步将分析梯度方向,并在沿边缘方向上抑制所有非极大值点。边缘线上的像素点会保留较高的梯度值,而边缘线上下文的像素点的梯度值会降低或抑制。滞后阈值:最后,Canny算子使用两个阈值(高阈值和低阈值)来确定和连接边缘。

①如果一个像素点的梯度值超过高阈值,则该点被确定为强边缘。

②如果梯度值在两个阈值之间,则该点被视为边缘的候选。

③仅当边缘候选点连接到一个强边缘点时才被保留为有效边缘。Homepage:

Q&Aforum:

/Documentation:Sourcecode:

/opencvdownload:/projects/opencvlibrary/files/中文文档://search/?q=opencv-pythonpipinstallopencv-pythonpipinstallopencv-contrib-pythonpipinstall*.whl(已下载的包文件)拓展:OpenCV相关工具包相关工具包Mahotas022.2

Mahotas概述

Mahotas库提供了一系列用于图像处理的函数,包括滤波、形态学操作、特征计算等。这些函数可以作用于图像的不同部分,如像素、区域或边缘等,以实现各种图像处理任务。图像处理功能

Mahotas库包含了一些用于计算机视觉的函数,如兴趣点检测、局部描述符计算等。这些函数可以识别图像中的特征点、边缘等信息,以便进行图像分析和识别。计算机视觉功能

Mahotas库还提供了一些用于数据分析的函数,如直方图计算、统计分析等。这些函数可以分析图像或数据的分布情况,以便进行数据可视化和分析。数据分析2.2

Mahotas的特点

Mahotas库使用C++实现,以提高Numpy数组中的操作速度。这使得Mahotas库在图像处理方面具有很高的效率。

Mahotas库具有清晰、高效的Python接口,这使得用户可以使用Python语言方便地调用Mahotas库中的函数。灵活性

Mahotas库中的每个公共函数都有完整文档字符串,这可以帮助用户理解和正确使用Mahotas库中的函数。数据分析高效性2.2

Mahotas的安装步骤step1:前提条件Python环境与pip包管理器已经安装完成。step2:安装命令使用pip安装Mahotas库,命令为“pipinstallmahotas”。step3:默认安装在Python环境中与逆行‘importmahotasasmh’,若没有出现任何报错指令,则安装成功。2.2.1

Mohatas的基本操作读取图像显示图像保存图像使用“mh.imread()’函数读取图像文件如:’image=mh.imread(‘file.png’)使用“imshow()’函数显示图像文件如:’imshow(‘image’)使用“mh.imsave()’函数保存图像如:’mh.imsave(‘copy.png’,image)2.2.2

Mahotas的图像处理功能

Mahotas支持RGB转灰度、RGB转LAB、RGB转XYZ等色彩空间变换,通过调用mh.rgb2gray(

)、mh.rgb2lab(

)和mh.rgb2xyz(

)等函数实现。

色彩空间变换

Mahotas支持硬阈值、软阈值、自适应阈值等阈值化操作,通过调用mh.threshold(

)、mh.soft_threshold(

)和mh.adaptive_threshold(

)等函数实现。

阈值化处理

Mahotas支持膨胀、腐蚀、开运算、闭运算等形态学操作,通过调用mh.dilate(

)、mh.erode(

)、mh.opening(

)和mh.closing()等函数实现。

形态学操作2.2.2

色彩空间变换RGB转换LAB线性转换色彩校正

线性转换是将RGB色彩空间转换为LAB色彩空间的一种简单方法。这种转换方法只需将RGB图像中的每个像素点的红色、绿色和蓝色通道分别乘以不同的权重系数,然后求和即可。

在RGB转LAB的过程中,有时需要进行色彩校正。色彩校正可以改变图像的颜色平衡和色彩深度,使图像更符合特定的需求。2.2.3

Mahotas

知识拓展

为了能够给用户提供稳定、易用且高效的图像处理工具,Mahotas公布了几个重要的原则:

能用即可(Justwork)。首要原则,即代码能够正常运行,不应出现错误,接口设计灵活且具有良好的容错性。文档良构(Welldocumented)。强调文档的重要性,Mahotas确保每一个公共函数都有完整文档字符串。

快速代码(Fastcode)和简单代码(Samplecode)。Mahotas重视代码的高效性,即代码的运行应该在不牺牲同样性的情况下尽可能的快速而无误。代码应当简洁易理解。最小依赖关系(

(Minimaldependencies)。MahotMahotas不需要强制安装imread或FreeImag库.。Pytorch032.3.1

PyTorch简介PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。01PyTorch

特点PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架,具有动态图机制、易于调试、自动微分功能和多平台支持等特点和优势。02PyTorch

的灵活性PyTorch使用动态图机制,可以在实际运行前不定义整个计算图,通过Python控制流定义计算图,具有灵活性,在研究和原型设计方面很受欢迎。03PyTorch

的调试工具PyTorch提供了一些工具,如pdb,使得用户可以方便地进行代码调试和错误排查,还具有自动微分功能,可以方便地计算梯度。2.3.1

PyTorch简介04PyTorch

平台支持PyTorch支持多种平台,包括CPU、GPU和TPU等,使得它可以在各种设备上运行,并且可以根据需要进行优化。05PyTorch的主要模块

PyTorch的主要模块包括torch.Tensor、torch.sparse、torch.nn、torch.cuda、torch.optim和torch.autograd等。2.3.2

PyTorch的基本操作——张量操作定义:张量(Tensor)是PyTorch中最基本的数据结构,可以视为多维数组或者矩阵。张量的创建包括未初始化、随机初始化、零矩阵和—矩阵等操作。张量的数据类型可以通过指定dtype参数来设置,如torch.long或torch.float等。张量运算的结果是一个新的张量,其元素值是对应位置上两个张量元素值的结果。2.3.2

PyTorch的基本操作——GPU的使用GPU的优势切换计算的API检查GPU的可用性移动张量到GPU模型与数据的移动在深度学习训练中,GPU具有并行计算能力,在大规模矩阵运算上比CPU更具优势。PyTorch提供了简单易用的APl,使用.to()方法或直接在创建张量时指定设备,可以让使用者容易地在CPU和GPU之间切换计算。通过torch.cuda.isavailable()函数,我们可以检查系统中是否存在可用的GPU。如果存在可用的GPU,可以使用.to()方法将张量移动到GPU上,或者是在创建张量时就直接指定其设备为GPU.在进行模型训练时,通常会将模型和数据都移动到GPU上,以确保能够充分利用GPU的并行计算能力。2.3.2

PyTorch的基本操作——自动求导

梯度下降算法深度学习中,梯度下降算法是重要的优化算法,需计算梯度。PyTorch提供自动求导机制,能自动计算梯度,简化计算过程

自动求导机制

追踪操作通过设置tensor.requires_grad=True,可追踪tensor上的所有操作。

反向传播用.backward()方法进行反向传播,PyTorch将自动计算并存储梯度。

访问梯度通过.grad属性可访问计算得到的梯度,进行进一步操作或分析。2.3.3

PyTorch的实例构建神经网络:torch.nn库用于构建神经网络的工具库,torch.nn定义了一系列模块包括卷积层、线性层(全连接层)和一系列损失函数;

数据加载和处理:提供torch.utils.data.DataLoader帮助使用者进行数据的加载和处理;

(1)DataLoader:并行加载数据;

(2)自定义数据集:自定义数据集需要继承Dataset类,并实现__len__和__getitem__两个方法;模型的保存和加载:PyTorch提供了简单的API来保存(torch.save)和加载(torch.load)模型;PytorchLightning042.4

PyTorchLightningPyTorchLighting(简称PL)是一个基于PyTorch构建的轻量级深度学习库,旨在简化和加速深度学习模型的构建过程。以下PL的常用功能模块:API类型功能核心APILightningModule为构建、训练和验证神经网络提供了简易框架Trainer管理和调度模型的训练、验证、测试和部署可选APIAccelerators管理和优化模型训练过程中的硬件加速Callbacks允许在训练过程中的不同阶段插入自定义的逻辑Cli提供交互界面的命令行工具和功能Core提供训练循环、设备支持、优化器封装等关键功能Loggers用于记录和可视化训练过程中的日志和指标Profiler用于性能分析,收集性能数据、生成报告和提供优化建议Strategies提供多种策略来支持复杂网络训练,如分布式训练Tuner提供最佳超参数组合Utilitier提供简化和增强模型训练过程的工具和功能,如回调函数Torchvision052.5

Torchvision

概述torchvision.datasets模块提供了多种公共数据集;torchvision.transforms是torchvision中用来进行图像变换(transform)的模块,如裁剪(transforms.CenterCrop(size))、缩放(transforms.Resize(size))/transforms.Scale(size)、翻转(transforms.RandomHorizontalFlip)等;Torchvision提供的models模块包括了很多常用模型,如AlexNet、VisionTransformer、VGG等;torchvision.utils通常包括make_grid函数、save_image函数、draw_bounding_boxes函数与draw_segmentation_masks函数;2.5.2torchvision.transformers1.图片的加载:使用PIL加载原始图片。fromPILimportImage#一个python图片库fromtorchvisionimporttransformsimportmatplotlib.pyplotaspltimg=Image.open(r'D:\assets\cat.jpg')print(img.size)plt.imshow(img)2.5.2torchvision.transformers2.图片的缩放(1)transforms.Resize(size)函数:对载入的图片数据按照输入的数据进行缩放;(2)transforms.Scale(size)函数:transforms.Scale(size)只能输入整形数据size;(a)原始图片

(b)Resize缩放图

(c)Scale缩放图2.5.2torchvision.transformers3.图片的裁切(1)transforms.CenterCrop(size)函数:以输入图的中心点为参考点,按需要的大小进行裁剪;(2)transforms.RandomCrop(size)函数:对载入的图片按需要的大小进行随机裁剪;(3)transforms.RandomResizedCrop(size,scale)函数:先将给定图像随机裁剪为不同的大小和宽高比,

然后缩放所裁剪得到的图像为size的大小。(a)原始图片;

(b)CenterCrop图;

(c)RandomCrop图;(d)RandomResizedCrop图2.5.2torchvision.transformers4.图片的翻转(1)transforms.RandomHorizontalFlip函数:对载入的图片按随机概率进行水平翻转;(2)transforms.RandomVerticalFlip函数:对载入的图片按随机概率进行垂直翻转;(3)transforms.RandomRotation函数:随机旋转一定角度,函数有三个参数:degree、resample与center。(a)原始图片;

(b)RandomHorizontalFlip图;

(c)RandomVerticalFlipp图;(d)RandomRotation图2.5.2torchvision.transformers5.图片的组合变换:同时对多种数据变换进行组合,使用函数transforms.Compose

(a)原始图片

(b)组合变换

#图片组合变换transformer=transforms.Compose([transforms.Resize(256),transforms.transforms.RandomResizedCrop((224),scale=(0.5,1.0)),transforms.RandomHorizontalFlip()])img_transformer=transformer(img)print(img_transformer.size)plt.imshow(img_transformer)所使用的相关图像处理函数:transforms.Resize()、transforms.transforms.RandomResizedCrop()、transforms.RandomHorizortalFlip(),前两者组合及逆行图像变换。OpenMMLab062.6OpenMMLab概述OpenMMLab是由MMLab(香港中文大学多媒体实验室)和商汤科技联合开发的一个计算机视觉开源平台,旨在为计算机视觉领域建立统一的开源算法框架和复现算法生态,具有以下特点:

算法库支持模块化

设计特有特点OpenlMMLab算法库提供多种计算机视觉任务所需的算法,如图像分类、目标检测等,覆盖范围广。算法库采用模块化设计,开发者可便捷地调用不同模块,构建满足需求的网络构架。相较于其他算法框架,openMMLab算法库具有使用方便、代码开箱即用等优点,可降低复现难度。2.6OpenMMLab常用算法库OpenMMLab提供了各种算法库以支持计算机视觉任务

MMCV支持其他库的开发

MMDetection实现目标检测算法MMSegmentation语义/实例分割

MMAction视频动作理解和识别

MMPose集成多种2D/3D姿态估

计模型

MMDetection3D提供单目/点云/多模态3D目标检测等算法MMClassification

图像分类

MMAction2专注于行为识别任务

MMEditing图像和视频处理功能2.6.1OpenMMLabComputerVision

MMCV(OpenMMLabComputerVision)是一个基于PyTorch的开源计算机视觉库,是其他算法库(如MMYOLO)的基础支持库,旨在为检测和分割等计算机视觉任务的研究和开发提供高效、灵活的工具和组件,帮助开发者快速构建、训练和部署计算机视觉模型。

图像处理视频处理①读取(mmcv.imread)/写入(mmcv.imwrite)/显示(mmcv.imshow)②色彩空间转换(如:mmcv.bgr2rgb、mmcv.rgb2gray)③几何变换(如改变大小(mmcv.imresize)、旋转(mmcv.imrotate)、翻转(mmcv.imflip)、裁剪(mmcv.imcrop)和填充(mmcv.impad))①读取(mmcv.VideoReader)②编辑(提取(mmcv.cut_video)/合并(mmcv.concat_video)/更改尺寸(mmcv.resize_video)③光流读取/写入/扭曲2.6.2OpenMMLabDetection

MMDetection(OpenMMLabDetection)是一个基于PyTorch的目标检测算法库,旨在帮助开发者进行目标检测任务的研究和开发。MMDetection由apis、structures、datasets、models、engine、evaluation和visualization等7个主要部分组成。

apis提供高级API,用于模型开发,简化模型开发过程,提高开发效率。structures提供目标检测模型的基础组件和结构,如bbox和DetDatasample。datasets提供数据集处理和加载功能,用于目标检测任务,简化数据处理流程。models提供检测器不同组件的实现,如各种检测模型、骨干网络等,用于模型训练和推理。engine提供训练和测试模型的引擎功能,如用于调整优化超参数的调度程序。evaluation提供目标检测模型的性能评估功能,如评估指标,用于模型性能测试visualization用于可视化检测结果、便于观察和调试模型2.6.3OpenMMLabSemanticSegmenation

MMSegmentation(OpenMMLabSegmentation)是一个基于PyTorch的语义分割算法库,旨在帮助开发者进行语义分割任务的研究和开发。MMSegmentation同样由apis、structures、datasets、models、engine、evaluation和visualization等七个主要部分组成。与MMDetection不同之处在于其models中包含的是与分割相关的分割模型和分割头,而不包含检测模型和检测头。

应用领域:自动驾驶、图像/视频分割、医学影像诊断、遥感图像分析以及地图绘制等Fastai072.7Fastai常用功能模块模块名称功能Fastai.core提供了基础功能和组件Fastai.torch_core对PyTorch核心功能的封装和扩展Fastai.layers提供了自定义层(如卷积、池化层)和辅助函数Fastai.data_block简化数据加载过程Fastai.basic_data提供数据加载和处理工具Fastai.datasets提供多种数据集下载方式(如GoogleDrive下载)Fastai.collab用于构建协同过滤(如京东、淘宝推荐)Fastai.tabular用于数据结构化操作(如数据清洗、模型训练)Fastai.text文本处理和建模(如文本增强)Fastai.vision图像处理和建模

Fastai是由JeremyHoward和RachelThomas于2016年创立的基于PyTorch的深度学习库,提供了一个开箱即用的学习库,该学习库包含一系列高级封装的工具和预训练模型。举例——Fastai构建小型模型fromfastai.layersimportSequentialEx,LinBnDrop,Flatten#导入函数fromfastai.torch_coreimportnn#定义模型model=SequentialEx(Flatten())#将输入数据展平#第一个全连接层,输入特征784,输出特征128,Dropout比例,激活函数

ReLULinBnDrop(784,128,p=0.2,act=nn.ReLU())LinBnDrop(128,10,p=0.1)#第二个全连接层print(model)#查看模型结构构建结果如下:Tensorflow08其他优秀的深度学习框架09Caffe和Caffe2Caffe(ConvolutionalArchitectureforFastFeatureEmbedding)是一个兼具表达性、速度和思维模块化的深度学习框架:Caffe支持CNN、RCNN、LS

温馨提示

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

评论

0/150

提交评论