CenterPoint 源码流程解读(一)

这篇具有很好参考价值的文章主要介绍了CenterPoint 源码流程解读(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CenterPoint 源码流程解读(一)

参考
1.论文速读 – CenterPoint
2.激光雷达点云的3D目标检测入门(CenterPoint源码分析)
3.CenterPoint 在mmdetection3d中的实现
4. centerpoint 原文完整翻译

本文使用配置页
mmdetection3d工程中的configs/centerpoint模型:
centerpoint_02pillar_second_secfpn_4x8_cyclic_20e_nus.py

一. 数据处理部分(主要针对点云) – train_pipeline 流程

1. LoadPointsFromFile

1.1 功能: 从文件中加载点云。

1.2 初始化参数

  • coord_type: 坐标系类型,可选’LIDAR’,‘DEPTH’,‘CAMERA’
  • load_dim: 数据加载维度,默认是6,nuscenes数据集设置为5
  • use_dim: 需要使用的维度,默认[0,1,2],只用xyz
  • shift_height: 是否需要使用高度平移,默认false
  • use_color: 是否需要使用颜色特征,默认false
  • file_client_args:(可选参数)文件客户端配置,默认使用disk方式,即给定文件路径,直接进行读取。

1.3 类内函数(以下所有均省略__init__)

  • _load_points: 加载点云数据
  • __call__: 从文件中获取点云数据的回调函数,结果为包含点云数据的dict
  • __repr__: 返回模块描述字符串

2. LoadPointsFromMultiSweeps

2.1 功能: 加载多帧点云数据

2.2 初始化参数

  • sweeps_num: 帧数,默认10
  • load_dim: 默认5
  • use_dim: 默认[0, 1, 2, 4],4维度对应时间戳的差值
  • time_dim: 每一个点的时间戳维度,默认4
  • file_client_args: 同上
  • pad_empty_sweeps: 当点云为空时,是否重复关键帧,默认false
  • remove_close: 移除最近点,默认false
  • test_mode: 如果为true,则不会随机采样,只选择最近的N帧,默认false

2.3 类内函数

  • _load_points: 加载点云数据
  • _remove_close: 移除原点位置一定半径点的所有点
  • __call__: 从文件中获取点云数据的回调函数,结果为包含点云数据的dict
  • __repr__ : 返回模块描述字符串

3. LoadAnnotations3D

3.1 功能: 加载3D标注框,将实例掩码和点云语义掩码封装到关联字段中。

3.2 初始化参数

  • with_bbox_3d: 是否加载3D box,默认为true
  • with_label_3d: 是否加载3D box标签,默认为true
  • with_attr_label: 是否加载属性标签,默认为false
  • with_mask_3d: 是否加载点云3D 实例掩码,默认是false
  • with_seg_3d: 是否加载点云3D 语义掩码,默认是false
  • with_bbox: 是否加载2D box,默认false
  • with_label: 是否加载2D 标签,默认false
  • with_mask: 是否加载2D 实例掩码,默认是false
  • with_seg: 是否加载2D 语义掩码,默认是false
  • with_bbox_depth: 是否加载2.5D box,默认false
  • poly2mask: 是否转换多边形标注到二进制掩码,默认true
  • seg_3d_dtype: 3D 语义掩码类型,默认int64
  • file_client_args

3.3 类内函数
以下处理函数的具体过程均在mmdet3d.CustomDataset类中进行的

  • _load_bboxes_3d: 加载3D box标注,返回gt_bboxes_3d、bbox3d_fields两个key
  • _load_bboxes_depth: 加载2.5D box标注,返回center2d、depths两个key
  • _load_labels_3d: 加载标签标注,返回gt_labels_3d的key
  • _load_attr_labels: 加载标签属性,返回attr_labels的key
  • _load_masks_3d: 加载3D掩码标注,返回pts_instance_mask、pts_mask_fields两个key
  • _load_semantic_seg_3d: 加载3D语义分割标注,返回pts_semantic_mask、pts_seg_fields两个key
  • __call__: 返回多种类型的标注结果中的一种
  • __repr__ : 返回模块描述字符串

4. ObjectSample

4.1 功能: 采样真值(gt)物体到数据中

4.2 初始化参数

  • db_sampler (dict): 基准数据采样器的配置
  • sample_2d (bool): 是否拷贝2D图像的补丁到图像上,如果是多模态的裁剪-粘贴,应该设置为ture,默认false
  • use_ground_plane (bool): 是否使用地平面去调整3d标签,默认false

4.3 类内函数

  • remove_points_in_boxes(静态函数):移除采样的bbox中的点云
  • __call__: 采样真值物体到数据中,返回结果包含gt_bboxes_3d、gt_labels_3d、points三个key
  • __repr__: 返回模块描述字符串

5. GlobalRotScaleTrans

5.1 功能: 对3D场景应用执行全局坐标系下的旋转、缩放和平移

5.2 初始化参数

  • rot_range (list[float]): 旋转角度范围,默认[-0.78539816, 0.78539816] (close to [-pi/4, pi/4])
  • scale_ratio_range (list[float]): 缩放尺度因子 ,默认[0.95, 1.05]
  • translation_std (list[float]): 平移噪声的标注差,通过添加噪声方式随机平移一个场景,噪声方式从高斯分布中采样,默认[0, 0, 0]
  • shift_height (bool): 是否平移高度值,默认false

5.3 类内函数

  • _trans_bbox_points: 平移bbox和点云
  • _rot_bbox_points: 旋转bbox和点云
  • _scale_bbox_points: 缩放bbox和点云
  • _random_scale: 随机设置尺度因子
  • update_transform: 更新变换矩阵
  • __call__:旋转、缩放、平移bbox和点云
  • __repr__

6. RandomFlip3D

6.1 功能:随机翻转点云和bbox。
注意:如果输入字典中包含“flip”关键字,则将使用标志。否则,它将由init中指定的比率随机决定。

6.2 初始化参数

  • sync_2d (bool, optional):是否应用翻转到2D图像上。如果为真,则应用3D中的相关翻转到2D图像上,如果false,则决定是否随机独立旋转2D图像。默认为真。
  • flip_ratio_bev_horizontal (float, optional): 水平方向翻转比例,默认0.0
  • flip_ratio_bev_vertical (float, optional): 垂直方向翻转比例,默认0.0
  • **kwargs: 可变键值对参数

6.3 类内函数

  • random_flip_data_3d: 随机翻转3d数据
  • update_transform: 更新变换矩阵
  • __call__: 翻转点云(bbox3d_fields),同时翻转二维图像和它的标注
  • __repr__

7. PointsRangeFilter

7.1 功能: 通过范围过滤点云

7.2 初始化参数

  • point_cloud_range (list[float]): 点云范围

7.3 类内函数

  • __call__: 通过范围过滤点云
  • __repr__

8. ObjectRangeFilter

8.1 功能:通过范围过滤障碍物

8.2 初始化参数

  • point_cloud_range (list[float]): 点云范围

8.3 类内函数

  • __call__: 通过范围过滤点云
  • __repr__

9. ObjectNameFilter

9.1 功能:根据类别名字过滤真值障碍物

9.2 初始化参数

  • classes (list[str]): 训练需要保留的类别名列表

9.3 类内函数

  • __call__: 通过名字过滤障碍物
  • __repr__

10. PointShuffle

10.1 功能: 对输入点云打乱顺序(洗牌)

10.2 初始化参数:无

10.3 类内函数

  • __call__: 打乱点云排序
  • __repr__

11. DefaultFormatBundle3D

11.1 功能: 默认格式化打包3D信息

注意: 它简化了格式化体素(voxel)通用字段的pipeline,主要包含"proposals", “gt_bboxes”, “gt_labels”, “gt_masks” and “gt_semantic_seg”。字段类型转换如下:

    - img: (1)transpose, (2)to tensor, (3)to DataContainer (stack=True)
    - proposals: (1)to tensor, (2)to DataContainer
    - gt_bboxes: (1)to tensor, (2)to DataContainer
    - gt_bboxes_ignore: (1)to tensor, (2)to DataContainer
    - gt_labels: (1)to tensor, (2)to DataContainer

11.2 初始化参数

  • class_names: 种类列表
  • with_gt(bool): 是否使用真值,默认true
  • with_label(bool): 是否使用标签,默认true

11.3 类内函数

  • __call__: 执行变换和格式化通用字段,放入[results]
  • __repr__: 返回描述模块的字符串

12. Collect3D

12.1 功能: 从有关特定任务的dataloader中收集数据

注意
1)此类通常作为data loader pipeline的最后阶段,典型的关键字集合,如"img", “proposals”, “gt_bboxes”, “gt_bboxes_ignore”, “gt_labels”, “gt_masks”
2)img_meta总是被插入的数据项,内容依赖于meta_keys,默认包含:

