Rerun 点云渲染性能优化:120万点从 8fps 拉到 35fps
Rerun 点云渲染性能优化120万点从 8fps 拉到 35fps【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun120 万点/帧、8fps、内存占用 1.2GB——这是自动驾驶城市 LiDAR 数据在 Rerun 上做实时可视化时的典型状态。本文按数据链路定位点云渲染的卡点并给出可组合的降采样、批量传输与渲染参数调优手段目标是把大点云序列的帧率拉回可交互水平。3 分钟拿到最明显的提升只改两个地方不动数据本身改 flush 阈值 → 得到更少的传输次数和更低的 CPU。Rerun SDK 默认按RERUN_FLUSH_NUM_BYTES1MiB或RERUN_FLUSH_TICK_SECS0.2s网络 sink 为 8ms触发微批。单帧 20MB 以上的点云如果按行逐条 log会产生大量小消息元数据开销吃掉大部分带宽。把字节阈值调大后SDK 用后台线程攒成更大的 Arrow 列式 chunk 再发送import os os.environ[RERUN_FLUSH_NUM_BYTES] 8388608 # 8 MiB攒够再发 os.environ[RERUN_FLUSH_TICK_SECS] 0.5 import rerun as rr rr.init(lidar_demo) rr.spawn()改点半径 → 得到更少的 overdraw。大点云默认半径在远距离渲染时每个像素被多次着色。把半径从世界坐标米级改到 UI 像素级rr.Points3D的radii_unitsrr.RadiusUnits.Pixels百万点场景下 GPU 填充率通常立刻降一档。两项改完120 万点/帧的场景实测帧率从 8fps 到 20fps 上下内存写入抖动也明显变小。后面的内容解决剩下的差距。一条数据链路上的三个卡点点云进 Rerun Viewer 的路径是采集编码 → SDK 攒批传输 → Viewer 存储chunk 压缩与查询→ GPU 渲染。三个环节各有各的量级。采集与编码。一帧 LiDAR 点云按 f32 三通道坐标加颜色算100 万点约 20MB如果中间某个环节把坐标存成了 f64直接翻倍到 40MB。这一环的瓶颈不在计算在数据体积——后面所有传输和渲染成本都按这个体积放大。传输与存储。SDK 侧的瓶颈是消息粒度逐行 log 时每条消息都带时间戳、entity path、row id 等控制列100 万行就是 100 万份元数据。Viewer 侧对应的是 chunk 机制——所有数据最终都压成 Arrow 列式 chunk 存储和查询但频繁到达的小 chunk 会触发压缩compaction和合并CPU 和内存开销随到达频率上升。传输延迟在这里是毫秒到百毫秒级但 CPU 占用能到双核满。GPU 渲染。这一环是帧率的直接决定者。百万点每帧都要过坐标变换、着色和深度测试点半径过大时 overdraw 会让填充率成为瓶颈——4096 宽屏幕上 10 个像素半径的点画 100 万个光栅化开销是 6000 万像素级。渲染管线在 crates/viewer/re_renderer/ 里点云走实例化渲染路径但 overdraw 和逐点属性计算它管不了。按你的场景选优化手段单帧数据量大50 万点这一档优先砍数据量其次调渲染。三个可组合手段体素网格降采样。均匀分布的点云城市 LiDAR适合按体素格保留单点0.05m 分辨率通常能把 120 万点压到 20–30 万空间结构几乎不变import numpy as np def voxel_downsample(points, colors, voxel_size0.05): pts np.asarray(points) grid np.round(pts / voxel_size).astype(np.int64) keys grid[:, 0] * 1_000_000_000 grid[:, 1] * 1_000_000 grid[:, 2] first_idx np.unique(keys, return_indexTrue)[1] return pts[first_idx], np.asarray(colors)[first_idx]坐标精度。确认整条链路是 f32。Rerun 的Position3D本身是 f32瓶颈常出现在你的数据源或中间转换层默认用了 double。点半径与着色。半径切到像素单位如果不需要逐点光照用point_shadingrr.PointShading.Flat关掉逐点明暗计算着色路径变短。序列长、内存持续攀升1 小时 10Hz 的数据是 36 万帧全量进内存 Viewer 迟早爆。手段时间轴分块、按需加载。不要一次性把整条序列灌进去按 100 帧一块用户滑到哪个区间才发哪块for start in range(0, total_frames, 100): pts, cols load_chunk(start, start 100) for i, (p, c) in enumerate(zip(pts, cols)): rr.set_time(frame, start i) rr.log(lidar, rr.Points3D(p, colorsc))服务端按需取数。新版 server 注册 RRD 时不再把整文件 eager load 进内存而是按 manifest 按需读 chunk——如果你的部署方式是从本地文件切到rerun server托管大文件这一步是免费的。序列级预处理。用 crates/store/re_chunk/ 配套的 chunk 处理 APIPython 侧LazyChunkStream离线把整条序列降采样一遍落盘后再可视化内存和传输量同时降一个数量级。交互频繁高频缩放/旋转这一档瓶颈在每帧 GPU 重绘成本。优先降半径和关掉标签渲染show_labelsFalse若同时命中单帧大和交互频繁两个场景先做体素降采样再调半径——降采样是乘法收益调参是加法收益。LOD 按视距切换近处高精度、远处低分辨率网格可以做但实现成本高于前两项留给确实有产品化需求的场景。关键参数怎么调参数默认值建议值预期收益副作用RERUN_FLUSH_NUM_BYTES1 MiB4–16 MiB传输次数降 4–16 倍CPU 明显下降单条消息变大首帧可见延迟略增RERUN_FLUSH_TICK_SECS0.2s网络 sink 0.008s0.2–0.5s与上行配合减少小批实时性场景下时间戳滞后增大点半径单位世界坐标UI 像素overdraw 大幅下降点大小随视距不缩放远景点变平point_shading逐点着色Flat着色路径变短丢失明暗层次--server-memory-limit无限制按机器设 1–4GB内存封顶防 OOM超限后远端 chunk 需回源重读拿不准时flush 两参数从 4 MiB / 0.5s 起步半径换像素单位、着色换 Flat这两个是纯收益项。怎么验证你的优化生效了仓库里自带基准入口 tests/rust/log_benchmark/先在服务端开 profiler 挂 Viewer再跑日志侧pixi run rerun-release --profile --connect cargo run --release -p log_benchmark -- --connect --num-entities 10 --num-time-steps 100000在自己数据集上复现优化前 vs 优化后的参考数字120 万点/帧城市场景同机同 GPU配置帧率峰值内存首帧延迟原始 120 万点、f32、默认 flush8 fps1.2 GB~400 msflush 调 8 MiB 像素半径20 fps0.9 GB~350 ms体素降采样至 25 万点35 fps0.3 GB~200 ms再关 Flat 着色38 fps0.3 GB~200 ms数字会随 GPU 和点云分布浮动建议固定同一份 rrd、同一段 10 秒回放窗口跑前后对比只改一处参数看一处收益避免多变量混在一起对不上。近期版本与性能相关的变更点云与线条渲染提速Apple Silicon — 特定硬件路径下点/线渲染提速 — 默认开启查询不再拆分/合并 chunk — 查询直接读原始 chunk省掉压缩开销 — 默认开启Server 按需加载 RRD — 注册时只读 manifestchunk 按请求取单文件可服务的数据量大幅提升 — 默认开启容易踩的坑症状调大 flush 阈值后首帧明显变卡。原因字节阈值和可见延迟是同一枚硬币的两面攒批攒得越大首包越晚。修复直播场景把 tick 阈值和字节阈值同时调大录盘场景可以激进些。症状点云放大后变成一片实心面细节糊掉。原因世界坐标半径在大点云上 overdraw 失控不是渲染 bug。修复半径切到像素单位。症状传输体积比预期大一倍CPU 解码占比高。原因上游转换层把坐标升到了 f64SDK 序列化时原样放大。修复在 log 之前显式astype(np.float32)检查中间件类型。症状升级到新版 Viewer 后旧 rrd 文件没变快。原因新存储/查询优化作用在 chunk 组织上旧文件的数据布局不变。修复用 chunk 处理管线重新落盘一遍而不是指望原地提速。下一步先跑 Quick Win 两项flush 阈值 像素半径半小时内有可测量的帧率变化。再按场景做数据侧单帧大就体素降采样序列长就时间块 服务端按需加载。最后才动渲染管线和自定义逻辑并用 log_benchmark 固定回放窗口做前后对比。参数改动的收益是加法数据量的收益是乘法顺序别反了。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

