动手学深度学习(Pytorch版)代码实践 -计算机视觉-41目标检测数据集

41目标检测数据集

import os
import pandas as pd
import torch
import torchvision
import matplotlib.pylab as plt
from d2l import torch as d2l# 数据集下载链接
# http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip# 读取数据集
#@save
def read_data_bananas(is_train=True):"""读取香蕉检测数据集中的图像和标签"""data_dir = '../data/banana-detection/'csv_fname = os.path.join(data_dir, 'bananas_train' if is_trainelse 'bananas_val', 'label.csv')csv_data = pd.read_csv(csv_fname)# 将 img_name 列设置为索引,以便后续操作中根据图片名称索引标签。csv_data = csv_data.set_index('img_name')images, targets = [], [] # images 用于存储图像,targets 用于存储标签。for img_name, target in csv_data.iterrows():images.append(torchvision.io.read_image(os.path.join(data_dir, 'bananas_train' if is_train else'bananas_val', 'images', f'{img_name}')))# 这里的target包含(类别,左上角x,左上角y,右下角x,右下角y),# 其中所有图像都具有相同的香蕉类(索引为0)targets.append(list(target))# 将 targets 列表转换为 PyTorch 张量,并增加一个维度(通过 unsqueeze(1))。# 对标签进行归一化处理(除以 256)。return images, torch.tensor(targets).unsqueeze(1) / 256 # 增加维度以匹配其他张量的形状# 图像的小批量的形状为(批量大小、通道数、高度、宽度)# 标签的小批量的形状为(批量大小,m,5),其中m是数据集的任何图像中边界框可能出现的最大数量。#@save
class BananasDataset(torch.utils.data.Dataset):"""一个用于加载香蕉检测数据集的自定义数据集"""def __init__(self, is_train):self.features, self.labels = read_data_bananas(is_train)print('read ' + str(len(self.features)) + (f' training examples' ifis_train else f' validation examples'))def __getitem__(self, idx):return (self.features[idx].float(), self.labels[idx])def __len__(self):return len(self.features)#@save
def load_data_bananas(batch_size):"""加载香蕉检测数据集"""train_iter = torch.utils.data.DataLoader(BananasDataset(is_train=True),batch_size, shuffle=True)val_iter = torch.utils.data.DataLoader(BananasDataset(is_train=False),batch_size)return train_iter, val_iterbatch_size, edge_size = 32, 256
train_iter, _ = load_data_bananas(batch_size)
batch = next(iter(train_iter))# print(batch[0].shape, batch[1].shape)
# torch.Size([32, 3, 256, 256]) torch.Size([32, 1, 5])# 效果演示
imgs = (batch[0][0:10].permute(0, 2, 3, 1)) / 255
# batch[0] 是包含图像数据的张量,形状为 (batch_size, channels, height, width)
# batch[0][0:10] 选择前 10 个图像。
# .permute(0, 2, 3, 1) 将张量的维度重新排列变为 (batch_size, height, width, channels)
# / 255 将像素值归一化到 [0, 1] 之间
# 图像的像素值通常在0到255之间。如果不进行归一化,像素值直接使用原始范围。
# 图像库在显示图像时,需要将像素值映射到一个合理的范围内。
# 在0到1范围内时,显示库可以更好地处理和展示这些图像。axes = d2l.show_images(imgs, 2, 5, scale=2)
# d2l.show_images 是一个用于显示多张图像的函数。
# imgs 是预处理后的图像张量。
# 2, 5 指定了图像将被显示为 2 行 5 列的网格。
# scale=2 指定了图像的缩放比例。# batch[1]是包含图像标签的张量torch.Size([32, 1, 5])
for ax, label in zip(axes, batch[1][0:10]): d2l.show_bboxes(ax, [label[0][1:5] * edge_size], colors=['w'])# d2l.show_bboxes 是一个用于在图像上绘制边界框的函数。# ax 是当前图像的坐标轴。# label[0][1:5] 提取标签中的边界框坐标(标签格式为 [class, x_min, y_min, x_max, y_max])。# * edge_size 将边界框坐标缩放到图像的实际尺寸。# colors=['w'] 指定边界框的颜色为白色。
plt.show()

运行结果:

在这里插入图片描述

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

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

相关文章

6.28U-Net深度学习基准模型特点与应用

U-Net深度学习基准模型特点与应用 U-Net是一种在深度学习领域广泛应用于图像分割任务的卷积神经网络(CNN)模型,最初由Olaf Ronneberger、Philipp Fischer和Thomas Brox在2015年的论文《U-Net: Convolutional Networks for Biomedical Image …

右键新建没有TXT文本文档的解决办法

电脑右键新建,发现没有txt了,我查网上办法都有点复杂,诸如注册表的,但是其实很简单,重启windows资源管理器就可以了。 点击重新启动,之后新建就有txt文档了。

C++20中的Feature Test Mocros

C20定义了一组预处理器宏,用于测试各种语言和库的feature。 Feature Test Mocros(特性测试宏)是C20中引入的一种强大机制,用于应对兼容性问题。Feature Test Mocros作为预处理器指令(preprocessor directives)出现,它使你能够在编译过程中仔细…

区块链的优势与挑战:为什么区块链如此重要?

