文章目录

    • 1 什么是目标检测
    • 2 目标检测常见的数据集
      • 2.1 目标检测数据集
      • 2.2 目标检测数据集的标注
      • 2.3 目标检测工具介绍
    • 3 数据集的标注
      • 3.1 VOC数据集标注
      • 3.2 加载数据集

1 什么是目标检测

希望计算机在视频或图像中定位并识别我们感兴趣的目标
定位:找到目标在图像中的位置。
在这里插入图片描述
识别:识别矩阵框中的内容
在这里插入图片描述
感兴趣的目标:不仅是一些常规的目标,也可以是一些非常规的目标或者是抽象的目标。

2 目标检测常见的数据集

2.1 目标检测数据集

数据集涉及到输入和输出
输入:图片
输出:带有目标的标注
在这里插入图片描述
博主提到的数据集网站paperswitchcode停止维护
找到了保存往期的paperwithcode网页快照,还能使用以前的功能
https://web.archive.org/web/20250616051252/https://paperswithcode.com/
在这里插入图片描述
VOC数据集,找了个能用的链接,需要登录Google
https://www.kaggle.com/search?q=voc+in%3Adatasets
在这里插入图片描述
在标注的xml文件中,truncated表示能否标注完整(0标注完整),difficult表示是否能够容易识别(0容易识别)
在这里插入图片描述

imagej工具下载链接
https://imagej.net/ij/download.html
在这里插入图片描述
目标框选
在这里插入图片描述
在这里插入图片描述
土堆的VOC数据集查看器
https://xiaotudui.com/tuduilab/voc-dataset-viewer
在这里插入图片描述

2.2 目标检测数据集的标注

YOLO格式的标注,会将x_yolo,y_yolo,width_yolo,hight_yolo进行一个归一化的处理,将范围控制在[0,1],(Xcenter/ImageWidth,Ycenter/ImageHight,Width/ImageWidth,Hight/ImageHight)
在这里插入图片描述
YOLO标注例子
在这里插入图片描述
YOLO格式<class_id,x_yolo,y_yolo,width_yolo,hight_yolo>
0 0.5 0.54 0.406 0.5135
在这里插入图片描述

2.3 目标检测工具介绍

labellmg标注工具的使用
采集自己的数据集
明确任务–检测没有不带头盔的驾驶员,并检测出摩托车车牌
抽象出感兴趣的目标,摩托车

  1. 不带头盔的人 class id 0 no helmet
  2. 摩托车 class id 1 motor
  3. 摩托车车牌 class id 2 number
  4. 带头盔的人 class id 3 with helmet

标注工具,从up网盘下载
Labellmg
修改一下自己所需要的标签
在这里插入图片描述
Open Dir打开目录,Change Save Dir切换保存后的标注路径,通过create框出感兴趣目标,切换YOLO(txt)/VOC(xml)标注格式
在这里插入图片描述
labelstudio工具的使用
在python的虚拟环境中安装labelstudio

pip install -U label-studio

在这里插入图片描述

启动labelstudio

label-studio

在这里插入图片描述
在这里插入图片描述
通过导入的形式将未标定的数据集导入到labelstudio中,设置标签的类别进行标注
在这里插入图片描述
标注完成后的导出格式
在这里插入图片描述
本地的挂载和网盘的挂载适合大批量的数据集
设置-Cloud Storage-Add Source Storage
Absolute local path路径要和虚拟环境放在一个盘里
在这里插入图片描述
设置环境变量
LOCAL_FILES_SERVING_ENABLED=True
在这里插入图片描述
重新启动继续导入,点击Sync Storage同步数据
在这里插入图片描述
添加标签
在这里插入图片描述

3 数据集的标注

3.1 VOC数据集标注

使用labelimg工具标注,首先修改预定义的类别文件为所需要标注的类别
在这里插入图片描述
目录结构train为训练集,val为验证集,images为图片,labels为标注信息
在这里插入图片描述
标注的labels信息
在这里插入图片描述
训练集和验证集,全部标注完成

3.2 加载数据集

编写自己数据集
https://docs.pytorch.org/tutorials/beginner/data_loading_tutorial.html

