物体识别(香蕉)

news2024/9/26 1:29:07

  ✨✨✨

感谢优秀的你打开了小白的文章

希望在看文章的你今天又进步了一点点,生活更加美好!🌈🌈🌈

目录

1.数据集下载

2.数据集导入 

 3.结果


1.数据集下载

包含所有图像和CSV标签文件的香蕉检测数据集可以直接从互联网下载。

%matplotlib inline
import os
import pandas as pd
import torch
import torchvision
from d2l import torch as d2l

#@save
d2l.DATA_HUB['banana-detection'] = (
    d2l.DATA_URL + 'banana-detection.zip',
    '5de26c8fce5ccdea9f91267273464dc968d20d72')

2.数据集导入 

通过read_data_bananas函数,我们读取香蕉检测数据集。 该数据集包括一个的CSV文件,内含目标类别标签和位于左上角和右下角的真实边界框坐标。  

#@save
def read_data_bananas(is_train=True):
    """读取香蕉检测数据集中的图像和标签"""
    data_dir = d2l.download_extract('banana-detection')
    csv_fname = os.path.join(data_dir, 'bananas_train' if is_train
                             else 'bananas_val', 'label.csv')
    csv_data = pd.read_csv(csv_fname)
    csv_data = csv_data.set_index('img_name')
    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))
    return images, torch.tensor(targets).unsqueeze(1) / 256

 通过使用read_data_bananas函数读取图像和标签,以下BananasDataset类别将允许我们创建一个自定义Dataset实例来加载香蕉检测数据集。

#@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' if
              is_train else f' validation examples'))

    def __getitem__(self, idx):
        return (self.features[idx].float(), self.labels[idx])

    def __len__(self):
        return len(self.features)

 们定义load_data_bananas函数,来为训练集和测试集返回两个数据加载器实例。对于测试集,无须按随机顺序读取它。

#@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_iter
batch_size, edge_size = 32, 256
train_iter, _ = load_data_bananas(batch_size)
batch = next(iter(train_iter))
batch[0].shape, batch[1].shape

 3.结果

imgs = (batch[0][0:10].permute(0, 2, 3, 1)) / 255
axes = d2l.show_images(imgs, 2, 5, scale=2)
for ax, label in zip(axes, batch[1][0:10]):
    d2l.show_bboxes(ax, [label[0][1:5] * edge_size], colors=['w'])

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

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

相关文章

day1-二分查找

二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解…

单片机基于stm32单片机的数字温度计设计_kaic

摘 要 古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是…

什么是IP地址定位技术

IP地址定位是一种技术手段,可以通过获取设备的IP地址精确定位设备的地理位置。它在现代社会的许多方面都有广泛的应用,包括网络安全、广告投放市场调研等。 在互联网时代,人们越来越依赖于网络而IP地址作为网络连接的基石扮演着重要的角色。…

什么软件支持快速批量处理大量视频素材呢

在视频剪辑的过程中,有时候为了满足视频时长的需求,或者为了实现视频与音频的同步操作,我们可能需要对视频的播放速度进行调整。如果需要处理大量的视频文件,传统的手动一个个调整的方法就显得有点落后了,今天小编要与…

JDBC事务特性

