关于gt_sampling的理解

pcdet/datasets/augmentor/data_augmentor.py

    def gt_sampling(self, config=None):db_sampler = database_sampler.DataBaseSampler(root_path=self.root_path,sampler_cfg=config,class_names=self.class_names,logger=self.logger)return db_sampler

此函数指向DataBaseSampler类,单步调试运行到__call__函数

    def __call__(self, data_dict):"""Args:data_dict:gt_boxes: (N, 7 + C) [x, y, z, dx, dy, dz, heading, ...]Returns:"""gt_boxes = data_dict['gt_boxes']gt_names = data_dict['gt_names'].astype(str)existed_boxes = gt_boxestotal_valid_sampled_dict = []sampled_mv_height = []sampled_gt_boxes2d = []for class_name, sample_group in self.sample_groups.items():if self.limit_whole_scene:num_gt = np.sum(class_name == gt_names)sample_group['sample_num'] = str(int(self.sample_class_num[class_name]) - num_gt)if int(sample_group['sample_num']) > 0:#取15个groud truth标签sampled_dict = self.sample_with_fixed_number(class_name, sample_group)# 求出框的坐标信息sampled_boxes = np.stack([x['box3d_lidar'] for x in sampled_dict], axis=0).astype(np.float32)assert not self.sampler_cfg.get('DATABASE_WITH_FAKELIDAR', False), 'Please use latest codes to generate GT_DATABASE'# 碰撞检测#iou1针对的是当前样本里的groud truth与从实例库中采样得到的groud truth进行iou计算,iou如果不为0,则两个发生碰撞(现实情况不可能发生)iou1 = iou3d_nms_utils.boxes_bev_iou_cpu(sampled_boxes[:, 0:7], existed_boxes[:, 0:7])#iou2针对的是实例库中采样得到的groud truth彼此之间进行iou计算,iou如果不为0,则两个发生碰撞(现实情况不可能发生)iou2 = iou3d_nms_utils.boxes_bev_iou_cpu(sampled_boxes[:, 0:7], sampled_boxes[:, 0:7])iou2[range(sampled_boxes.shape[0]), range(sampled_boxes.shape[0])] = 0iou1 = iou1 if iou1.shape[1] > 0 else iou2#将iou1和iou2中值为0的标记为ture,满足现实情况valid_mask = ((iou1.max(axis=1) + iou2.max(axis=1)) == 0)if self.img_aug_type is not None:sampled_boxes2d, mv_height, valid_mask = self.sample_gt_boxes_2d(data_dict, sampled_boxes, valid_mask)sampled_gt_boxes2d.append(sampled_boxes2d)if mv_height is not None:sampled_mv_height.append(mv_height)valid_mask = valid_mask.nonzero()[0]valid_sampled_dict = [sampled_dict[x] for x in valid_mask]valid_sampled_boxes = sampled_boxes[valid_mask]existed_boxes = np.concatenate((existed_boxes, valid_sampled_boxes[:, :existed_boxes.shape[-1]]), axis=0)total_valid_sampled_dict.extend(valid_sampled_dict)sampled_gt_boxes = existed_boxes[gt_boxes.shape[0]:, :]if total_valid_sampled_dict.__len__() > 0:sampled_gt_boxes2d = np.concatenate(sampled_gt_boxes2d, axis=0) if len(sampled_gt_boxes2d) > 0 else Nonesampled_mv_height = np.concatenate(sampled_mv_height, axis=0) if len(sampled_mv_height) > 0 else None'''将采样的groud truth标签中的点云数据添加到当前样本点云场景中去sampled_gt_boxes采样的groud truth的坐标、大小、偏移角total_valid_sampled_dict采样的groud truth,包括其内部的点云数据存储位置,点云数目,bbox,即包括sampled_gt_boxes'''data_dict = self.add_sampled_boxes_to_scene(data_dict, sampled_gt_boxes, total_valid_sampled_dict, sampled_mv_height, sampled_gt_boxes2d)data_dict.pop('gt_boxes_mask')return data_dict

关于采样多少个实例库中的groud truth标签,在配置文件中设置