import osimport torch
import xmltodict  # 用于将XML数据转换为Python字典
from PIL import Image  # Python图像处理库
from torch.utils.data import Dataset  # PyTorch数据集基类
from torchvision import transforms  # 图像预处理工具class VOCDataset(Dataset):# VOC数据集初始化def __init__(self, image_dir, label_dir, transform, label_transform):"""初始化VOC格式数据集Args:image_dir: 图像文件目录路径label_dir: 标签文件目录路径transform: 图像预处理变换label_transform: 标签预处理变换(代码中未实际使用)"""self.image_dir = image_dirself.label_dir = label_dirself.transform = transformself.label_transform = label_transformself.imgs = os.listdir(self.image_dir)  # 获取图像目录下所有文件名# 定义类别列表self.classes_list = ["no helmet", "motor", "number", "with helmet"]# 返回数据集大小def __len__(self):"""返回数据集中的图像数量"""return len(self.imgs)# 获取单个数据项def __getitem__(self, index):"""获取索引对应的数据项"""# 获取图像文件名并构建完整路径img_name = self.imgs[index]img_path = os.path.join(self.image_dir, img_name)image = Image.open(img_path).convert('RGB')  # 打开图像并转换为RGB格式# 构建对应的XML标签文件路径(将图像扩展名替换为.xml)label_name = img_name.split('.')[0] + '.xml'label_path = os.path.join(self.label_dir, label_name)# 解析XML标签文件with open(label_path, "r", encoding="utf-8") as f:label_content = f.read()label_dict = xmltodict.parse(label_content)  # 将XML转换为字典# 提取标注信息objects = label_dict["annotation"]["object"]target = []  # 存储所有目标的标注信息# 遍历每个标注对象for obj in objects:obj_name = obj["name"]  # 获取对象类别名称obj_class_id = self.classes_list.index(obj_name)  # 将类别名称转换为索引ID# 提取边界框坐标(注意转换为浮点数)xmin = float(obj["bndbox"]["xmin"])ymin = float(obj["bndbox"]["ymin"])xmax = float(obj["bndbox"]["xmax"])ymax = float(obj["bndbox"]["ymax"])# 将当前目标的标注信息添加到列表target.extend([obj_class_id, xmin, ymin, xmax, ymax])# 将标注列表转换为张量target = torch.tensor(target)# 应用图像预处理变换if self.transform is not None:image = self.transform(image)return image, target  # 返回处理后的图像和标注张量if __name__ == '__main__':image_dir = r'E:\deeplearning\torch\data\HelmetDataset-VOC\train\images'label_dir = r'E:\deeplearning\torch\data\HelmetDataset-VOC\train\labels'# 创建数据集实例train_dataset = VOCDataset(image_dir, label_dir, transforms.Compose([transforms.ToTensor()]), None)print(len(train_dataset))  # 打印数据集大小print(train_dataset[1])  

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

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

相关文章

Linux内核内存管理系列博客教程学习规划

&#x1f4da; 系列总体目标 帮助读者系统理解Linux内核内存管理机制&#xff0c;从基础概念到核心实现&#xff0c;最终能参与内核内存相关开发。&#x1f4c5; 系列大纲&#xff08;共20篇博文&#xff09; 第一部分&#xff1a;基础概念篇&#xff08;4篇&#xff09;Linux内…

2025应届生求职指南:掌握这些新兴技能提升竞争力

2025应届生求职指南&#xff1a;掌握这些新兴技能提升竞争力2025-09-01 21:29:35在当前就业市场竞争日益激烈的背景下&#xff0c;2025届应届生既面临挑战&#xff0c;也迎来新的发展机遇。科技不断进步与行业变革推动了人才需求结构的变化&#xff0c;掌握一些新兴技能已成为提…

DevOps篇之Jenkins实现k8s集群版本发布以及版本管理

设计思路 通过Jenkins 实现 Kubernetes 集群的版本发布和版本管理。并且利用Jenkins实现多集群 K8s 发布。首先需要了解Helm 的应用场景&#xff0c;以及 GitLab 中配置多集群 KUBECONFIG 等问题。现在工具采用 Jenkins&#xff0c;所以需要重点放在 Jenkins 与 K8s 的集成上&a…

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI

AI 智能体应用在企业实际落地越来越多&#xff0c;一个完整的 AI 智能体应用系统通常包含三个主要角色&#xff1a;用户、AI 智能体和外部工具。AI 智能体架构设计的核心任务之一&#xff0c;就是解决这三个角色之间的沟通问题。 这三个角色的沟通&#xff0c;涉及到&#xff1…

Unity6最新零基础入门(知识点复习包含案例)NO.2——Unity6下载与安装(超详细)

前言 随着 Unity 6 版本的推出&#xff0c;全新的功能与优化为开发者带来了更高效的创作体验。不过&#xff0c;在真正开始挥洒创意之前&#xff0c;掌握 Unity Hub 的安装、版本的选择以及 Unity 6 的正确安装方法是至关重要的基础。本文将围绕这些核心步骤展开&#xff0c;为…

【开题答辩全过程】以 健身爱好者饮食管理小程序为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

基于JavaScript的智能合约平台(Agoric)

Agoric通过对象能力模型提升安全性&#xff0c;被用于去中心化金融&#xff08;DeFi&#xff09;衍生品开发。通过简化开发流程和增强安全性&#xff0c;推动去中心化应用&#xff08;DApps&#xff09;的大规模落地。Agoric成立于2018年&#xff0c;由斯坦福大学校友Mark Mill…

mysql实例是什么?

在 ​​MySQL​​ 的语境中&#xff0c;​​“MySQL 实例”&#xff08;MySQL Instance&#xff09;​​ 是指&#xff1a;​​一个正在运行的 MySQL 服务进程及其所管理的独立数据库环境&#xff0c;包括内存结构、后台线程、配置参数、数据文件等。一个 MySQL 实例可以管理一…

