当前位置: 首页 > news >正文

Lnton羚通关于【PyTorch】教程:torchvision 目标检测微调

torchvision 目标检测微调
本教程将使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微调 预训练的Mask R-CNN 模型。 它包含 170 张图片,345 个行人实例。

定义数据集
用于训练目标检测、实例分割和人物关键点检测的参考脚本允许轻松支持添加新的自定义数据集。数据集应继承自标准的 torch.utils.data.dataset 类,并实现 __len__ 和 __getitem__ 。

__getitem__ 需要返回:

image: PIL 图像 (H, W)
target: 字典数据,需要包含字段
boxes (FloatTensor[N, 4]): N 个 Bounding box 的位置坐标 [x0, y0, x1, y1], 0~W, 0~H
labels (Int64Tensor[N]): 每个 Bounding box 的类别标签,0 代表背景类。
image_id (Int64Tensor[1]): 图像的标签 id,在数据集中是唯一的。
area (Tensor[N]): Bounding box 的面积,在 COCO 度量里使用,可以分别对不同大小的目标进行度量。
iscrowd (UInt8Tensor[N]): 如果 iscrowd=True 在评估时忽略。
(optionally) masks (UInt8Tensor[N, H, W]): 可选的 分割掩码
(optionally) keypoints (FloatTensor[N, K, 3]): 对于 N 个目标来说,包含 K 个关键点 [x, y, visibility], visibility=0 表示关键点不可见。
如果模型可以返回上述方法,可以在训练、评估都能使用,可以用 pycocotools 里的脚本进行评估。

pip install pycocotools 安装工具。

关于 labels 有个说明,模型默认 0 为背景。如果数据集没有背景类别,不需要在标签里添加 0 。 例如,假设有 cat 和 dog 两类,定义了 1 表示 cat , 2 表示 dog , 如果一个图像有两个类别,类别的 tensor 为 [1, 2] 。

此外,如果希望在训练时使用纵横比分组,那么建议实现 get_height_and_width 方法,该方法将返回图像的高度和宽度,如果未提供此方法,我们将通过 __getitem__ 查询数据集的所有元素,这会将图像加载到内存中,并且比提供自定义方法的速度慢。

为 PennFudan 写自定义数据集
文件夹结构如下:

PennFudanPed/PedMasks/FudanPed00001_mask.pngFudanPed00002_mask.pngFudanPed00003_mask.pngFudanPed00004_mask.png...PNGImages/FudanPed00001.pngFudanPed00002.pngFudanPed00003.pngFudanPed00004.png

这是图像的标注信息,包含了 mask 以及 bounding box 。每个图像都有对应的分割掩码,每个颜色代表不同的实例。

import os 
import numpy as np 
import torch 
from PIL import Imageclass PennFudanDataset(torch.utils.data.Dataset):def __init__(self, root, transforms):self.root = rootself.transforms = transforms## 加载所有图像,sort 保证他们能够对应起来self.images = list(sorted(os.listdir(os.path.join(self.root, 'PNGImages'))))self.masks = list(sorted(os.listdir(os.path.join(self.root, 'PedMasks'))))def __getitem__(self, idx):img_path = os.path.join(self.root, 'PNGImages', self.images[idx])mask_path = os.path.join(self.root, 'PedMasks', self.masks[idx])image = Image.open(img_path).convert('RGB')## mask 图像并没有转换为 RGB,里面存储的是标签,0表示的是背景mask = Image.open(mask_path)# 转换为 numpymask = np.array(mask) # 实例解码成不同的颜色obj_ids = np.unique(mask)# 移除背景obj_ids = obj_ids[1:]masks = mask == obj_ids[:, None, None]# get bounding box coordinates for each masknum_objs = len(obj_ids)boxes = []for i in range(num_objs):pos = np.where(masks[i])xmin = np.min(pos[1])xmax = np.max(pos[1])ymin = np.min(pos[0])ymax = np.max(pos[0])boxes.append([xmin, ymin, xmax, ymax])# 转换为 tensorboxes = torch.as_tensor(boxes, dtype=torch.float32)labels = torch.ones((num_objs,), dtype=torch.int64)masks = torch.as_tensor(masks, dtype=torch.uint8)image_id = torch.tensor([idx])area = (boxes[:, 3] - boxes[:, 1]) * (boxes[:, 2] - boxes[:, 0])iscrowd = torch.zeros((num_objs,), dtype=torch.int64)target = {}target["boxes"] = boxestarget["labels"] = labelstarget["masks"] = maskstarget["image_id"] = image_idtarget["area"] = areatarget["iscrowd"] = iscrowdif self.transforms is not None:image, target = self.transforms(image, target)return image, targetdef __len__(self):return len(self.images)

Lnton羚通专注于音视频算法、算力、云平台的高科技人工智能企业。 公司基于视频分析技术、视频智能传输技术、远程监测技术以及智能语音融合技术等, 拥有多款可支持ONVIF、RTSP、GB/T28181等多协议、多路数的音视频智能分析服务器/云平台。

