6DoF
文章平均质量分 94
Yao.Li
年轻人既要志存高远,又要脚踏实地。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PVN3D Full ONNX 导出与自定义算子说明
本文介绍了full_onnx全量模型导出流程,重点说明如何将PyTorch的PVN3D模型完整导出为包含自定义节点的ONNX模型。主要内容包括: full_onnx导出流程:通过FullModelExportWrapper固定模型输入输出,注册PointNet2的6个自定义算子(如FurthestPointSampling等)的symbolic映射,使导出器能将它们转为ai.onnx.contrib域下的自定义节点。 导出与执行的分离:导出阶段通过symbolic定义节点结构,运行阶段依赖ORT自定义算子库原创 2026-04-15 18:37:41 · 546 阅读 · 0 评论 -
PVN3D 中 SA 模块与 FP 模块详解
本文分析了PVN3D中Pointnet2MSG点云主干网络的结构与实现。重点解析了SA(Set Abstraction)和FP(Feature Propagation)模块:SA模块通过多尺度分组实现点云下采样和局部特征提取,包含中心点采样、邻域构建和特征聚合;FP模块则通过3NN插值将深层语义特征传播回高分辨率点集。文章详细说明了各模块的输入输出、配置参数及核心算子实现,包括furthest_point_sample、ball_query等关键操作,并提供了Python伪代码说明数据流。该网络通过4层SA原创 2026-04-15 17:30:58 · 445 阅读 · 0 评论 -
自定义数据集 Pose 生成与坐标系约定内部文档
下面按团队工程实现来讲,不只说“名字”,而是说每种方法的输入、输出、优缺点和适用场景。模型坐标系定义相机坐标系定义深度单位模型单位pose 最终输出方向最终统一输出T_cam_objcam_t_m2c用毫米还是米.ply用毫米还是米在自定义数据集中,pose 不是“一个随手记下来的 3x4 矩阵”,而是整个训练与评估链路里最核心的几何契约。对当前PVN3Dcam_R_m2ccam_t_m2c物体模型坐标系中的点如何变换到当前相机坐标系人工交互式标注。原创 2026-04-08 21:52:22 · 410 阅读 · 0 评论 -
基于 BOP 格式构建 PVN3D 自定义训练数据集技术文档
本文档详细说明了如何基于BOP格式为PVN3D构建自定义训练数据集。主要分为两种情况:A)使用现有LINEMOD类别时,只需准备BOP格式数据并转换;B)训练全新类别时,还需补充类别映射、模型文件、关键点文件等。文档分析了PVN3D训练所需的最小数据集结构,包括每帧样本的RGB、深度图、mask、位姿等,以及每个类别必须的3D模型和关键点文件。同时介绍了现有转换脚本的功能限制,指出测试集转换脚本不足以支持训练,而训练集转换脚本可以处理真实训练数据和PBR合成数据。最终提供了PVN3D训练目录的标准结构说明,原创 2026-04-08 22:00:31 · 441 阅读 · 0 评论 -
PVN3D ORT CUDA Custom Ops 实现与联调记录
本文介绍了在ONNX Runtime中实现GPU版本自定义算子(custom op)的过程。主要工作包括:1)新建独立目录实现6个PointNet2算子的CUDA版本;2)通过ONNX Runtime C++ API导出.so文件;3)在Python端注册并加载GPU版本的算子库;4)使用CUDAExecutionProvider运行完整模型。实现过程中保持了与原有CPU版本的并行工程,并确保与PyTorch原生权重的输出精度一致。关键点包括正确获取CUDA执行流、统一索引类型为int64_t,以及复用现有原创 2026-04-07 19:05:04 · 418 阅读 · 0 评论 -
PVN3D ORT C++ Custom Op 编译与联调记录
本文介绍了使用ONNX Runtime C++ API实现PVN3D模型中的6个PointNet2自定义算子(ThreeNN、BallQuery等),并编译为可加载的.so库。通过Python脚本调用该库运行完整ONNX模型,与PyTorch原生权重进行精度对比。重点说明了C++实现要点,包括算子语义对齐、注册方式以及Python侧加载方法。最终在Ubuntu 18.04容器环境中完成构建和测试,验证了ONNX Runtime C++自定义算子的可行性。原创 2026-04-07 18:03:38 · 546 阅读 · 0 评论 -
PVN3D ORT Custom Ops 实现记录
本文记录了将PVN3D模型ONNX文件在ONNX Runtime中实际运行的完整过程。通过分析两条实现路线(原生C++/CUDA和Python custom ops),最终选择使用onnxruntime-extensions的Python custom ops方案,解决了容器环境下的多个关键问题:包括动态max_pool2d导出问题、头文件缺失问题等。文中详细梳理了6个PointNet2自定义算子的实现要求,并提供了从Python custom ops过渡到官方C++ API的具体建议。最终实现了ONNX全原创 2026-04-02 19:20:26 · 333 阅读 · 0 评论 -
PVN3D Custom ONNX Op / TensorRT Plugin 设计说明
本文提出PVN3D点云网络中PointNet2自定义CUDA算子的部署方案,支持导出完整ONNX和TensorRT引擎。通过分析现有Python封装和C++/CUDA实现,提炼出Set Abstraction和Feature Propagation两类关键场景所需的算子集合,包括furthest_point_sampling、ball_query、group_points等。重点梳理了各算子的CUDA实现细节,如FPS的固定采样起点、ball_query的索引填充规则等,确保自定义算子与原始实现行为一致。该原创 2026-04-02 16:34:42 · 346 阅读 · 0 评论 -
PVN3D 原生 / ONNX 混合 / TRT 混合推理速度测试
本文对比测试了PVN3D模型在三种推理方式下的性能表现:原生PyTorch、ONNX Runtime混合推理和TensorRT混合推理。测试在特定容器环境下进行,使用LINEMOD ape数据集样本,固定输入尺寸为480×624。结果显示,TensorRT混合推理表现最优,其network_only平均耗时71.455ms(FPS 13.995),比原生PyTorch快1.75倍;而ONNX混合推理因缺少CUDA执行提供程序,性能最差(平均1451.208ms)。测试表明,将模型部分组件转换为TensorR原创 2026-04-02 14:53:56 · 391 阅读 · 0 评论 -
PVN3D ONNX / ORT / TRT / 原生 CUDA 测试配合说明
本文档说明PVN3D模型的混合部署测试链结构。当前部署采用分段方案:将完整PVN3D拆分为RGB骨干网络、PointNet2和融合头部三个部分。其中RGB骨干和融合头部可导出为ONNX/TensorRT模型,而PointNet2保留原生PyTorch实现。测试链通过ORT或TRT脚本将分段模型重新组合,形成两条混合推理路径:ORT版使用ONNX Runtime执行RGB骨干和融合头部,TRT版使用TensorRT引擎,两者均保留PointNet2的CUDA扩展实现。文档详细解释了这种拆分的原因、各模块的输入原创 2026-04-02 14:25:13 · 472 阅读 · 0 评论 -
PVN3D TensorRT Engine 转换与测试记录
本文记录了在pvn3d-dev容器中将ONNX模型转换为TensorRT引擎的流程与测试方法,重点说明了两部分标准算子图(rgb_backbone和fusion_head)的转换步骤。文档明确了当前环境的配置要求、转换目标、输入尺寸约束(480×624分辨率、4096点云数)及类别一致性原则,并提供了构建脚本的使用说明,包括dry-run验证和实际构建命令。特别强调了对静态ONNX模型不应附加动态shape参数,并给出了不同场景下的推荐构建命令。原创 2026-04-02 11:25:28 · 423 阅读 · 0 评论 -
PVN3D ONNX 转换与测试记录
本文记录了PVN3D模型在pvn3d-dev容器中的ONNX转换流程和测试方法。当前部署采用混合推理方案:将RGB主干网络和融合头导出为ONNX模型,同时保留PointNet2点云分支的原生CUDA实现。这种拆分方式是由于PointNet2依赖自定义CUDA算子,无法直接转换为标准ONNX格式。文档详细说明了导出脚本的使用方法、推荐参数配置以及环境验证步骤,重点解决了两类子图的ONNX转换问题,并提供了针对LINEMOD数据集和YCB数据集的不同导出命令。当前方案降低了第一版部署风险,为后续可能的Tenso原创 2026-04-01 21:50:03 · 886 阅读 · 0 评论 -
pvn3d-dev 容器内 TensorRT 安装步骤
本文档详细记录了在PVN3D容器环境中安装TensorRT 8.6.1的过程。首先确认了当前容器的运行状态和CUDA 11.3环境,然后通过宿主机下载安装包并复制到容器内。安装步骤包括解压到固定目录、配置环境变量、安装Python绑定包,并设置conda环境的持久化配置。整个过程注重保持原有训练环境稳定,确保TensorRT能与现有PyTorch/CUDA环境兼容,为后续模型部署做好准备。原创 2026-03-31 17:29:16 · 720 阅读 · 0 评论 -
PVN3D TensorRT 环境配置指南
本文为PVN3D模型在容器环境中的TensorRT部署提供配置方案,重点解决RGB Backbone和Fusion Head的ONNX/TensorRT导出问题,同时保留PointNet2的PyTorch原生执行。当前容器环境已具备PyTorch 1.10.0+cu113、Python 3.8.20等基础组件,但缺少ONNX/TensorRT相关工具链。建议补充安装ONNX 1.14.1、ONNX Runtime 1.16.3和TensorRT 8.6.1,采用分层部署策略:宿主机构建NVIDIA驱动,容器原创 2026-03-30 21:01:15 · 520 阅读 · 0 评论 -
PVN3D 训练与评估代码流程详解
本文解析了PVN3D模型的训练与评估流程,从外层入口到内层网络结构。主要内容包括: 整体流程:从RGB-D数据采样3D点,提取RGB和点云特征,通过DenseFusion融合后预测分割类别、关键点偏移和中心偏移,训练时监督这三个输出,评估时通过投票聚类恢复位姿。 代码层次:外层驱动(训练脚本、配置)、中间层(数据构造、损失计算)、内层(网络结构、姿态恢复)。 关键实现:数据集返回12K采样点及相关监督信号;RGB与点云特征通过choose张量对齐;网络包含RGB分支(PSPNet)、点云分支(PointNe原创 2026-03-30 20:11:57 · 555 阅读 · 0 评论 -
基于 BOP 格式构建 PVN3D 自定义训练数据集技术文档
本文介绍了如何为PVN3D准备训练数据集,重点分析了两种场景:复用已有LINEMOD类别和训练全新类别。对于LINEMOD已有类别,只需准备符合BOP格式的数据并转换到指定目录结构;对于新类别,还需补充关键点文件、3D模型等信息。文章详细列出了训练依赖的核心文件(RGB图像、深度图、mask、位姿标注等)和目录结构要求,并说明了现成脚本的转换能力边界,特别指出测试集转换脚本不足以支持训练,必须使用训练集转换脚本才能生成必要的训练文件。最后给出了一个完整的PVN3D训练目录结构示例。原创 2026-03-29 19:06:11 · 459 阅读 · 0 评论 -
PLY 模型、分割图、RGB 图、深度图之间的关系与坐标系变换详解
本文理清 6D 姿态中 PLY 模型与 RGB、深度、mask 的关联:PLY 自带模型局部坐标系,通过 cam_R_m2c/cam_t_m2c 变换到相机系,再经内参 K 投影到图像;深度验证三维距离,mask 为投影像素区域。明确坐标系关系,避开单位、位姿定义等误区。原创 2026-03-29 18:55:10 · 852 阅读 · 0 评论 -
LINEMOD 训练流程与实施细节
本文整理PVN3D在LINEMOD数据集上的训练流程,重点说明: 训练依赖:必须有train.txt及对应RGB/深度图/掩码等真实样本数据,可选renders合成数据增强效果。当前BOP测试数据因缺少train.txt无法直接训练。 目录结构要求: 必需:data/{obj_id}/train.txt及配套图像 可选:renders/{cls}/file_list.txt引导的合成数据 模型:models/obj_xx.ply用于几何监督 训练启动: 入口:train_linemod_pvn3d.py 工原创 2026-03-27 18:50:24 · 391 阅读 · 0 评论 -
PVN3D 模型训练 Bug 调试指南
本文针对PVN3D模型在LINEMOD数据集训练过程中出现的显存不足问题进行分析和修复。首先确认了主因是默认配置(batch size=24,采样点数12288)对7.62GiB显存过大,导致前向传播时CUDA OOM错误。同时发现了学习率调度器调用顺序不当和DenseFusion模块对采样点数假设过强的问题。修复方案包括:新增可覆盖训练参数的命令行选项、调整学习率调度顺序、改用自适应池化替代固定池化、确保数据集与模型配置一致。推荐的重试参数将batch size降至2、采样点数降至8192,并设置CUDA原创 2026-03-25 11:37:47 · 613 阅读 · 0 评论 -
LINEMOD BOP 转 PVN3D 测试实操指南
本文提供了从BOP格式LineMOD数据集到PVN3D测试的完整转换流程指南。主要内容包括:1)数据准备,需下载lm_models.zip和lm_test_all.zip;2)目录结构转换,使用仓库脚本将BOP格式转为PVN3D所需的Linemod_preprocessed结构;3)关键检查点,如验证ape类别转换结果和确认checkpoint存在;4)注意事项,如路径设置和类别映射关系。文档旨在帮助用户快速跑通LineMOD测试链路,特别推荐以ape类别作为最小验证对象。原创 2026-03-24 17:31:19 · 624 阅读 · 0 评论 -
python-pcl 安装排障流程
本文记录了在pvn3d-dev容器的pvn3dconda环境中安装python-pcl遇到的问题及解决方案。主要发现安装失败的根本原因是python-pcl源码与高版本Cython(3.2.4)不兼容,而非PCL缺失。通过将Cython降级至0.28.5后成功完成安装。文章详细描述了排查过程,包括版本检查、错误分析,并提供了标准化的安装流程建议:先检查Cython版本,确保PCL存在,降级Cython至0.28.5,重新安装并验证。最终解决方案已在实际环境中验证通过,为类似问题提供了可复用的处理方案。原创 2026-03-24 17:01:42 · 536 阅读 · 0 评论
分享