使用 PyTorch 的计算机视觉简介 (1/6)

一、说明

Computer Vision(CV)是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗,到更复杂的任务,例如用自然语言描述图像。

二、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',download=True,train=True,transform=ToTensor())
data_test = torchvision.datasets.MNIST('./data',download=True,train=False,transform=ToTensor())

五、可视化数据集

现在我们已经下载了数据集,我们可以可视化数字。

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笔记本

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ高性能核心原理与源码架构剖析

文章目录 1、源码环境搭建1.1、主要功能模块1.2、源码启动服务1.2.1、 启动nameServer1.2.2、 启动Broker1.2.3、 发送消息1.2.4、 消费消息 2、源码剖析2.1、NameServer的启动过程2.2、Broker服务启动过程2.3、Netty服务注册框架2.3.1、关注重点2.3.2、源码重点 1、源码环境搭…

AJAX学习

文章目录 创建 XMLHttpRequest 对象向服务器发送请求XMLHttpRequest.open()XMLHttpRequest.send()GET或POST 服务器响应XMLHttpRequest 的属性XMLHttpRequest.readyStateXMLHttpRequest.onreadystatechangeXMLHttpRequest.responseXMLHttpRequest.responseTypeXMLHttpRequest.r…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot

聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中,你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先,我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

vue3——pixi初学,编写一个简单的小游戏,复制粘贴可用学习

pixi官网 小游戏效果 两个文件夹 一个index.html 一个data.js //data.js import { reactive } from "vue"; import { Sprite, utils, Rectangle, Application, Text, Graphics } from "pixi.js";//首先 先创建一个舞台 export const app new Applicat…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本:QT Creator 10.0.2 (community),MingW 6.4.3 (QT6),MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据…

[极客大挑战 2019]RCE ME 取反绕过正则匹配 绕过disable_function设置

目录 取反 1.蚁剑插件绕过 2.baypass disable_function open_dir/disable_function putenv()/LD_PRELOAD 来绕过限制 利用条件 利用思路 有意思。。。。 <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("Th…

windbg -I之后如何恢复原有的

直接运行了一下windbg -I&#xff0c;抓取了注册表行为&#xff0c;然后这里记录一下&#xff0c;方便翻阅。 抓取到的windbg的注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger 将值改为 "C:\WINDOWS\system32\vsji…

git 本地工作区和仓库区基本使用

(1)git 本地有三个区 工作区和暂存区和 git管理的仓库. &#xff08;自行动手实践理解,然后就入门了&#xff09;(2)本地初次使用git做的事情,需要做如下工作 git config --global user.name "xx" git config --global user.email xxxqq.com git config --globa…

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

编写第一个Go程序

编写第一个Go程序 1. 开发环境构建 在Go语言中&#xff0c;开发环境的构建需要设置GOPATH环境变量。在1.8版本之前&#xff0c;必须显式设置GOPATH环境变量。而在1.8版本及之后&#xff0c;如果没有设置GOPATH&#xff0c;Go将使用默认值。 在Unix系统上&#xff0c;默认值为…

基于YOLOv8模型的条形码二维码检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的条形码二维码检测系统可用于日常生活中检测与定位条形码与二维码目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测…

Android12之仿Codec2.0实现传递编解码器组件本质(四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

多策略改进蜣螂优化--螺旋搜索+最优值引导+反向学习策略

声明&#xff1a;对于作者的原创代码&#xff0c;禁止转售倒卖&#xff0c;违者必究&#xff01; 关于蜣螂算法的原理网上有很多&#xff0c;本文就不再详细介绍&#xff0c;本期算法是作者在参考了网上一些文献后自行改进的&#xff0c;接下来直接上改进策略&#xff1a; ①螺…

十六)Stable Diffusion教程:出图流程化

今天说一个流程化出图的案例&#xff0c;适用很多方面。 1、得到线稿&#xff0c;自己画或者图生图加线稿lora出线稿&#xff1b;如果想sd出图调整参数不那么频繁细致&#xff0c;则线稿的素描关系、层次、精深要表现出来&#xff0c;表现清楚。 2、文生图&#xff0c;seed随机…

前后端分离毕设项目之springboot同城上门喂遛宠物系统(内含文档+源码+教程)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Quartz 建表语句SQL文件

SQL文件在jar里面&#xff0c;github下载 https://github.com/quartz-scheduler/quartz/releases/tag/v2.3.2 解压&#xff0c;sql文件路径&#xff1a;quartz-core\src\main\resources\org\quartz\impl\jdbcjobstore tables_mysql_innodb.sql # # In your Quartz propertie…

七天学会C语言-第七天(结构体)

1.定义结构体 例 1&#xff1a;把一个学生的信息(包括学号、姓名、性别、住址等 4 项信息) 放在一个结构体变量中&#xff0c;然后输出这个学生的信息。 #include <stdio.h>struct Student {int student_id;char name[30];char gender;char address[60]; };int main() …

Flink的部署模式:Local模式、Standalone模式、Flink On Yarn模式

Flink常见的部署模式 Flink部署、执行模式Flink的部署模式Flink的执行模式 Local本地模式下载安装启动、停止Flink提交测试任务停止作业 Standalone独立模式会话模式单作业模式应用模式 YARN运行模式会话模式启动Hadoop集群申请一个YARN会话查看Yarn、Flink提交作业查看、测试作…

SQL模板-用户留存率计算

在这段实习中&#xff0c;我遇到了用户留存率计算的需求&#xff0c;这里做个总结。 首先来讲下&#xff0c;什么是用户留存&#xff1f; 在互联网行业中&#xff0c;用户在某段时间内开始使用应用&#xff0c;经过一段时间后&#xff0c;仍然继续使用该应用的用户。用户留存一…