1、 事务的四种特性(ACID) 原子性(Atomicity):原子性是指事务是一个不可分割的执行单元或者叫工作单位,事务中的操作,要么都发生,要么都不发生。 一致性(Consistency&am…

centos7.9 安装redis5.0.7记录

参考自己之前写的安装5.0.3 centos7安装redis5.0.3详细步骤_lanren312的博客-CSDN博客 一开始大意了,没有安装gcc,直接就make [rootlocalhost redis-5.0.7]# make cd src && make all make[1]: Entering directory /opt/redis-5.0.7/srcLINK re…

Docker 多架构镜像介绍和最佳实践

Docker 多架构镜像介绍和最佳实践> 更多云原生相关技术分享请关注公众号:CloudNativeOps ; 添加微信 GoOps888,备注 ‘加群’ 可加入云原生技术交流群。 一、多架构镜像介绍 在 Docker 中,同一个 Docker 镜像可以在不同的平台…

rosserial协议通信--向ros写调用过程和读取数据调用过程

rosserial通信向ros写调用过程如下: 在32单片机中,发布者调用publish函数,然后依次逆向(上图是分析过程;调用过程逆向)查看上图, 最终操作串口,向上位机发布数据进行通信。 rosser…

代码随想录第24天 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II

93.复原IP地址 /*** param {string} s* return {string[]}*/ let road [];let path [];var restoreIpAddresses function (s) {road [];if (s.length > 12 || s.length < 4) return [];//开始就判断&#xff0c;长度大于12的字符窜或者小于4的都不行backtracking(s,…

漏洞复现 || Apache RocketMQ 远程代码执行

技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的…

Spring原码学习第一篇:Spring概述

1、Spring源码概述图&#xff1a; 2、一些重要的接口 3、Spring获取对象的过程 BeanDefinition中实现的方法&#xff0c;把xml中定义的对象封装为一个对象&#xff0c;方便后面处理 4、BeandefinitionReader BeandefinitionReader作为一个抽象层来处理配置文件&#xff0c;定…

unity插件 -- UiEffect for UGUI

目录 1.简介 2. 脚本 3. 在线观看Demo 4.安装要求 5.使用方法 6.使用场景 7.插件下载 1.简介 UIEffect-upm是Unity中的一个插件&#xff0c;用于实现各种UI特效。它提供了许多常见的UI效果&#xff0c;如模糊、描边、阴影、发光等&#xff0c;可以轻松地为UI元素增添动…

Vue3子组件向父组件传递消息

父子组件之间的通信&#xff1a;props与emit 通常提到props&#xff0c;都会想到的是父组件给子组件传值&#xff1b;提到emit为子组件向父组件发送消息&#xff0c;但其实&#xff0c;props也可以使子组件向父组件传递消息 方式为在父组件中通过为子组件绑定属性&#xff0c…

代谢组学数据分析及网络药理学研究技术与实践

代谢组学是近年发展快速的一门学科&#xff0c;目前在医学、植物学、微生物学、毒理学、药物研发等多个领域中得到了广泛的应用。如何从复杂的代谢组学数据中提取出有价值的信息&#xff0c;筛选出潜在的生物标志物成为近年来代谢组学研究的热点和难点。网络药理学能够通过计算…

基于STM32的熏艾式空气消毒装置设计与实现(华为云IOT)

一、前言 艾叶自古以来都在中医中占据着重要地位,特别是在那个瘟疫横行、卫生设施条件落后的时代。而在如今的疫情时代,艾叶的实用功能依旧可以为我们所用。考虑到技术的发展,我们是否可以利用现代技术的高效性来对艾叶进行更加科学利用呢?可编程的嵌入式系统与传感器结合…

Linux学习之管道

管道和信号一样&#xff0c;也是进程通信的方式之一。匿名管道&#xff0c;也称为管道符&#xff08;“|”&#xff09;&#xff0c;用来把上一个命令的输出当成下一个命令的输入。使用vim pipeContent.txt&#xff0c;把下边的内容 1 11 2 22 3 33 4 44 5 6 7 8 9写到Redirec…

基于simulink从视频序列创建马赛克(附源码)

一、前言 此示例演示如何从视频序列创建马赛克。视频拼接是将视频帧拼接在一起以形成场景综合视图的过程。生成的马赛克图像是视频数据的紧凑表示。视频马赛克块通常用于视频压缩和监控应用。 此示例说明如何使用“角检测”块、“估计几何变换”块、“投影变换”块和“合成”…

Vue3+Vite+Pinia+Naive后台管理系统搭建之四:Naive UI 组件库的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门Vue3.0 基础入门快速入门。 UI 组件请参考官网&#xff1a;Naive Ui 官网 1. 安装依赖 yarn add naive-ui -D // or npm install naive-ui -D 2. 在 SFC (单文件组件) 中使用 直接引入&#xff08;推…

UnsatisfiedDependencyException: Error creating bean with name “dataSource” 异常排查

在写demo过程中&#xff0c;出现此异常&#xff0c;自己是按照以下步骤一个一个进行排查最终解决问题&#xff0c;希望能帮到碰到此问题的同学 : ) 1. 检查配置文件是否设置正常&#xff0c;是否配置了扫描类和配置文件路径 2. 检查是否设置MapperScan注解 3. 检查驱动版本和s…

c语言的变量

变量 我们可以直接声明一个变量&#xff0c;并利用这些变量进行基本的运算&#xff0c;声明格式为: 数据类型 变量名称 初始值&#xff1b; // 其中初始值可以不用定义变量时设定 // 是赋值操作&#xff0c;可以将等号后面的值赋值给前面的变量&#xff0c;等号后面可以直接…