【论文复现】AB3DMOT: A Baseline for 3D Multi-Object Tracking and New Evaluation Metrics

2023-05-16

1. 前言

AB3MOT是经典的3D多目标跟踪框架,将2D卡尔曼推广到了3D,并将2D IOU匹配推广到了3D。由于论文的原理基本上与2D相同所以作者在文中没有叙述很多细节,要理解具体实现细节,只能看代码。
项目代码
论文地址

2.环境配置

anaconda 官网下载
KITTI数据集 KITTI这是会发现很大如果简单测试可以先不下载,我是先按照README测试了QuickDemo后,最后测试的完整数据集,因为校园网很贵,或者凌晨下载,凌晨不要钱,总之你如果下载数据集不方便可以跳过继续看。
在这里插入图片描述参考链接1:
ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程–暧昧的呆呆猫

按照官方README一步一步来,遇到问题参考“参考链接1”,最后添加环境变量:

sudo gedit ~/.bashrc
加入
export PYTHONPATH=${PYTHONPATH}:/home/rock/AB3DMOT
export PYTHONPATH=${PYTHONPATH}:/home/rock/AB3DMOT/Xinshuo_PyToolbox
注意rock是我的用户名字,改成你的,还要注意文件夹结构的对应
source ~/.bashrc

在这里插入图片描述

3.QuickDemo

此时准备好环境后直接运行QuickDemo会报错,因为文件跟代码存在问题,首先是需要OXTS数据集文件
在这里插入图片描述
KITTI官网下载。并在AB3MOT/data/KITTI/目录下新建tracking文件夹,此时提醒你已有文件夹,删除重建好了,因为原始的丢失了
在这里插入图片描述
将下载好的文件解压进去,最好使用linux的标准的解压命令Ubuntu 常用解压与压缩命令-蕉叉熵
,有时解压由于编码问题也会出现莫名bug.
你可以看到data目录下有个mini的文件夹,复制里面训练集与测试集的calib与image_02到相应的tracking文件夹下在这里插入图片描述
此时运行README的QuickDemo还是报错,哎(当时我在想不是吧大佬的代码这么多bug!!!),后来我发现读懂代码是复现大佬代码的第一道门槛,嘿嘿
修改代码,
在这里插入图片描述
因为mini数据集不全,所以把AB3MOT/AB3MOT_libs/utils.py中验证集的参数改为
在这里插入图片描述
为什么呢,看下图,因为复制的mini只有这两个,原始代码是完整KITTI数据集的
在这里插入图片描述
此时运行,发现成功了结果在AB3MOT/results/KITTI/pointrcnn_val_H1_thres
在这里插入图片描述
分别是图片与视频,由于图片很少所以视频很短,接下来需要下载KITTI数据集,复现长的视频序列。

4.KITTI数据集测试

刚开始你会发现官网让你下载完整数据集,然后看到数据集大小,就劝退了,后来经过细细阅读代码,我发现只需要下载15G的图像数据即可:
在这里插入图片描述
在这里插入图片描述
并不需要雷达的35GB除非你想可视化点云的。因此我只下载左相机的,一定看清楚左相机,数据集后面也有描述。漫长的等待,其实就是吃了饭的功夫,嘿嘿~
删除tracking中原先的图像数据,解压新的。剩下的跟QuickDemo的命令一样,结果存放位置也一样。

python3 main.py --dataset KITTI --split val --det_name pointrcnn
python3 scripts/post_processing/trk_conf_threshold.py --dataset KITTI --result_sha pointrcnn_val_H1
python3 scripts/post_processing/visualization.py --result_sha pointrcnn_val_H1_thres --split val

在这里插入图片描述
打开就是结果的视频了,0001.mp4见复现结果,接下来慢慢研究,嘿嘿

复现结果