区块链听起来像是一种高科技的魔法,很多人都想知道它到底是怎么回事,为什么会引起如此大的关注。今天,我们就来揭开区块链的神秘面纱,看看它的优势和挑战,顺便聊聊为什么它会变得如此重要。 优势篇 1. 去中心化&…

流水线作业模拟程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 流水线作业模拟 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int Count 0;private bool IsStop false;private void uiLight1_Click(object sender, EventArgs e…

[MYSQL] MYSQL库的操作

前言 本文主要介绍MYSQL里 库 的操作 请注意 : 在MYSQL中,命令行是不区分大小写的 1.创建库 create database [if not exists] database_name [charsetutf8 collateutf8_general_ci] ...] create database 是命名语法,不可省略[if not exists] 如果不存在创建,如果存在跳过…

GESP 四级急救包(2):客观题真题集

客观题真题集 一、选择题1. 真题梳理2. 真题答案3. 重难点点播(1) 指针和地址(2) 时间复杂度 二、判断题1. 真题梳理2. 真题答案 一、选择题 1. 真题梳理 若函数声明为 void f(int &a, int b, const int &c),且在主函数内已经声明了 x , y , z x,y,z x,y,…

最新Node.js安装及配置详细教程

文章目录 下载Node.js安装Node.js配置Node.js1、修改npm包的全局安装路径和缓存路径2、环境变量设置3、镜像源配置4、安装其他包管理工具 下载Node.js 下载:https://nodejs.org/en/download/prebuilt-installer,下载LTS版本的,LTS(Long Time…

代码随想录算法训练营day67 | 110.字符串接龙、105. 有向图的完全可达性、106. 岛屿的周长

本次题目全部来自卡码网 110.字符串接龙 本题只需要求出最短路径的长度就可以了,不用找出具体路径。 所以这道题要解决两个问题: 图中的线是如何连在一起的起点和终点的最短路径长度 首先题目中并没有给出点与点之间的连线,而是要我们自…

驼峰命名法在编程中的应用

驼峰命名法在编程中的应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!驼峰命名法(Camel Case)是一种常见的命名约定,在编…

IPython “%%script“ 魔法命令:跨平台脚本执行指南

IPython是一个强大的交互式Python解释器,提供了许多增强功能来提高开发效率。其中,%%script魔法命令是一个非常有用的特性,它允许用户在IPython环境中执行外部脚本。本文将详细介绍%%script命令的使用方法,包括其基本概念、使用场…

前端 JS 经典:函数签名

函数签名是什么?函数签名 函数名 参数 返回类型。 当我们明确了这 3 样东西,那么这个函数的作用和用法就确定了,它内部怎么实现的,我们完全不用管。 如下,我们知道这是一个判断属性是否对象的函数,只需…

SQL 基本语法

SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。以下是SQL的基本语法: 创建数据库: CREATE DATABASE database_name;使用数据库: USE database_name;创建表: CREATE TABLE table_…

基于多模态知识图谱的多模态推理-MR-MKG

MR-MKG论文中提出了一种新的多模态推理方法,即利用多模态知识图(Multimodal Knowledge Graph, MMKG)进行多模态推理的方法。这种方法旨在通过从MMKG中学习,扩展大型语言模型(LLMs)的多模态知识。 1 三个模…

面对.rmallox勒索病毒:如何有效防范及应对

引言: 在当今数字化社会,网络安全问题日益严重,勒索病毒成为企业和个人不可忽视的威胁之一。最近出现的.rmallox勒索病毒更是给全球各地的用户带来了严重的数据安全问题。本文将探讨.rmallox勒索病毒的特点、感染方式及应对策略,…

探索CSS布局:创建一个居中的内嵌方块示例

在网页设计中,布局是至关重要的部分。CSS提供了多种方式来实现元素的布局,包括居中对齐、外边距、内边距等。本文将通过一个简单的示例,介绍如何使用CSS来创建一个居中的内嵌方块,并探讨其背后的布局原理。 HTML 结构 首先&…

java服务MultipartFile入参测试

项目中经常会涉及到文件的上传下载以及导入相关的功能,今天针对MultipartFile类型文档导入写一下如何测试。 文档导入接口完成,使用postman测试,使用POST方法,进入Body模块,选择form-data选项,key的框体右侧…

微服务部署上线过程总结

目录 一、找到适合自己的部署方式 二、开始部署,先安装需要的环境 2.1 梳理一下都需要安装什么软件 2.2 配置数据库环境 2.3 配置redis 2.4 配置nacos 2.5 配置rabbitmq 2.6 配置docker环境 三、环境配置好了,开始部署后端 3.1 梳理后端都…

韩顺平0基础学java——第32天

p638-652 Properties类 list:这个设备可以是一个流对象。 修改:如果该文件里没有Key,那即是创建,如果是有那就是修改。 继续坦克大战 防止敌人坦克重叠 满脑子都是今汐,亚达哟😭😭&#x1f6…

2, 搭建springCloud 项目 测试demo

上篇文章 新建了父依赖服务,这篇文章就建两个demo测试服务。 因为后面需要做服务间的通讯测试,所以至少需要建两个服务 建个子模块 同样的方式建连个demo服务 给java 和resources目录添加属性 在resources目录下建一个applications.yml文件,…