旅游网站开发的目的和意义,html网页代码详解,网站访问量查询工具,网站建设 说明一、说明 Computer Vision#xff08;CV#xff09;是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗#xff0c;到更复杂的任务#xff0c;例如用自然语言描述图像。 二、CV常见的问… 一、说明 Computer VisionCV是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗到更复杂的任务例如用自然语言描述图像。 二、CV常见的问题 计算机视觉最常见的问题包括
图像分类是最简单的任务当我们需要将图像分类为许多预定义类别之一时例如区分照片上的猫和狗或识别手写数字。目标检测是一项比较困难的任务我们需要在图片上找到已知对象并对其进行定位即返回每个识别对象的边界框。分割类似于对象检测但我们需要返回一个精确的像素图概述每个识别的对象而不是给出边界框。 我们将专注于图像分类任务以及如何使用神经网络来解决它。与任何其他机器学习任务一样要训练用于对图像进行分类的模型我们需要一个标记的数据集即每个类的大量图像。
三、图像作为张量 计算机视觉适用于图像。您可能知道图像由像素组成因此可以将它们视为像素的矩形集合。 在本单元的第一部分中我们将处理手写数字识别。我们将使用 MNIST 数据集该数据集由手写数字的灰度图像组成28x28 像素。每个图像都可以表示为 28x28 数组该数组的元素将表示相应像素的强度 - 在 0 到 1 范围内在这种情况下使用浮点数或者 0 到 255整数。一个名为numpy的流行python库通常用于计算机视觉任务因为它允许有效地操作多维数组。 为了处理彩色图像我们需要一些方法来表示颜色。在大多数情况下我们用 3 个强度值表示每个像素对应于红色 R、绿色 G 和蓝色 B 分量。这种颜色编码称为RGB因此大小为W×H的彩色图像将表示为大小为3 × H × W的数组。 使用多维数组来表示图像也有一个优势因为我们可以使用额外的维度来存储图像序列。 例如为了表示由 200 帧组成的视频片段维度为 800 × 600我们可以使用大小为 200 × 3 × 600 × 800 的张量。 多维数组也称为张量。通常当我们谈论一些神经网络框架时我们指的是张量例如 PyTorch。PyTorch 和 numpy 数组中的张量之间的主要区别在于张量支持 GPU 上的并行操作如果可用。此外PyTorch 在张量上操作时提供了额外的功能例如自动微分。
四、导入包并加载 MNIST 数据集
!pip install -r https://raw.githubusercontent.com/MicrosoftDocs/pytorchfundamentals/main/computer-vision-pytorch/requirements.txt
#Import the packages needed.
import torch
import torchvision
import matplotlib.pyplot as plt
import numpy as np PyTorch有许多直接从库中可用的数据集。在这里我们使用众所周知的手写数字MNIST数据集可通过PyTorch中的torchvison.datasets.MNIST获得。数据集对象以 Python 想象库 PIL 图像的形式返回数据我们通过传递 transform ToTensor 参数将其转换为张量。 使用自己的笔记本时您还可以尝试其他内置数据集特别是FashionMNIST数据集。
from torchvision.transforms import ToTensordata_train torchvision.datasets.MNIST(./data,downloadTrue,trainTrue,transformToTensor())
data_test torchvision.datasets.MNIST(./data,downloadTrue,trainFalse,transformToTensor())
五、可视化数据集
现在我们已经下载了数据集我们可以可视化数字。
fig,ax plt.subplots(1,7)
for i in range(7):ax[i].imshow(data_train[i][0].view(28,28))ax[i].set_title(data_train[i][1])ax[i].axis(off) 六、数据集结构 我们总共有 6000 张训练图像和 1000 张测试图像。拆分数据以进行训练和测试非常重要。我们还想做一些数据探索以更好地了解我们的数据是什么样子的。
每个样本都是以下结构的元组
第一个元素是一个数字的实际图像由形状为 1 × 28 × 28 的张量表示第二个元素是一个标签用于指定张量表示哪个数字。它是一个张量包含从 0 到 9 的数字
data_train是一个训练数据集我们将使用它来训练我们的模型。data_test是一个较小的测试数据集我们可以用来验证我们的模型。
print(Training samples:,len(data_train))
print(Test samples:,len(data_test))print(Tensor size:,data_train[0][0].size())
print(First 10 digits are:, [data_train[i][1] for i in range(10)])
Training samples: 60000
Test samples: 10000
Tensor size: torch.Size([1, 28, 28])
First 10 digits are: [5, 0, 4, 1, 9, 2, 1, 3, 1, 4]
图像的所有像素强度都由介于 0 和 1 之间的浮点值表示
print(Min intensity value: ,data_train[0][0].min().item())
print(Max intensity value: ,data_train[0][0].max().item())
Min intensity value: 0.0
Max intensity value: 1.0
祝你学习愉快V笔记本