别再说AppInventor2只能开发安卓了!苹果iOS现已支持!

AppInventor2中文网&#xff08;https://www.fun123.cn&#xff09;已完成v2.76版本升级。 AI伴侣升级至v2.76&#xff0c;Android SDK由34升级至35&#xff0c;安卓版本由14升级至15。已支持安卓15&#xff01; 重磅升级&#xff01;&#xff01;支持苹果iOS编译及上架…

2025 批量下载雪球和东方财富帖子和文章导出excel和pdf

之前分享过雪球下载 2025年如何批量下载雪球帖子和文章导出pdf&#xff1f;&#xff0c;今天再整理分享下最新雪球和东方财富文章导出excel和pdf 以雪球这个号为例 下载的所有帖子文章内容html&#xff1a; 然后用我开发的工具批量转换为pdf 2025 更新版&#xff1a;苏生不…

JavaEE 初阶第十八期:叩开网络世界的大门

专栏&#xff1a;JavaEE初阶起飞计划 个人主页&#xff1a;手握风云 目录 一、网络发展史 1.1. 独立模式 1.2. 网络互连 二、网络分类 2.1. 局域网 2.2. 广域网 三、IP地址 3.1. 概念 3.2. 格式 四、端口号 4.1. 概念 4.2. 格式 五、协议 5.1. 概念 5.2. 作用 …

SOME/IP-SD中IPv4 SD端点选项详解

<摘要> 本解析围绕IPv4 SD端点选项在AUTOSAR AP R22-11规范中的定义与应用展开。该选项是SOME/IP服务发现&#xff08;SD&#xff09;协议中的关键字段&#xff0c;用于在网络地址不可达或变化的场景下&#xff08;如经NAT网关或使用多宿主设备时&#xff09;&#xff0c…

.NET 8 集成 JWT Bearer Token

注意&#xff1a;这是一种非常简单且不是最低限度安全的设置 JWT 的方法。步骤 1——安装软件包首先&#xff0c;您需要安装一些 NuGet 包。dotnet add package Microsoft.AspCore.Authentication.JwtBearer dotnet add package System.IdentityModel.Tokens.Jwt步骤 2——创建…

模型汇总-数学建模

一、优化模型1.线性规划线性规划&#xff08;Linear Programming, LP&#xff09;是一种数学优化方法&#xff0c;用于在给定的线性约束条件下&#xff0c;找到线性目标函数的最大值或最小值。它是运筹学中最常用的方法之一。线性规划的标准形式最大化问题标准形式&#xff1a;…

2025年09月计算机二级MySQL选择题每日一练——第十二期

计算机二级中选择题是非常重要的&#xff0c;本期是这个系列的最后一期了&#xff01; 答案及解析将在末尾公布&#xff01; 今日主题&#xff1a;综合应用进阶 1、设有如下创建表的语句&#xff1a; CREATE TABLE tb_test( ID INT NOT NULL PRIMARY KEY, sno CHAR(10) NOT …

计组(2)CPU与指令

一、总体认识CPU1、软硬件角度CPU&#xff0c;全称就是中央处理器。从硬件上来说&#xff0c;CPU是一个超大规模集成电路&#xff0c;通过电路实现加法、乘法乃至各种各样的处理逻辑。从软件来说&#xff0c;CPU就是一个执行各种计算机指令的逻辑机器。2、计算机指令所谓的计算…

用Java让家政服务触手可及

家政服务不仅仅包括日常保洁&#xff0c;随着社会的发展&#xff0c;从日常保洁、衣物清洁到家电维修、月嫂保姆&#xff0c;家政服务的场景越发多元。用户不仅追求服务的 “专业度”&#xff0c;更看重 “便捷性”—— 能否快速找到服务、预约服务、了解服务效果&#xff1f;上…

Python OpenCV图像处理与深度学习:Python OpenCV特征检测入门

特征检测与描述&#xff1a;探索图像中的关键点 学习目标 通过本课程&#xff0c;学员们将掌握特征检测的基本概念&#xff0c;了解如何使用OpenCV库中的SIFT和SURF算法进行特征点检测和特征描述符的计算。实验将通过理论讲解与实践操作相结合的方式&#xff0c;帮助学员深入理…

ECDH (椭圆曲线迪菲-赫尔曼密钥交换)

文章目录一、什么是ECDH&#xff1f;二、为什么需要 ECDH&#xff1f;要解决什么问题&#xff1f;三、原理与图示四、核心比喻&#xff1a;混合颜料五、技术实现步骤1. 约定公共参数2. 生成密钥对3. 交换公钥4. 计算共享密钥5. 密钥派生六、注意事项七、安全性基础八、优势特点…

Spring Boot实战:打造高效Web应用,从入门到精通

目录一、Spring Boot 初相识二、搭建开发环境2.1 安装 JDK2.2 安装 IDE&#xff08;以 IntelliJ IDEA 为例&#xff09;2.3 初始化 Spring Boot 项目三、Spring Boot 基础配置3.1 配置文件详解&#xff08;application.properties 和 application.yml&#xff09;3.2 自定义配置…