- 'img_shape': 网络中输入图像尺寸,类型 tuple ,维度(h, w, c). 注意图像在
          右/下可能是0扩充(pad)
- 'scale_factor': 预处理尺度
- 'flip': 图像是否翻转
- 'filename': 图像文件名路径
- 'ori_shape': 图像原始形状,tuple (h, w, c)
- 'pad_shape': 扩充后图像尺寸
- 'lidar2img': lidar 到 图像旋转矩阵
- 'depth2img': depth 到图像旋转矩阵
- 'cam2img': 相机坐标系到图像坐标洗旋转矩阵
- 'pcd_horizontal_flip': 点云是否水平翻转
- 'pcd_vertical_flip': 点云是否垂直翻转
- 'box_mode_3d': 3D box 模式
- 'box_type_3d': 3D box 类型
- 'img_norm_cfg': 正则化信息dict
    - mean: 每个channel平均值
    - std: 每个channel标准差
    - to_rgb: 是否由bgr转换为rgb
- 'pcd_trans': 点云旋转矩阵
- 'sample_idx': 样本关键帧索引
- 'pcd_scale_factor': 点云尺度因子
- 'pcd_rotation': 点云旋转
- 'pts_filename': 点云文件路径名

12.2 初始化参数

  • keys (Sequence[str]): 收集的关键字
  • meta_keys (Sequence[str], optional): 主要关键字,被用来转换到mmcv.DataContainer,存放在data[img_metas]中。