在这里插入图片描述
通过函数sample_with_fixed_number采样实例库中的标签

   def sample_with_fixed_number(self, class_name, sample_group):"""Args:class_name:sample_group:Returns:"""sample_num, pointer, indices = int(sample_group['sample_num']), sample_group['pointer'], sample_group['indices']# 初次运行将pointer设置为0,索引随机打乱if pointer >= len(self.db_infos[class_name]):indices = np.random.permutation(len(self.db_infos[class_name]))pointer = 0#按照打乱后的索引顺序取sample_num个数,这里的sample_num设置为15sampled_dict = [self.db_infos[class_name][idx] for idx in indices[pointer: pointer + sample_num]]pointer += sample_numsample_group['pointer'] = pointersample_group['indices'] = indicesreturn sampled_dict

注意:OpenPcDet的实例库在self.db_infos
在这里插入图片描述
这里以car类为例,每一个dict内存储了一个groud truth标签,一张图片可能有多个标签,也可能只有一个(可能没有吗?)

在这里插入图片描述
从实例库中取出15个groud truth标签后,就可以进行碰撞检测了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
有效采样标签掩码(发生碰撞无效)

valid_mask = ((iou1.max(axis=1) + iou2.max(axis=1)) == 0)

将有效标签数据和当前样本的groud truth标签数据拼接则已完成了数据增强

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

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

相关文章

0基础学习VR全景平台篇第109篇:认识拼接软件PTGui Pro

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程!今天给大家讲解我们全景后期拼接软件PTgui pro,下面我们开始吧! (PTgui pro软件课程大纲) 1.PTGui这个软件是什么 发明人 &#xf…

【网络编程】从网络编程、TCP/IP开始到BIO、NIO入门知识(未完待续...)

目录 前言前置知识一、计算机网络体系结构二、TCP/IP协议族2.1 简介*2.2 TCP/IP网络传输中的数据2.3 地址和端口号2.4 小总结 三、TCP/UDP特性3.1 TCP特性TCP 3次握手TCP 4次挥手TCP头部结构体 3.2 UDP特性 四、总结 课程内容一、网络通信编程基础知识1.1 什么是Socket1.2 长连…

【15】基础知识:React扩展知识

一、setState 1. setState 更新状态的 2 种写法 对象式的 setState 语法:setState(stateChange, [callback]) (1)stateChange 为状态改变对象(该对象可以体现出状态的更改) (2)callback 是…

Python之旅----判断语句

布尔类型和比较运算符 布尔类型 布尔类型的定义 布尔类型的字面量: True 表示真(是、肯定) False 表示假 (否、否定) 也就是布尔类型进行判断,只会有2个结果:是或否 定义变量存储布尔类型…

天猫店铺商品评论数据采集,天猫商品评论数据接口,天猫API接口

天猫店铺商品评论数据接口可以获取到商品ID,商品标题,商品优惠券,商品到手价,商品价格,商品优惠价,商品sku属性,商品图片,商品视频,商品sku属性图片,商品属性…

【esp32】arduino-数码管

一、数码管类型 按发光二极管单元连接方式分为共阳型数码管和共阴型数码管, 区分:1、可通过查看数码管引脚类型 2、观察数码管点亮状态 3、查询数码管规格表 二、共阳型数码管 是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管 三、共…

Chrome跨域访问网络请求Cookies丢失的解决办法

为了保障网络安全,Chrome对跨域访问有一定的限制。一般分为三级: cookies带有“SameSite=Strict”时,只允许访问同一个域名下的网络请求;cookies带有“SameSite=Lax”时,允许访问同一个域名下的网络请求和同一个根域名下的网络请求;cookies带有“SameSite=None”时,允许…

ant中的environment属性

在ant的配置文件中&#xff0c;可以设置属性environment的值&#xff0c;设置的这个值就作为访问环境变量的前缀。例如声明了environment“env”&#xff0c;那么就可以通过env.<环境变量名称>来访问环境变量。 例如创建了一个Java工程&#xff0c;在工程目录下有一个bu…

HCIA --- VLAN实验配置