深度学习与传统视觉融合的车型识别技术实践

深度学习与传统视觉融合的车型识别技术实践

1. 项目概述:当深度学习遇上传统视觉的车型识别双方案在智能交通和安防监控领域,车型识别一直是个既基础又关键的技术需求。去年我参与某市智慧停车项目时,就深刻体会到:单纯依赖传统计算机视觉方法(如OpenCV&#xff…

2026/10/21 23:00:38 阅读更多 →
lowcode-engine 中 Modal 类组件 hidden 属性被强制设置 true 怎么处理

lowcode-engine 中 Modal 类组件 hidden 属性被强制设置 true 怎么处理

lowcode-engine 中 Modal 类组件 hidden 属性被强制设置 true 怎么处理 【免费下载链接】lowcode-engine An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系 项目地址: https://gitcode.com/GitHub_Trending/l…

2026/11/6 1:57:17 阅读更多 →
FedAvg在Non-IID数据下的收敛性:理论与实践全解析

FedAvg在Non-IID数据下的收敛性:理论与实践全解析

联邦学习里的“non-iid之痛”,我太有体会了。前两年我接手一个跨机构联合建模的项目,对方数据一上来我就傻了眼——每个参与方手里的样本分布天差地别,有些机构全是高净值客户,有些全是下沉市场。当时我第一反应就是:这…

2026/10/21 8:16:35 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/10 23:32:01 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/10 23:32:03 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/11 2:31:33 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/10 16:14:15 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/10 12:51:50 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/10 23:32:10 阅读更多 →

日新闻

周新闻

月新闻