- 博客(121)
- 资源 (9)
- 收藏
- 关注
原创 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
原创 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
原创 基于 BOP 格式构建 PVN3D 自定义训练数据集技术文档
本文档详细说明了如何基于BOP格式为PVN3D构建自定义训练数据集。主要分为两种情况:A)使用现有LINEMOD类别时,只需准备BOP格式数据并转换;B)训练全新类别时,还需补充类别映射、模型文件、关键点文件等。文档分析了PVN3D训练所需的最小数据集结构,包括每帧样本的RGB、深度图、mask、位姿等,以及每个类别必须的3D模型和关键点文件。同时介绍了现有转换脚本的功能限制,指出测试集转换脚本不足以支持训练,而训练集转换脚本可以处理真实训练数据和PBR合成数据。最终提供了PVN3D训练目录的标准结构说明,
2026-04-08 22:00:31
441
原创 自定义数据集 Pose 生成与坐标系约定内部文档
下面按团队工程实现来讲,不只说“名字”,而是说每种方法的输入、输出、优缺点和适用场景。模型坐标系定义相机坐标系定义深度单位模型单位pose 最终输出方向最终统一输出T_cam_objcam_t_m2c用毫米还是米.ply用毫米还是米在自定义数据集中,pose 不是“一个随手记下来的 3x4 矩阵”,而是整个训练与评估链路里最核心的几何契约。对当前PVN3Dcam_R_m2ccam_t_m2c物体模型坐标系中的点如何变换到当前相机坐标系人工交互式标注。
2026-04-08 21:52:22
410
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 PVN3D ONNX 转换与测试记录
本文记录了PVN3D模型在pvn3d-dev容器中的ONNX转换流程和测试方法。当前部署采用混合推理方案:将RGB主干网络和融合头导出为ONNX模型,同时保留PointNet2点云分支的原生CUDA实现。这种拆分方式是由于PointNet2依赖自定义CUDA算子,无法直接转换为标准ONNX格式。文档详细说明了导出脚本的使用方法、推荐参数配置以及环境验证步骤,重点解决了两类子图的ONNX转换问题,并提供了针对LINEMOD数据集和YCB数据集的不同导出命令。当前方案降低了第一版部署风险,为后续可能的Tenso
2026-04-01 21:50:03
886
原创 Dify 本地环境忘记登录密码问题排障文档
摘要: 针对Dify本地环境中忘记密码的问题,建议优先使用内置CLI命令flask reset-password进行重置,而非直接修改数据库。该命令会更新密码哈希和salt值,并清除登录错误限制。在Docker环境下,执行路径为docker compose exec api flask reset-password,支持交互式或参数化输入(需满足8位字母+数字的密码规则)。此方案比页面重置更可靠,尤其适用于未配置邮件服务的本地环境。执行后数据库的password、password_salt字段会被安全更新,
2026-04-01 21:42:56
608
原创 pvn3d-dev 容器内 TensorRT 安装步骤
本文档详细记录了在PVN3D容器环境中安装TensorRT 8.6.1的过程。首先确认了当前容器的运行状态和CUDA 11.3环境,然后通过宿主机下载安装包并复制到容器内。安装步骤包括解压到固定目录、配置环境变量、安装Python绑定包,并设置conda环境的持久化配置。整个过程注重保持原有训练环境稳定,确保TensorRT能与现有PyTorch/CUDA环境兼容,为后续模型部署做好准备。
2026-03-31 17:29:16
720
原创 Dify 使用价值与 10 个进阶方向
本文明确 Dify 学习目标:从操作到落地 AI 产品,梳理 10 大递进方向,含产品地图、模型、RAG、Workflow、Agent、集成、调试等,区分 Dify/Coze/n8n 定位,给出学习顺序与三阶段项目,掌握后可独立设计交付可落地 AI 应用。
2026-03-30 21:09:24
408
原创 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
原创 PVN3D 训练与评估代码流程详解
本文解析了PVN3D模型的训练与评估流程,从外层入口到内层网络结构。主要内容包括: 整体流程:从RGB-D数据采样3D点,提取RGB和点云特征,通过DenseFusion融合后预测分割类别、关键点偏移和中心偏移,训练时监督这三个输出,评估时通过投票聚类恢复位姿。 代码层次:外层驱动(训练脚本、配置)、中间层(数据构造、损失计算)、内层(网络结构、姿态恢复)。 关键实现:数据集返回12K采样点及相关监督信号;RGB与点云特征通过choose张量对齐;网络包含RGB分支(PSPNet)、点云分支(PointNe
2026-03-30 20:11:57
555
原创 Dify 本地运行实操笔记
本文提供了Dify本地运行的两种方式:Docker Compose快速启动和源码开发模式。Docker方式适合快速验证环境,一键启动所有服务(前端、后端、数据库等);源码模式适合二次开发,需分别启动中间件容器和本地前后端服务。文章详细说明了两种方式的前置条件、启动步骤和常见问题排查方法,建议先使用Docker验证环境,再切换到源码模式进行开发调试。关键点在于理解Dify是由多个协作服务组成的系统,而非单一应用。
2026-03-29 20:57:42
381
原创 Dify Workflow 硬核解读(万字长文)
Dify Workflow是一个基于队列和事件驱动的图执行引擎,而非简单的顺序执行器。其核心执行闭环包括Graph(结构)、GraphRuntimeState(共享运行态)、GraphEngine(总调度)、Worker(节点执行)、Dispatcher+EventHandler(事件推进)和CommandProcessor(外部控制)。模块采用分层设计,入口通过WorkflowEntry装配引擎,Graph负责图结构表示,GraphRuntimeState管理运行时状态,节点通过事件系统异步推进。外部控制
2026-03-29 20:35:53
304
原创 Dify 请求主链路梳理
《Dify请求处理链路分析》摘要: 本文系统剖析了Dify系统的请求处理主链路。首先指出Dify采用多入口分流架构,通过不同API前缀(/console/api、/api、/v1等)将请求分类到控制台、Web应用和开放API等不同业务场景。前端通过统一封装层实现请求分流,后端则通过Flask蓝图机制实现路由分发。控制器层承担参数校验、鉴权和上下文注入等重要职责,服务层负责业务编排,协调数据库、AI模型、工作流引擎等核心组件。文章详细分析了控制台API、Web API和Service API三类主入口的特点,
2026-03-29 20:25:56
382
原创 Dify 宏观学习知识架构与学习路线
Dify是一个面向LLM应用开发的开源平台,集成了模型接入、应用编排、知识库/RAG、Agent、工作流等核心功能。本文档提供了学习Dify的系统方法:首先从产品能力、系统运行、业务域等六个层次建立宏观认知;然后按照部署、核心能力分专题、问题驱动等阶段逐步深入。重点推荐先理解工作流引擎、模型运行时和RAG三大核心模块,并通过实践任务反向学习代码结构。学习路径建议从README文档入手,逐步掌握系统架构和关键模块,最终实现定制开发能力。
2026-03-29 20:22:50
434
原创 基于 BOP 格式构建 PVN3D 自定义训练数据集技术文档
本文介绍了如何为PVN3D准备训练数据集,重点分析了两种场景:复用已有LINEMOD类别和训练全新类别。对于LINEMOD已有类别,只需准备符合BOP格式的数据并转换到指定目录结构;对于新类别,还需补充关键点文件、3D模型等信息。文章详细列出了训练依赖的核心文件(RGB图像、深度图、mask、位姿标注等)和目录结构要求,并说明了现成脚本的转换能力边界,特别指出测试集转换脚本不足以支持训练,必须使用训练集转换脚本才能生成必要的训练文件。最后给出了一个完整的PVN3D训练目录结构示例。
2026-03-29 19:06:11
459
原创 PLY 模型、分割图、RGB 图、深度图之间的关系与坐标系变换详解
本文理清 6D 姿态中 PLY 模型与 RGB、深度、mask 的关联:PLY 自带模型局部坐标系,通过 cam_R_m2c/cam_t_m2c 变换到相机系,再经内参 K 投影到图像;深度验证三维距离,mask 为投影像素区域。明确坐标系关系,避开单位、位姿定义等误区。
2026-03-29 18:55:10
852
原创 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
原创 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
原创 PLY 文件格式与 PVN3D 中的使用说明
PLY 是一种通用 3D 数据格式,理论上可以存储顶点坐标、法线、颜色、面片拓扑、纹理及其他自定义属性。一个 .ply 文件通常由文件头和数据区组成,文件头定义顶点数、属性类型、面片数 以及存储格式,数据区则保存具体的顶点和面片内容。 在当前 PVN3D 项目中,.ply 并没有被当作完整网格资源来使用,而主要被当作物体几何点集的来源。代码实际核心读取的几乎只有顶点坐标 x y z,没有依赖法线、颜色、材质或面片拓扑。 LINEMOD 路径下会从 models/obj_xx.ply 中读取顶点
2026-03-25 10:46:24
446
原创 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
原创 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
原创 Python 性能优化全攻略:从简单代码改进到高效并行化
Python 性能优化不仅仅是为了提升执行速度,更是为了增强程序的可扩展性和响应能力。本文深入探讨了如何通过优化代码结构、使用高效工具如 numba 和并行化处理,显著提升 Python 程序的性能,帮助你应对复杂的计算任务。无论是简单的函数优化,还是复杂的计算密集型任务,本文提供的优化策略将使你的代码更加高效、可维护。
2024-12-27 19:59:47
2656
原创 掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用
在这篇文章中,我们将带你快速掌握 Docker 的常用命令和实战技巧,帮助你高效构建与管理容器化应用。从前台交互启动到提交镜像,从容器管理到 Dockerfile 配置,全面覆盖 Docker 的核心操作。无论你是 Docker 新手还是有一定经验的开发者,这里都有你需要的实用知识,助你提升开发效率和运维能力。立即学习,让 Docker 成为你的开发神器!#Docker #容器化 #Dockerfile #DevOps #持续集成
2024-12-26 16:31:40
2589
原创 RV1126平台下的MobileSeg量化指南:高效部署低算力硬件
MobileSeg系列模型采用编解码架构,并以轻量级模型作为骨干网络,专为低算力硬件(如BPU、NPU、ARM CPU等)设计。这使得MobileSeg在边缘设备和移动端应用中表现出色,具备高效能和灵活性。本文将以MobileSeg分割模型为例,详细讲解如何在RV1126平台上进行模型量化操作,最大化发挥模型的性能优势。
2024-12-18 23:10:04
2301
原创 深入解析深度学习量化:概念、方法与应用全揭秘
模型量化是深度学习模型优化中的关键技术,旨在将浮点参数和操作(如FP32)转换为定点表示(如I8或U8),通过低精度数值域的表示来显著降低内存占用,实现模型压缩和推理加速。具体而言,FP32占用4字节,而I8或U8仅占用1字节,从而内存占用降低至原来的四分之一。同时,硬件设备的整型运算效率通常高于浮点运算,这进一步提升了推理性能。然而,量化在带来显著优势的同时,也会导致一定的模型精度损失,需要在性能与精度之间找到平衡。
2024-12-16 23:56:27
3074
原创 一步步搭建 RV1126 深度学习环境,轻松实现边缘推理
随随着瑞芯微(Rockchip)芯片在嵌入式领域的广泛应用,越来越多的板卡厂商开始适配其系列芯片,尤其是 RV1126。凭借其高性价比和强大的 AI 加速能力,RV1126 已成为众多边缘计算设备的首选。为了使深度学习模型能够在 RV1126 平台上高效运行,各大厂商纷纷推出了针对这一芯片的适配方案。本文将带领大家一步一步完成 RV1126 芯片的深度学习环境搭建。通过详细的操作步骤,我们将指导你如何在 RV1126 平台上配置并优化深度学习开发环境,为后续的 AI 模型部署和推理提供坚实的基础。
2024-12-15 21:13:52
1725
原创 RV1126模型转换秘籍:MobileNetV2高效运行实战指南
在边缘计算和嵌入式设备中,如何高效地运行深度学习模型是一个关键问题。RV1126 芯片凭借其强大的 AI 加速能力,成为许多嵌入式设备和边缘计算应用的首选平台。为了使模型能够在 RV1126 上高效运行,我们需要将原始深度学习模型转换为 .rknn 格式。本文将通过一个具体的例子——MobileNetV2——一步步引导你完成从模型转换到推理部署的全过程。
2024-12-15 18:01:54
1217
原创 RV1126预编译模型:减少加载时间,提升推理速度的最佳实践
本文将以 MobileNetV2 模型为例,详细介绍如何在 RV1126 平台上完成预编译工作,帮助开发者高效地部署深度学习模型。通过这篇教程,您将了解如何在 RV1126 上进行环境配置、模型编译、以及如何将预编译后的模型进行推理操作。
2024-12-15 17:27:03
2886
2
原创 Python一看就懂系列(五)
专栏: python轻奢入门系列作者: 豆破苍琼【异常】异常介绍异常通常分为两类:语法引出的异常:语法引出的异常:由于违反了编程语言的规则而导致的编译错误,也被称为语法错误。运行时引出的异常:运行错误是代码能够顺利的编译通过,但是在程序运行过程中会产生的错误,称为运行错误。处理异常的语法与Python异常处理相关的关键字有:try、except、else、finally等,处理异常的语法如下:其中,try语句只有一个,会首先被执行。except语句可以有多个,else和fina.
2020-12-09 23:12:25
301
原创 Python一看就懂系列(四)
专栏: python轻奢入门系列作者: 豆破苍琼【函数】基本知识定义函数可以理解为创建一个具有某种用途的工具。使用def关键字来实现。调用def introduce(): name = input("What's your name?") print("Hello,my name is {}".format(name))introduce()注意:每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用的结束。当然如果函数执行到return处.
2020-12-09 22:30:23
397
1
原创 Python一看就懂系列(三)
专栏: python轻奢入门系列作者: 豆破苍琼【字符串】字符串介绍字符串格式被单引号或者双引号括起来的数据就是字符串。字符串输出"""字符串输出"""def printStream(nums): import time for i in range(nums): print('正在持续输出{}次'.format(i)) if i != nums-1: print("等待1秒后...") tim.
2020-12-03 22:49:24
442
原创 Python一看就懂系列(二)
专栏: python轻奢入门系列作者: 豆破苍琼【输入和输出】普通输出生活中的输出软件中的输出python中的输出格式化输出什么是格式化在程序中,看到了%这样的操作符,就是python的格式化符号。常用的格式化符号换行输出在输出时候,如果存在 \n 那么这个符号就代表着换行。输入input()函数的使用input()函数是输入函数,当程序运行后,它会显示在屏幕上等待你的输入。用户通过input函数输入的值,后台得到的是对应的字符串,所以根据具体需求可能对其.
2020-12-03 22:48:02
259
原创 Python一看就懂系列(一)
专栏: python轻奢入门系列作者: 豆破苍琼【Python注释】注释的引入注释就是对代码的解释和说明,其目的就是为了让人们能够更加轻松的了解代码,提高代码的阅读性。未注释已注释注释分类单行注释以#开头,#右边的所有内容都当做对代码的解释说明,而不是真正要执行的程序,起辅助说明的作用。多行注释【标识符和关键字】标识符引入开发人员在程序中自定义的一些符号或者名称标识符是程序员自己编写定义的,example: 变量名、函数名、类名等。标识符的规则标识符是.
2020-12-03 22:44:13
188
知识领域: 超分辨率模型权重 fsrcnn 关键技术词: fsrcnn x2 x3 x4
2025-03-15
ESRI.ArcGIS.Version.dll
2017-07-16
resnet-50-resource.txt
2020-02-25
Package Control.zip
2020-03-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