点云目标跟踪 & Open3D可视化

本文是基于AB3DMOT进行的改编及应用,楼主在参加创新工场Deecamp时使用该方法使基于Det3D的目标检测效果smooth and visualized.

论文名称:《A Baseline for 3D Multi-Object Tracking》(AB3DMOT)
论文地址:https://arxiv.org/pdf/1907.03961.pdf
论文Github项目地址:https://github.com/xinshuoweng/AB3DMOT
本文Github项目地址:Deecamp_AB3DMOT

数据读取

Deecamp所使用的是Momenta的128线激光雷达数据集,目标检测输出的数据结构为:

label 3d bbox angle score
Pedestrian/Car/Cyclist/Truck/Tricar x,y,z,l,w,h alpha_y score

由于输出结果每一帧为一个独立文件,因此数据读取修改如下:

dets = seq_dets[:,1:8]ori_array = seq_dets[:,-1].reshape((-1, 1))other_array = seq_dets[:,0:6]additional_info = np.concatenate((ori_array, other_array), axis=1)dets_all = {'dets': dets, 'info': additional_info}

(由于所用数据与原文数据只有2D信息的差别,数据接口改变较为容易,后续会将tracking加入到eval中进行实时输入与输出(loading))

Open3D

此次尝试选用的是Open3D进行可视化操作
安装和具体函数使用可见文档 http://www.open3d.org/docs/release/

Open3D python版本安装

部分blog会建议使用

pip install open3d-python

但是!!!!!!!
open3d-python版本最新只有到0.7.0,部分module无效,建议使用:

pip install open3d==0.10.0(版本号)or
conda install -c open3d-admin open3d
Open3D可视化

先定义window以及visualizer等

  vis = o3d.visualization.Visualizer()vis.create_window()opt = vis.get_render_option()opt.background_color = np.asarray([0, 0, 0])opt.point_size = 1opt.show_coordinate_frame = True

读取显示点云

file_name = seq_name + ".bin"v_f = os.path.join(os.path.dirname(os.path.abspath(__file__)),"/path/to/pointcloud", file_name)pcs = load_pc_from_file(v_f)pcs = np.array(pcs[:, :3])pcobj = o3d.geometry.PointCloud()pcobj.points = o3d.utility.Vector3dVector(pcs)vis.add_geometry(pcobj)

循环进入跟踪后结果进行输出

for d in trackers:xyz = np.array([d[: 3]])hwl = np.array([d[3: 6]])r_y = [d[6]]pts3d = compute_3d_box_lidar_coords(xyz, hwl, angles=r_y, origin=(0.5, 0.5, 0.5), axis=2)lines = [[0, 1], [1, 2], [2, 3], [3, 0],[4, 5], [5, 6], [6, 7], [7, 4],[0, 4], [1, 5], [2, 6], [3, 7]]colors = [[1, 0, 1] for i in range(len(lines))]line_set = o3d.geometry.LineSet()line_set.points = o3d.utility.Vector3dVector(pts3d[0])line_set.lines = o3d.utility.Vector2iVector(lines)line_set.colors = o3d.utility.Vector3dVector(colors)vis.add_geometry(line_set)

若连续可视化需要清除内容

vis.clear_geometries()

可视化效果如下所示

Edit

使用

vis.add_geometries()

之后由于当前ubuntu16限制,没有办法将open3d提升至0.10.0版本,无法进行视角变化,因此使用下列方法将视角变为自由模式,可以通过拖动和滚轮调整视角。

通过判断当前line_set的值进行update

if line_set[index].has_lines():line_set[index].points = o3d.utility.Vector3dVector(pts3d[0])line_set[index].lines = o3d.utility.Vector2iVector(lines)line_set[index].colors = o3d.utility.Vector3dVector(line_colors)vis.update_geometry(line_set[index])else:line_set[index].points = o3d.utility.Vector3dVector(pts3d[0])line_set[index].lines = o3d.utility.Vector2iVector(lines)line_set[index].colors = o3d.utility.Vector3dVector(line_colors)vis.add_geometry(line_set[index])

点云也是一样

if pcobj.is_empty():pcobj.points = o3d.utility.Vector3dVector(pcs[:, 0:3])vis.add_geometry(pcobj)else:pcobj.points = o3d.utility.Vector3dVector(pcs[:, 0:3])vis.update_geometry(pcobj)

最终可以得到下面的效果:

【无人驾驶】3D目标识别效果

可视化效果还不够好,欢迎沟通~

