# tracking_3d
**Repository Path**: anjiang2020_admin/tracking_3d
## Basic Information
- **Project Name**: tracking_3d
- **Description**: 3d tracking代码,内涵单目3D重建,以及多目标跟踪代码
此代码需要目标检测的结果,
不过已提供目标检测的结果
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 3
- **Created**: 2021-03-08
- **Last Updated**: 2023-03-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Joint Monocular 3D Vehicle Detection and Tracking
# 单目3D车辆的检测与跟踪联合方法

我们这里给出一种新的框架,这种框架联合的解决了3D车辆的检测与跟踪。我们使用了3D姿态估计方法来学习2D的多目标匹配问题,并且用了序列信息来获取稳定的3D跟踪估计。
**Joint Monocular 3D Vehicle Detection and Tracking**
[Hou-Ning Hu](https://eborboihuc.github.io/),
[Qi-Zhi Cai](https://www.linkedin.com/in/qi-zhi-cai-7130a4155),
[Dequan Wang](https://dequan.wang/),
[Ji Lin](http://linji.me/),
[Min Sun](https://aliensunmin.github.io/),
[Philipp Krähenbühl](https://www.philkr.net/),
[Trevor Darrell](https://people.eecs.berkeley.edu/~trevor/),
[Fisher Yu](https://www.yf.io/).
In ICCV, 2019.
[Paper](https://arxiv.org/abs/1811.10742)
[Website](https:www.imlarger.com)
[整理赵明明](https://gitee.com/anjiang2020_admin/tracking_3d/tree/master)
[本项目地址](https://gitee.com/-/ide/project/anjiang2020_admin/tracking_3d/edit/master/-/README.md)
## 快速开始
照着下面做,就可以快速开始
咱们可以从零开始训练一个模型,
也可以测试我们已经训练好的模型,
或者重建我们的测试结果
更详细的信息可以看文档[`DOCUMENTATION.md`](DOCUMENTATION.md).
### 首先,数据准备
For a quick start, we suggest using GTA `val` set as a starting point. You can get all needed data via the following script.
如果想快速开始,我建议用GTA数据集的验证集'val'.
下面是下载数据的命令,你可以下载val,也可以下载train,val,test等数据集的全部。
```bash
# download.py mini是下载`val`数据集,download.py all 是下载所有数据集
python loader/download.py mini
```
你也可以一个个的来下来文件,而不是通过mini或者all来下载数据。
- 对于GTA Dataset来说,一个个的下载命令是:
下载后的数据是要放在 `./3d-tracking/data/gta5_tracking/{split}/{type}`文件夹下的.
_split_ 的可能取值为= {train, val, test} , _type_的可能取值为 = {image, label}
```bash
python loader/download.py {type} {split}
python loader/download.py val image
python loader/download.py val label
```
- 数据准备好后, 就可以做目标检测了:Detection
下载我们对检测结果,然后放入此文件夹: `./3d-tracking/data/gta5_tracking/`.
可以使用下面命令可以下载检测结果,我们可以用这个检测结果做3D估计,做多目标跟踪:
```bash
python loader/download.py detection
```
检测结果下载完成后,就可以开始着手准备3D估计和多目标跟踪了
由于我们3D估计的工程代码需要将检测数据转换为BDD的格式,所以这里需要运行如下命令,将数据转换:
`python loader/gen_pred.py gta val`
- 预训练模型的准备:Pre-train Model
使用如下命令下载模型文件,并放入此文件夹内: `./3d-tracking/checkpoint/`.
```bash
python loader/download.py checkpoint
```
至此,所有数据,以及预训练的模型就准备好了。可以开始运行了。
### Execution 运行
- 确保安装和数据准备已经完成,当然你也可以边运行,边安装和准备数据。
- 从faster-rcnn.pytorch文件夹内,我们需要获取到候选窗和3D中心。
以下命令用于运行此项目整个工程 (包含3D 估计和跟踪):
```bash
# Step 00 - 数据处理,前面已经处理过的就不用再处理了
# 将val数据整理成json格式
python loader/gen_pred.py gta val
# 将test数据整理成json格式
python loader/gen_pred.py gta test
# 上面是gta数据集,其实对于kitti数据集来说,也是一样的处理方式
python loader/gen_dataset.py kitti train
python loader/gen_pred.py kitti train
# Step 01 - 3D 估计
# 运行run_estimation.py文件即可。这个文件里有训练代码,测试代码等等。
# 比如测试代码如下:
python run_estimation.py gta val --session 616 --epoch 030
# 你也可以用多GPU或者多线程去运行这个工程,因为我们一共有100个跟踪序列。
# Step 02 - 3D 跟踪和测试
# 使用3D估计的结果,进行多目标3D跟踪:
python run_tracking.py gta val --session 616 --epoch 030
# 你也可以用多GPU或者多线程去运行这个工程,因为我们一共有100个跟踪序列。
# Step 03 - 测试3D跟踪的AP
# Convert tracking output to evaluation format
# 将3D 检测结果,跟踪结果格式进行转化,方便计算AP
python tools/convert_estimation_bdd.py gta val --session 616 --epoch 030
python tools/convert_tracking_bdd.py gta val --session 616 --epoch 030
# 对3D估计的评价
python tools/eval_dep_bdd.py gta val --session 616 --epoch 030
# 对跟踪的评价
python tools/eval_mot_bdd.py --gt_path output/616_030_gta_val_set --pd_path output/616_030_gta_val_set/kf3doccdeep_age20_aff0.1_hit0_100m_803
# 跟踪后的3D框的准确度评价
cd tools/object-ap-eval/
python test_det_ap.py gta val --session 616 --epoch 030
```
> 注意:如果提示`ModuleNotFoundError: No module named 'utils'`问题,就在命令行里输入`PYTHONPATH=.`,把当前路径添加在python路径里,然后再运行其他命令。
下面我再介绍一下3D估计的训练和测试
```bash
# 第一步,运行一下脚本,运行前确保代码中的参数,比如数据路径设置正确。
# 训练代码:
bash scripts/train_gta.sh
# 测试代码:
bash scripts/test_gta.sh
```
## 版权
本项目版权约束文件为BSD 3-Clause License. [LICENSE](../LICENSE) 是详细信息。
如果你使用了这份代码/或者这个模型,你需要引用我们的论文
```
@inproceedings{Hu3DT19,
author = {Hu, Hou-Ning and Cai, Qi-Zhi and Wang, Dequan and Lin, Ji and Sun, Min and Krähenbühl, Philipp and Darrell, Trevor and Yu, Fisher},
title = {Joint Monocular 3D Vehicle Detection and Tracking},
journal = {ICCV},
year = {2019}
}
```
## 感谢
感谢[pymot](https://github.com/Videmo/pymot)给我们提供的MOT评价工具
感谢[kitti-object-eval-python](https://github.com/traveller59/kitti-object-eval-python)给我们提供的3D AP计算工具
感谢[Mono-3DT](https://eborboihuc.github.io/Mono-3DT/)提供的代码以及模型