相关文章:

Lnton羚通关于【PyTorch】教程:torchvision 目标检测微调

torchvision 目标检测微调 本教程将使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微调 预训练的Mask R-CNN 模型。 它包含 170 张图片,345 个行人实例。 定义数据集 用于训练目标检测、实例分割和人物关键点检测的参考脚本允许轻松支持添加…...

AMD fTPM RNG的BUG使得Linus Torvalds不满

导读因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满,并提出了禁用该功能的建议。 因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM…...

idea 转换为 Maven Project 的方法

选项: Add as Maven Project...

es1.7.2 按照_type先聚合,再按照时间二次聚合

// 设置查询条件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…...

pyqt5 如何修改QplainTextEdit 背景色和主窗口的一样颜色

如果您希望将 QPlainTextEdit 的背景颜色设置为与窗口背景相似的灰色,您可以使用窗口的背景颜色作为基准来设置 QPlainTextEdit 的背景颜色。以下是一个示例代码,展示如何实现这一点: from PyQt5.QtWidgets import QApplication, QMainWindo…...

解决使用element ui时el-input的属性type=number,仍然可以输入e的问题。

使用element ui时el-input的属性typenumber,仍然可以输入e, 其他的中文特殊字符都不可以输入,但是只有e是可以输入的,原因是e也输入作为科学计数法的时候,e是可以被判定为数字的, 但是有些场景是需要把e这种…...

ShardingSphere 可观测 SQL 指标监控

ShardingSphere并不负责如何采集、存储以及展示应用性能监控的相关数据,而是将SQL解析与SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统,并交由其处理。 换句话说,ShardingSphere仅负责产生具有价值的数据,并通过…...

Redisson实现分布式锁示例

一、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version></dependency>二、配置类 import org.redisson.Redisson; import org.redisson.api.RedissonClient;…...

使用Nginx作为一个普通代理服务器

使用Nginx作为一个普通代理服务器, 请不要用于违法用途哦 nginx作为一个反向代理工具&#xff0c;除了可以进行反向代理之外&#xff0c;还可以用来作为代理工具来使用&#xff0c;作为代理工具使用的步骤如下&#xff0c;这个配置目前支持80端口 Windows系统代理设置对应IP, …...

chatglm2-6b模型在9n-triton中部署并集成至langchain实践 | 京东云技术团队

一.前言 近期&#xff0c; ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布&#xff0c;引入了如下新特性&#xff1a; ①. 基座模型升级&#xff0c;性能更强大&#xff0c;在中文C-Eval榜单中&#xff0c;以51.7分位列第6&#xff1b; ②. 支持8K-32k的上下文&#xff1b…...

Shell编程之正则表达式(非常详细)

正则表达式 1.通配符和正则表达式的区别2.基本正则表达式2.1 元字符 &#xff08;字符匹配)2.2 表示匹配次数2.4 位置锚定2.5 分组 和 或者 3.扩展正则表达式4.部分文本处理工具4.1 tr 命令4.2 cut命令4.3 sort命令4.4 uniq命令 1.通配符和正则表达式的区别 通配符一般用于文件…...

RNN模型简单理解和CNN区别

目录 神经网络&#xff1a;水平方向延伸&#xff0c;数据不具有关联性 ​ RNN&#xff1a;在神经网络的基础上加上了时间顺序&#xff0c;语义理解 ​RNN: 训练中采用梯度下降&#xff0c;反向传播 ​ 长短期记忆模型 ​输出关系&#xff1a;1 toN&#xff0c;N to N 单入…...

【Axure高保真原型】JS日期选择器筛选中继器表格

今天和大家分享JS日期选择器筛选中继器表格的原型模板&#xff0c;通过调用浏览器的日期选择器&#xff0c;所以可以获取真实的日历效果&#xff0c;具体包括哪一年二月份有29天&#xff0c;几号对应星期几&#xff0c;都是真实的&#xff0c;获取日期值后&#xff0c;通过交互…...

android bp脚本

一。android大约从7.0开始引入 .bp文件代替以前的.mk文件&#xff0c;用于帮助android项目的编译配置文件。 二。mk文件转化为bp文件&#xff0c;可以使用下面命令转化&#xff0c;注意命令中>&#xff0c;这是写入文件。androidmk是android源码自带的工具&#xff0c;他可…...

Redis 数据库 NoSQL

目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值&#xff08;Key-Value&#xff09;存储数据库 列存储数据库 文档型数据库 图形&#xff08;Graph&#xff09;数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…...

RN 项目异常问题整理

常见问题 无法找到 CardStackStyleInterpolator StackViewStyleInterpolator 这个方法集来代替 CardStackStyleInterpolator的&#xff0c;这个方法集的路径也需要注意一下&#xff0c;在2.12.1版本之前&#xff0c; 该文件在react-navigation/src/views/StackView/中&#xf…...

