Rerun:超神级日志工具,实现算法录屏
文章目录简介和安装示例代码解读简介和安装Rerun可以理解为是个高级的日志工具可以对程序运行中的各种数据进行可视化并完美回放。其底层基于RustwebGPU提供了Rust,C以及Python的SDK方便直接嵌入到现有的数据处理或训练管道中。其 Viewer查看器设计为完全在客户端本地运行以确保数据隐私和低延迟适合处理大规模本地日志。在Python中用pip安装即可装完即可运行pip install rerun-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple rerun界面如下左侧是项目树下方有一些示例点击即可运行非常炫酷。示例下面做一个简单的示例只用到numpy其表现力就已经相当不错了代码如下虽然长但逻辑很清晰rerun只起到一个日志记录和可视化的作用importrerunasrrimportnumpyasnpimporttime rr.init(自动驾驶小车模拟,spawnTrue)forstepinrange(200):rr.set_time(step,sequencestep)# 设置当前时间戳imgnp.zeros((200,200,3),dtypenp.uint8)img[:,:,0]step%255# 红色通道随时间变化img[80:120,80:120][0,255,0]# 在图像中间画一个绿色的方块rr.log(camera/view,rr.Image(img))rr.log(camera/detections,rr.Boxes2D(mins[80,80],sizes[40,40],labels[Pedestrian]))# 定义一个小车car_xnp.sin(step*0.05)*10car_ynp.cos(step*0.05)*10rr.log(world/car_position,rr.Points3D([[car_x,car_y,0]],colors[255,0,0],radii1.0))# 随机生成 100 个 3D 点num_points100pointsnp.random.rand(num_points,3)*20-10points[:,2]0# 让点都在地面上 (z0)rr.log(world/lidar_points,rr.Points3D(points,colors[0,255,255],radii0.2))# 小车速度speed5.0np.sin(step*0.1)*3.0rr.log(dashboard/speed,rr.Scalars(speed))# 小车电量battery100.0-step*0.4rr.log(dashboard/battery,rr.Scalars(battery))# 记录 文本数据系统日志ifstep%400:rr.log(logs/system,rr.TextLog(fStep{step}: 系统运行正常,levelrr.TextLogLevel.INFO))ifstep%1000andstep0:rr.log(logs/system,rr.TextLog(fStep{step}: 警告电量过低,levelrr.TextLogLevel.WARN))# 稍微暂停 0.05 秒让动画看起来更连贯 (如果不加这行数据会瞬间跑完)time.sleep(0.05)代码解读【init】函数用于rerun初始化spawn用于开启多线程。初始化完成后会弹出rerun的窗口。【set_time】用于设置演化时间其第一个参数为时间轴的名称sequence用于指定当前时间的值。在初始化完成后且每次循环指定时间参数后剩下代码调用的就都是log函数了用于将日志信息传送给rerun其输入参数分别是当前日志信息所在的路径和各种不同类型的信息。上述代码生成的日志结构为cameraview➡️Imagedetections➡️Boxes2Dworldcar_position➡️Points3Dlidar_points➡️Points3Ddashboardspeed➡️Scalarsbattery➡️Scalarslogssystem➡️TextLog➡️TextLog其中Image, Boxes2D, Points3D, Scalars, TextLog均为Rerun支持的实体类型(Archetype)分别表示图像、二维方块、三维点云、数值和文本日志。Rerun会自动对这些日志信息进行布局最终在其GUI程序中展示。