请添加图片描述
tip:markdown图片gif居中小技巧
在这里插入图片描述
后缀加入#pic_center

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文复现】AB3DMOT: A Baseline for 3D Multi-Object Tracking and New Evaluation Metrics 的相关文章

  • 如何计算嵌套对象的深度?

    我有一个嵌套对象的示例数组 let arr id 0 children id 1 children id 2 children id 3 children id 4 children 我需要计算每个对象的深度级别 在所有对象中我也有一个pa
  • Ruby 元编程方法列表?

    刚刚开始学习 Ruby 元编程 看看 Object methods 我得到 Object methods gt allocate new superclass freeze lt gt lt lt gt gt to s included m
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • C# 无法覆盖继承的成员

    我正在从一本名为 Chegwidden Gladdis 的书中学习 C 我正在制作与书中编写的相同的程序和相同的代码 但有一个问题 我无法重写父类中的方法 我从章节一开始就读完了这本书 读了五遍 一切都是一样的 但我不明白为什么我不能重写父
  • DBNull 怎么会不等于 DBNull

    我有以下代码行 if DBNull Value Equals o o null where o is object o in row ItemArray我不断收到错误 gt Xml type List of xdt untypedAtomi
  • JavaScript 对象的动态深度设置[重复]

    这个问题在这里已经有答案了 给定对象属性路径的字符串 如何动态设置此属性 给定这个示例对象 var obj a b c Before 它应该能够使用如下辅助函数设置值 setToValue obj After a b 0 c 我用下面的代码
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • 使用 Object.create(null) 创建空对象的影响和好处

    首先 我做了一个快速的 jsperf 测试用例来展示显而易见的内容 Object create null 比使用创建对象慢得多 syntax http jsperf com js object creation null proto htt
  • Object.assign() - 奇怪的行为需要解释

    我有这个代码 function margeOptions options passedOptions options Object assign options passedOptions let passedOpts a true let
  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • empty() 在对象的非空属性上返回 TRUE

    我遇到了一个非常奇怪且意想不到的问题 empty 正在返回TRUE由于我不知道的原因 在一处非空的房产上 class MyObject private property public function construct property
  • 用Red语言制作GUI对象

    我有一个小面板的以下简单代码 view t text label f field button Click here t text f text 但我必须制作其中两个并将它们放在一个窗户上 我想创建单个对象类并从中创建 2 个对象 我看到可
  • 按值数组过滤对象数组中的嵌套数组

    考虑以下对象数组 guid j5Dc9Z courses id 1 name foo guid a5gdfS courses id 2 name bar
  • java中可以有switch(java.lang.Object)吗?

    我的应用程序需要有类型的 switch case 语句String 我需要这样的东西 Object list1 list1 Object list2 list2 Object list3 list3 Object option list1
  • 拆箱未知类型

    当类型本身未知时 我试图找出支持将整数类型 short int long 拆箱为其内在类型的语法 这是一个完全人为设计的示例 演示了这个概念 Just a simple container that returns values as ob
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何在 javascript 中实现映射或排序集

    Javascript 有使用数字索引的数组 john Bob Joe 以及可以像关联数组或 映射 一样使用的对象 允许对象值使用字符串键 john 28 bob 34 joe 4 在 PHP 中 两者都很容易A 按值排序 同时保留密钥 和B
  • 我们可以实例化一个抽象类吗?

    在一次采访中 有人问我 我们是否可以实例化一个抽象类 我的回答是 不 我们不能 但是 面试官告诉我 错了 我们可以 我对此争论了一下 然后他告诉我自己在家尝试一下 abstract class my public void mymethod
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo

随机推荐

  • torch系列:如何在torch内使用tensorboard

    torch也是可以使用tensorboard的 xff0c 通过安装crayon就可以 下面以ubuntu下的安装为例进行讲解 其实安装的过程还是会碰到不少曲折的过程的 主要为 安装crayon会提示找不到libssl so文件 xff0c
  • mask rcnn使用指南

    做姿态估计的小伙伴们肯定经常用检测器 xff0c 为了方便大家 xff0c 这里给出一个很方便的教程 让大家快速上手 xff0c 不用再纠结配置环境 xff01 欢迎加入我们的姿态估计群 xff1a 970029323 xff08 xff1
  • UML中的泛化、实现、依赖、关联、聚合、组合6种关系

    在UML中经常见到几种关系 xff1a 泛化 xff08 Generalization xff09 实现 xff08 Realization xff09 依赖 xff08 Dependency xff09 关联 xff08 Associat
  • RTOS系统与Linux系统的区别

    RTOS是实时操作系统 Linux是时分系统 xff0c 不过可以通过配置内核改成实时系统 实时操作系统 英文称Real Time Operating System xff0c 简称RTOS 1 实时操作系统定义 实时操作系统 xff08
  • 【Pytorch】学习笔记2023/2/28

    参考文献 Pytorch学习笔记 张贤同学 深度学习百科及面试资源 飞桨
  • k8s-kubernetes--网络策略、flannel网络插件和calico网络插件

    文章目录 一 k8s网络通信1 网络策略2 service和iptables的关系 二 pod间通信1 同节点之间的通信2 不同节点的pod之间的通信需要网络插件支持 详解 1 Flannel vxlan模式跨主机通信原理 2 vxlan模
  • 【Python】可视化figure

    1 Tensorboard静态显示 span class token keyword import span torch span class token keyword import span torch span class token
  • 【Python】绘制双Y轴折线与散点图

    span class token keyword import span matplotlib span class token punctuation span pyplot span class token keyword as spa
  • 【World】插入公式

    1创建样式 公式 2调整段落格式 行间距最小值 xff1a 防止公式显示不全 3根据纸张制作制表符 公式20字符左右 xff0c 居中对齐 标号40字符左右 xff0c 右对齐 确定 4在需要公式的一行 xff0c 点击创建的样式 xff0
  • 【Python】matplotlib替代cv画虚线矩形框

    span class token keyword import span cv2 span class token keyword as span cv span class token keyword import span matplo
  • 【造轮子】最小权完备匹配算法

    1 C 43 43 编程方法 矩阵方法 span class token macro property span class token directive hash span span class token directive keyw
  • 【LeetCode】两数之和

    1 两数之和 1 My solution span class token keyword class span span class token class name Solution span span class token punc
  • 【LeetCode】两数相加

    1 主要是链表先创建下一个对象 xff0c 再转移 xff0c 而不是先转移到空指针再赋值 t span class token operator 61 span span class token keyword new span span
  • 【算法】kalman运动状态估计不准确的思考

    前言 在仿真实验多目标跟踪时 xff0c 我采用了Kalman做跟踪 xff0c 在运动状态估计时位置可以很 准确 的估计 xff0c 但是速度与方向就偏差很大 xff0c 最近看到了一篇文献详细的介绍了原因 xff0c 之前考虑到时间间隔
  • 【LeetCode】无重复字符的最长子串

    尝试1 思路清晰但是耗时 span class token keyword class span span class token class name Solution span span class token punctuation
  • 【C++】vector释放内存之swap方法

    C 43 43 vector 容器浅析 在容器vector中 xff0c 其内存占用的空间是只增不减的 xff0c 比如说首先分配了10 000个字节 xff0c 然后erase掉后面9 999个 xff0c 则虽然有效元素只有一个 xff
  • Linux解决Tab键无法自动补全

    Linux解决Tab键无法自动补全的问题 安装bash completion包 这个包提供Tab键自动补全功能 yum install span class token operator span y bash span class tok
  • 【工具】Github Copilot感想

    前言 昨天是周五 xff0c 本想周末休息一下 xff0c 突然刷到Github Copilot X要发布 xff0c 看完挺期待 xff0c 就好奇搜了一下 xff0c 发现两年前Github Copilot发布了 xff0c 当时我在想
  • 【工具】pip安装不在当前虚拟环境中

    查看pip V与pip3 V是否只向当前虚拟环境如果没有需要手动指定 在安装ultralytics 61 61 8 0 20 时一直找不到包 xff0c 使用最新python 61 3 9 13就好了 使用 xff1a pip V pip
  • 【论文复现】AB3DMOT: A Baseline for 3D Multi-Object Tracking and New Evaluation Metrics

    1 前言 AB3MOT是经典的3D多目标跟踪框架 xff0c 将2D卡尔曼推广到了3D 并将2D IOU匹配推广到了3D 由于论文的原理基本上与2D相同所以作者在文中没有叙述很多细节 xff0c 要理解具体实现细节 xff0c 只能看代码