STM8编程[TIM1多路PWM输出选项字节(Option Byte)操作和IO复用]

TIM1多路PWM输出选项字节(Option Byte)操作和IO复用 本文摘录于&#xff1a;https://blog.csdn.net/freeape/article/details/47008033只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 代码上要使用TIME1输出3路PWM,代码如下: void tim…...

Java算法_ 反转二叉树(LeetCode_Hot100)

题目描述&#xff1a;给你一棵二叉树的根节点 &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。root。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/8/16 13:18* 4*/public class In…...

C/C++ 标准模版库STL(持续更新版)

标准模版库STL 目录 算法库 栈 队列 向量 映射 列表 双向链表 集合 Iterator 送代器 <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器…...

ARM(实验二)

uart4.h #ifndef __H__ #define __H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化 void hal_uart4_init();//发送一个字符函数 void hal_put_char(const char str);//发…...

构建自主支付智能体:从事件驱动架构到安全实践

1. 项目概述&#xff1a;一个能自主处理支付的智能体最近在开源社区里&#xff0c;我注意到一个挺有意思的项目&#xff0c;叫sentient-agi/agentic-payments-bot。光看这个名字&#xff0c;就能嗅到一股前沿技术融合的味道——“Sentient AGI”&#xff08;感知型通用人工智能…...

别再死记硬背了!用SPSS搞定系统聚类法,手把手教你从数据录入到谱系图解读

SPSS系统聚类法实战&#xff1a;从数据导入到商业解读的全流程指南 当你的数学建模作业截止日期临近&#xff0c;或者老板突然要求对市场调研数据进行分类分析时&#xff0c;系统聚类法往往是救命稻草。但传统教材中复杂的距离矩阵计算和迭代过程&#xff0c;常让初学者望而生畏…...

基于CircuitPython与YouTube API的智能直播状态指示器制作指南

1. 项目概述与核心价值 如果你是一个内容创作者&#xff0c;或者你关注的某个频道正在直播&#xff0c;一个醒目、酷炫的“ON AIR”指示灯绝对能瞬间提升氛围感。今天要聊的这个项目&#xff0c;就是基于CircuitPython和YouTube API&#xff0c;自己动手打造一个能自动感知直播…...

Kubernetes原生部署Jenkins:全栈方案与生产级实践指南

1. 项目概述&#xff1a;一个为Kubernetes而生的Jenkins全栈部署方案在容器化和云原生技术席卷全球的今天&#xff0c;Jenkins作为持续集成与持续交付领域的常青树&#xff0c;其部署形态也正经历着深刻的变革。直接将Jenkins部署在物理机或虚拟机上&#xff0c;虽然简单直接&a…...

MASA模组汉化包完整教程:让Minecraft模组界面瞬间变中文的终极指南

MASA模组汉化包完整教程&#xff1a;让Minecraft模组界面瞬间变中文的终极指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft中MASA模组复杂的英文界面而头疼吗&#…...

预训练+微调实现TVA模型快速部署

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

苹果砂不锈钢蜂窝板做出来真的和苹果店一样吗?来自广东优之彩!

当“苹果店质感”成为高级商业空间的隐形标尺&#xff0c;无数人追问&#xff1a;我们能用苹果砂不锈钢蜂窝板&#xff0c;复刻那种极致、均匀、充满科技感的哑光金属美学吗&#xff1f;答案是&#xff1a;可以。但前提是&#xff0c;你选择的不仅是材料&#xff0c;更是一套完…...

设计程序统计城市社区医疗站点接诊数据,优化医疗点位分布,方便居民就近看病,解决就医难问题。

一、实际应用场景描述某城市卫健委希望优化社区卫生服务中心布局&#xff0c;但面临以下现实情况&#xff1a;- 各社区接诊量差异巨大- 部分点位长期排队&#xff0c;部分点位资源闲置- 居民跨区就医成本高- 缺乏基于数据的点位调整依据&#x1f449; 技术目标&#xff1a;用 P…...

基于LLM的智能网页自动化:从意图理解到工程实践

1. 项目概述&#xff1a;当AI学会“看”和“点”&#xff0c;自动化进入新阶段如果你还在为那些需要手动点击、填写表单、抓取数据的重复性网页任务感到头疼&#xff0c;那么browser-use这个项目可能会让你眼前一亮。简单来说&#xff0c;它不是一个普通的浏览器自动化工具&…...

Mastercard开源AI代理工具包:用智能代理重塑支付集成开发体验

1. 项目概述&#xff1a;当开发者遇上Mastercard&#xff0c;一个工具包如何重塑支付集成体验如果你是一名开发者&#xff0c;正在为你的电商平台、SaaS服务或者任何需要处理在线支付的应用程序集成支付功能&#xff0c;那么你大概率绕不开与Mastercard这类全球支付网络的交互。…...