12.3 类内函数

  • __call__: 收集results中的关键字
  • __repr__: 返回描述模块的字符串

未完待续,CenterPoint 源码流程解读(二)文章来源地址https://www.toymoban.com/news/detail-474096.html

到了这里,关于CenterPoint 源码流程解读(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【三维目标检测】CenterPoint(一)

    本文为博主原创文章,未经博主允许不得转载。 本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/124017716”。         CenterPoint是一种anchor free的三维目标检测算法模型,发表在CVPR 2021,论文名称为《Center-based 3D Objec

    2024年02月08日
    浏览(9)
  • CenterPoint 工程复现

    CenterPoint 工程复现

    注意 :本文中使用版本:BEVerse工程下的mmdet3d ( MMDet3d v0.17.3 )版本,MMDetection3D中其他版本的使用 大同小异 。 欢迎有疑问的同学在下方留言,如果觉得有用的话,可以点赞+收藏,再次表示感谢! 参考 : 1. nuscenes官方使用举例 2. CenterPoint 论文速读 3. BEVerse 论文速读 详细参考

    2023年04月27日
    浏览(15)
  • FFmpeg编解码流程解读--视频解码1

    FFmpeg编解码流程解读--视频解码1

    首先我们知道ffmpeg是一个开源的音视频编解码,封装和解封装的工具。具体的下载方式这里不多赘述(感兴趣百度自行下载源码)。这里主要将编解码。ffmpeg音视频编解码依赖libavcodec。其为我们提供一套架构,其中包含了编解码器。这里主要介绍我们常用的一些API接口去处理

    2023年04月08日
    浏览(6)
  • 汽车架构-工作流程 以及相关协议解读

    汽车架构-工作流程 以及相关协议解读

    全车架构(E/E)  车载测试阶段: 台架测试 HIL测试(硬件在环测试) ADAS智能辅助驾驶测试 OTA测试(远程升级测试) 测试工具: Can协议工具:Canoe Pcan Zcanpro 辅助工具:万用表(测试电压 电流 电路通断) 电源 示波器(设备信号波分析) 编程语言:Cpla Python ADb HIL硬件在环测试

    2024年02月05日
    浏览(10)
  • 无人机电力巡检系统运行流程全解读

    无人机电力巡检系统运行流程全解读

    随着电力行业体系不断完善,保障电网运营的安全成为至关重要的任务。传统的人工巡检方式在面对电力设备广泛分布和复杂工况时显得效率低下,为了解决这一难题,无人机电力巡检系统应运而生,以智能化的运行流程,为电网安全保驾护航。 一、计划制定 电力巡检系统

    2024年01月25日
    浏览(9)
  • 数据仓库—ETL技术全景解读:概念、流程与实践

    ETL(Extract, Transform, Load)是数据仓库和数据集成领域的重要概念,用于描述将数据从来源系统抽取、转换和加载到目标系统的过程。本文将介绍ETL的概念、作用和主要过程。 概念 ETL是指将数据从一个系统中抽取出来(Extract)、经过清洗、转换和整理(Transform)、最终加载到

    2024年04月13日
    浏览(21)
  • 3D检测:从pointnet,voxelnet,pointpillar到centerpoint

    3D检测:从pointnet,voxelnet,pointpillar到centerpoint

    记录centerpoint学习笔记。目前被引用1275次,非常高。 地址:Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021)_哔哩哔哩_bilibili 作者解释。 CenterPoint 是一种用于激光点云的3D目标检测与跟踪算法框架

    2024年04月22日
    浏览(10)
  • Mask RCNN网络结构以及整体流程的详细解读

    Mask RCNN网络结构以及整体流程的详细解读

    Mask RCNN是在Faster RCNN的基础上增加了mask head用于实例分割的模型。 总体来说,Mask RCNN网络结构可以分为: BackBone(ResNet+FPN) — RPN网络(Region Proposal Network) — ROI Head(ROIAlign + cls head + bbox head + mask head) 整体网络结构如下(来自原论文https://arxiv.org/pdf/1703.06870.pdf): Backbone主要由R

    2024年02月13日
    浏览(6)
  • 【Qt运行流程详解】从启动到事件循环的深入解读

    【Qt运行流程详解】从启动到事件循环的深入解读

    在探索 Qt 框架的神秘踪迹之前,让我们先来简要了解一下 Qt 以及为何深入其底层运行机制对于开发者至关重要。正如哲学家亚里士多德曾言:“知识的根源在于对事物的好奇。” 对于任何一名软件开发者而言,对所使用技术的好奇心及深入理解,是驱动其创新和提升技能的

    2024年01月23日
    浏览(10)
  • 无人机巡检如何做到实时识别,从数据到模型全流程解读

    无人机巡检如何做到实时识别,从数据到模型全流程解读

    在数字化和自动化飞速发展的今天,AI识别算法正在加速进入行业生产系统。 基于巡检数据的智能开发,识别算法突破性进展的核心驱动力在于需求——从全天候巡视的平安城市,到潮汐变化的交通网络,从广阔的水域,到繁忙的街道, 我们需要快速而准确的识别技术来处理

    2024年02月04日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包