一、各交换机上配置&#xff1a; 1、各交换机上创建VLAN 2、交换机上的各个接口划分到对应的VLAN中 3、将与交换机、路由器相连的接口创建trunk干道 SW1&#xff1a; [sw1]vlan batch 2 to 3 批量创建VLAN2-3 [sw1]interface Ethernet0/0/1 单独将某个接口划分到对应…

信息保卫战:揭秘迅软DSE护航企业免受泄密之害

随着网络技术的发展&#xff0c;通过网络应用如网盘、网页、邮件、即时通讯工具传输分享文件变得越来越多&#xff0c;这些工具传输速度快&#xff0c;能够将大容量的文档快速传送给他人&#xff0c;在工作中受到许多人的青睐。 然而由这些传输工具引发的泄密事件也不断增多&am…

【农业生产系统模型】基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

SQL Server 修改、删除表中数据

SQL Server 修改、删除表中数据 修改 SQL Server修改表中数据的关键字是update&#xff08;更新;使现代化;向…提供最新信息;给…增加最新信息&#xff09; 修改表中信息 语法 update 表名 set 字段1值1&#xff0c;字段值2 where 条件1 and 条件2给表中所有人加工资&…

前后端交互—Ajax基础

Ajax 代码下载 URL地址 URL(全称是UniformResourceLocator)中文叫统一资源定位符&#xff0c;用于标识互联网上每个资源的唯一存放位置。 浏览器只有通过URL地址&#xff0c;才能正确定位资源的存放位置&#xff0c;从而成功访问到对应的资源。常见的URL举例: http://www.ba…

视频怎么压缩?视频太大这样处理变小

在当今时代&#xff0c;视频已经成为了我们日常生活中不可或缺的一部分&#xff0c;然而&#xff0c;视频文件往往非常大&#xff0c;给我们的存储和传输带来了很大的不便&#xff0c;那么&#xff0c;如何有效地压缩视频呢&#xff1f; 一、使用压缩软件 首先我们给大家分享一…

供应商工厂突发爆炸,日本丰田7座工厂停工 | 百能云芯

根据日本共同社的最新报导&#xff0c;日本著名汽车制造商丰田汽车近期遭遇了一系列生产中断问题。这次生产中断的根本原因在于供应商公司发生了一起爆炸事件&#xff0c;导致零部件供应链受到了严重干扰&#xff0c;迫使丰田暂时停工。截至目前&#xff0c;这一事件已经影响了…

【触想智能】工业级触摸显示器的分类与应用分享

工业级触摸显示器是具有触摸功能的工业显示器&#xff0c;常见的触摸方式有电容触摸和电阻触摸。它是应用在工业上的设备&#xff0c;和普通的显示器有着很大的区别。 工业级触摸显示器由液晶触摸屏、功能主板、外壳三部分组成&#xff0c;结构用料一般都采用铝合金材质&#x…

配电房无人值守方案

随着科技的不断进步&#xff0c;许多传统需要人工操作和维护的领域逐渐被自动化和智能化方案所替代。配电房作为电力供应的核心部分&#xff0c;也面临着同样的变革。 力安科技电易云配电室无人值守监控系统以智能物联数据采集和智能物联管控"为关键&#xff0c;通过加…

自动化测试必会之数据驱动测试

数据驱动测试 在实际的测试过程中&#xff0c;我们会发现好几组用例都是相同的操作步骤&#xff0c;只是测试数据的不同&#xff0c;而我们往往需要编写多次用例来进行测试&#xff0c;此时我们可以利用数据驱动测试来简化该种操作。 参数化&#xff1a; 输入数据的不同从而产…

Linux性能优化--性能工具:特定进程内存

5.0 概述 本章介绍的工具使你能诊断应用程序与内存子系统之间的交互&#xff0c;该子系统由Linux内核和CPU管理。由于内存子系统的不同层次在性能上有数量级的差异&#xff0c;因此&#xff0c;修复应用程序使其有效地使用内存子系统会对程序性能产生巨大的影响。 阅读本章后&…

【0day】复现海康威视综合安防管理平台信息泄露(内网集权账户密码)漏洞

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现