使用 PyTorch 的计算机视觉简介 (1/6)
一、说明
二、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笔记本
相关文章:

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

用PHP实现极验验证功能
极验验证是一种防机器人的验证机制,可以通过图像识别等方式来判断用户是否为真实用户。在实现极验验证功能时,您需要进行以下步骤: 1 注册极验账号: 首先,您需要在极验官网注册账号并创建一个应用,获取相应…...

【数据结构初阶】三、 线性表里的链表(无头+单向+非循环链表)
相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】二、 线性表里的顺序表_高高的胖子的博客-CSDN博客 引言 通过上期对顺序表的介绍和使用 我们可以知道顺序表有以下优点和缺点: 顺序表优点 尾插 和 尾…...

Mybatis 映射器与XML配置职责分离
之前我们介绍了使用XML配置方式完成对数据的增删改查操作,使用此方式在实际调用时需要使用【命名空间.标签编号】的方式执行,此方式在编写SQL语句时很方便,而在执行SQL语句环节就显得不太优雅;另外我们也介绍了使用映射器完成对数…...
微服务引擎
微服务引擎,MSE_微服务引擎 MSE-阿里云帮助中心 一、什么是微服务引擎MSE 微服务引擎MSE(Microservices Engine)是一个面向业界主流开源微服务生态的一站式微服务平台,提供注册配置中心(原生支持Nacos/ZooKeeper/Eur…...

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(三)
允许一切发生,生活不过是见招拆招。 思维导图 一、循环-for 1.1 for 循环-基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEe…...
搭建部署属于自己的基于gpt3.5的大语言模型(基于flask+html+css+js+mysql实现)
一、简介 本项目是一个基于GPT-3.5模型的聊天机器人网站,旨在为用户提供一个简便、直接的方式来体验和利用GPT-3.5模型的强大功能。项目以Flask为基础,构建了一个完整的Web应用程序,其中包含了多个前端页面和后端API接口,能够处理…...

AI创作专家,免费的AI创作专家工具
AI创作专家是一种崭新的工具,它们利用先进的人工智能技术,帮助创作者和写手更轻松地应对创作挑战。这些工具不仅可以生成文字,还可以提供灵感、帮助构思和组织思路,使创作过程更加高效。 147GPT批量文章生成工具www.147seo.com/…...

Nginx之gzip模块解读
目录 gzip基本介绍 gzip工作原理 Nginx中的gzip 不建议开启Nginx中的gzip场景 gzip基本介绍 gzip是GNUzip的缩写,最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术,web服务器和客户端(浏览器&…...

微软在Windows 11推出Copilot,将DALL-E 3集成在Bing!
美东时间9月21日,微软在美国纽约曼哈顿举办产品发布会,生成式AI成为重要主题之一。 微软表示,Copilot将于9月26日在Windows 11中推出;Microsoft 365 Copilot 将于11 月1日向企业客户全面推出;将OpenAI最新的文本生成图…...

SLAM从入门到精通(消息传递)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们只是编写了一个publisher节点,以及一个subscribe节点。有了这两个节点,它们之间就可以通信了。在实际生产中&#…...

思科路由器:NAT的基础配置
一直以来,对于华为、H3C、锐捷交换机的命令配置,不断的有朋友留言,三家交换机的配置命令容易弄混,经常在实际项目配置中出错,因此,找几个基础的示例来练练。 R1配置 Router>en Router>enable Rout…...
动态代理。
无侵入式的给代码增加额外的功能 代理的作用:对象如果干的事情太繁琐,就可以通过代理来转移部分职责;也就是相当于把对象的的方法拆开一些步骤分给代理做,对象做关键的就行了;并且代理做的这些繁琐的事情的名字也要和…...

Learn Prompt-GPT-4:能力
GPT-4能力大赏 常识知识推理 一个猎人向南走了一英里,向东走了一英里,向北走了一英里,最后回到了起点。他看到了一只熊,于是开枪打了它。这只熊是什么颜色的? 答案是白色,因为这种情况只可能发生在北…...

iOS——ViewController的生命周期
ViewController ViewController的生命周期是指在应用程序运行过程中,ViewController实例从创建到销毁的整个过程。在这个过程中,ViewController会经历一系列的生命周期方法,这些方法可以帮助开发者管理ViewController及其相关的视图和逻辑。…...
SkyWalking内置参数与方法
参数 全局指标 指标指标名称all_p99所有服务响应时间的 p99 值all_p95所有服务响应时间的 p95 值all_p90所有服务响应时间的 p90 值all_p75所有服务响应时间的 p75 值all_p70所有服务响应时间的 p70 值all_heatmap所有服务响应时间的热点图 服务指标 指标指标名称service_r…...

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】
文章目录 12.虚函数与多态举例:委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例:委托 继承【观察者模式】 13.委托相关设计 问题…...
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(五)
1、下面提供给前端待办提醒消息的接口SysNoticeController,增加如下: /*** 补充用户数据,并返回系统消息* return*/Log(title "系统消息")GetMapping("/listByUser")public R<Map<String, Object>> listByU…...
hive数据初始化
mysql版本:3.1.3 hive版本: 8.0.31 hive连接配置 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node88:3306/hive?createDatabaseIfNotExisttrue</value> </pr…...

React+Node——next.js 构建前后端项目
一、安装全局依赖 npm i -g create-next-app二、创建next项目 create-next-app react-next-demo //或 create-next-app react-next-demo --typescript三、加载mysql依赖 npm i -S mysql2四、运行项目 npm run dev五、创建db文件目录,目录下创建index.ts import…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...