Deecamp笔记——点云目标跟踪 Open3D连续可视化相关推荐

  1. P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者: 不知道叫什么好 https://zhuanlan.zhihu.com/p/146512901 ...

  2. IROS 2021 | PTT:把Transformer应用到3D点云目标跟踪任务

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 PTT: Point-Track-Transformer Module for 3D Single Obje ...

  3. CVPR 2022 | PTTR: 基于Transformer的三维点云目标跟踪

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨罗志鹏 来源丨商汤学术 导读 在CVPR 2022上,商汤研究院团队提出了基于Transform ...

  4. 点云 3D 目标跟踪 - AB3DMOT(IROS 2020, ECCVW 2020)

    点云 3D 目标跟踪 - AB3DMOT(IROS 2020, ECCVW 2020) 摘要 1. 引言 2. 相关工作 3. 方法 A. 3D目标检测 B. 3D卡尔曼滤波器:状态预测 C. 数据关 ...

  5. 点云 3D 目标跟踪 - SimTrack: Exploring Simple 3D Multi-Object Tracking for Autonomous Driving(ICCV 2021)

    点云 3D 目标跟踪 - SimTrack(ICCV 2021) 摘要 1. 引言 2. 相关工作 3. 方法 3.1 准备工作 3.2 概述 3.3 联合检测和跟踪 4. 实验 4.1 数据集 4. ...

  6. OpenCV 3 Tracking API目标跟踪学习笔记——定义、物体跟踪常用算法、demo

    今天开始接触目标跟踪 本文翻译自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/#opencv-tracking ...

  7. 【3D目标跟踪】Tracklet Proposal Network for Multi-Object Tracking on Point Clouds阅读笔记(2021)

    1.为什么要做这个研究(理论走向和目前缺陷) ? TBD是现在做目标跟踪的主流方法,这也导致检测结果很影响跟踪的好坏,能否利用由粗到精的思想(faster rcnn)先获得多个粗的轨迹,然后再细化(去 ...

  8. CVPR2020:点云三维目标跟踪的点对盒网络(P2B)

    CVPR2020:点云三维目标跟踪的点对盒网络(P2B) P2B: Point-to-Box Network for 3D Object Tracking in Point Clouds 代码:htt ...

  9. 目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)

    在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行op ...

  10. 单目标跟踪——个人笔记

    单目标跟踪--个人笔记 以<Handcrafted and Deep Trackers: A Review of Recent ObjectTracking Approaches>为主线看 ...

最新文章

  1. 求android实现未读短信图标数字提示效果
  2. Zend Studio 8.0.1 官方汉化包安装 解决文本中文乱码
  3. ubuntu修改启动为文本模式
  4. webpack对icon-font图片的处理
  5. 计算机字符编码详尽讲解
  6. C++:51---继承中的构造函数、析构函数、拷贝控制一系列规则
  7. 作者:寇纲(1975-),男,博士,西南财经大学工商管理学院教授、博士生导师、执行院长...
  8. python使用技巧_python小技巧
  9. 一文带你剖析LiteOS互斥锁Mutex源代码
  10. vue-router-2-动态路由配置
  11. linux上oracle导入mysql_linux下的oracle数据库和表空间的导入导出
  12. 使Iframe的宽高自适应,并且兼容IE 和NC浏览器- -
  13. Linux根据端口号或者关键字查询进程,重启Tomcat服务脚本优缺点说明
  14. ARCHICAD 25 for Mac(cad绘图软件)
  15. Wheel ProgressBar 实现之三——模拟进度过程
  16. 【C++】*P、P 、P的区别
  17. STM32F7学习笔记(一)-LED
  18. 手机共享电脑的proxy网络
  19. 大学计算机学cad的,征文通知:第二十二届中国计算机辅助设计与图形学(CADCG 2019)学术会议...
  20. 骑士游历问题【JAVA板】代码详细流

热门文章

  1. 怎么样绘制简易地图,如何制作一个电子地图?
  2. [笔记]PLC可程式模拟器1
  3. Python绘制云图
  4. 比较拼音的相似度,汉字纠错使用
  5. 资深程序员和你重学五线谱 - 第一篇
  6. 做正确的事永远都不迟
  7. word_大纲视图/导航视图/设置标题时需要注意(不成功的原因)
  8. 电力行业数据安全解决方案
  9. Matplotlib:线类型
  10. Jackson 电印迹-蛋白质转移丨膜的类型WB转移步骤要素