ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程

0 写在前面

目前研一在读,研究方向为:视觉检测和3DMOT多目标跟踪。最近在学习多目标跟踪的算法,以AB3DMOT为例,详细跟大家说下我的配置环境和过程,欢迎自动驾驶的朋友来交流学习。

源码:https://github.com/xinshuoweng/AB3DMOT

追踪原文:https://arxiv.org/pdf/1907.03961.pdf

搭建环境:Ubuntu18.04.Python3.8.Miniconda3.pycharm2022社区版,搭建conda虚拟环境后直接导入pycharm即可

1.数据集准备,以kitti数据集为例,下载tracking文件,文件中包含:

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第1张图片

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第2张图片

 以上是我的数据存放形式,大家可自己自行建立。注意:后期data中的root路径要一致哦!

2.配置环境

第一步:

一.配置虚拟环境
  1. python3 -m venv env

  2. source env/bin/activate

  3. pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

  4. 如下图所示:依次在终端执行上述命令,建立环境在AB3DMOT的env里面。

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第3张图片

然后还需要另外下载 xinshuoweng/Xinshuo_PyToolbox工具包,

  1. 输入cd Xinshuo_PyToolbox
  2. pip 3 install -r requirements.txt
  3. 在/home主目录下打开终端执行 sudo gedit ~/.bashrc
  4. 在打开的文本文件里面输入                                                                                                                    export PYTHONPATH=${PYTHONPATH}:/home/....自己的路径/AB3DMOT                                    export PYTHONPATH=${PYTHONPATH}:/home/....自己的路径/AB3DMOT/Xinshuo_PyToolbox
  5. 在上面的终端执行 source ~/.bashrc
  6. 在AB3DMOT目录下打开终端执行 source ~/.profile                                                                       source env/bin/activate

二.

  1. 在AB3DMOT路径下打开终端执行                                                                                                      python3 main.py --dataset KITTI --split val --det_name pointrcnn

报错:packages/numba/_dynfunc.cpython-38-x86_64-linux-gnu.so: undefined symbol: _PyObject_GC_UNTRACK

分析:原文作者用的python3.6,我这里用的python3.8,需要更新以下numba包,

在终端运行:

pip install numba==0.50.1

再次执行上述python3 main.py --dataset KITTI --split val --det_name pointrcnn,

报错:FileNotFoundError: [Errno 2] No such file or directory: '/home/han/AB3DMOT/AB3DMOT_libs/../data/KITTI/tracking/training/oxts/0001.txt

分析:kitti路径的文件没有匹配的oxts文件,大家需要到kitti数据集上下载oxts文件。

鉴于下载数据集比较麻烦,所以作者在上篇文章下免费给大家分享了百度网盘链接,可自行前去下载,这里为大家附上链接:kitti数据集简介,百度网盘分享链接,自动驾驶视觉咨询_Jacobi881的博客-CSDN博客

2.搭建好上述环境后再次运行

python3 main.py --dataset KITTI --split val --det_name pointrcnn

出现错误:ValueError: not enough values to unpack(expected 2,got 1)

分析:calib文件的txt文件没有冒号,需要自己进行添加

这里,作者自己写了脚本文件,大家可根据自己情况进行修改,程序如下所示:

from re import L
import numpy
import os
import sys
# 输入文件夹
root = '/home/han/AB3DMOT/data/KITTI/tracking/training/calib'
file_names = os.listdir(root)
file_ob_list = []
for file_name in file_names:
    fileob = root + '/' + file_name
    file_ob_list.append(fileob)
for file1 in file_ob_list:
    print(file1)
    with open(file1,"r+") as f:
        file = f.read()
        file = file.replace('R_rect','R_rect:')
        file = file.replace('Tr_velo_cam','Tr_velo_cam:')
        file = file.replace('Tr_imu_velo','Tr_imu_velo:')
        print(file)
        f.seek(0,0)
        f.truncate()    #清空文件,配合seek使用,否则清空的位置不对
        f.write(file)
        f.close()
        # for line in f:
        #     xiugai = line.split(' ')
        #     if(xiugai[0]=='R_rect'):
        #         line = line[0:6]+':'+line[6:]
        #     if(xiugai[0]=='Tr_velo_cam'):
        #         line = line[0:11]+':'+line[11:]
        #     if(xiugai[0]=='Tr_imu_velo'):
        #         line = line[0:11]+':'+line[11:]  

处理后的结果是:

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第4张图片 然后重新执行上述终端命令:

python3 main.py --dataset KITTI --split val --det_name pointrcnn

报错:

 分析:由于kitti数据集calibs文件里面的标定名称与源码中不一样,需要进行修改。

解决:大家可建立一个新的脚本文件,命名为xiugai1.py

脚本程序为:

from re import L
import numpy
import os
import sys
root = '/home/han/AB3DMOT/data/KITTI/tracking/training/calib'
file_names = os.listdir(root)
file_ob_list = []
for file_name in file_names:
    fileob = root + '/' + file_name
    file_ob_list.append(fileob)
for file1 in file_ob_list:
    print(file1)
    with open(file1,"r+") as f:
        file = f.read()
        file = file.replace('R_rect','R0_rect')
        file = file.replace('Tr_velo_cam','Tr_velo_to_cam')
        file = file.replace('Tr_imu_velo','Tr_imu_to_velo')
        print(file)
        f.seek(0,0)
        f.truncate()    #清空文件,配合seek使用,否则清空的位置不对
        f.write(file)
        f.close()

3.再次在终端运行上述命令,结果成功运行:

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第5张图片

 三.

在上述终端运行:

python3 scripts/post_processing/trk_conf_threshold.py --dataset KITTI --result_sha pointrcnn_val_H1

出现问题:   

assert _HAS_FFMPEG, "Cannot find installation of real FFmpeg (which comes with ffprobe)."
AssertionError: Cannot find installation of real FFmpeg (which comes with ffprobe).

分析:conda-forge是编译的ffmpeg视频编解码库,它可直接对视频读存取

自己的搭建环境里面缺少对应的库无法读取,

解决步骤:安装conda-forge

在终端执行:conda install ffmpeg -c conda-forge

再次运行得到结果:在AB3DMOT文件夹里面生成一个result文件,如下所示:

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第6张图片

 四.执行下述命令:

python3 scripts/post_processing/visualization.py --result_sha pointrcnn_val_H1_thres --split val

在验证集里面看到可视化结果,文件是trk_image_vis:

 

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第7张图片

 ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第8张图片

在 trk_video_vis文件夹里面是demo效果:

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第9张图片

 

ubuntu18.04配置AB3DMOT多目标跟踪算法,详细配置流程_第10张图片

 

赠人玫瑰,手有余香!

欢迎各位自动驾驶的朋友一起讨论,祝愿计算机视觉的朋友们早日拿到AI四小龙offer!

你可能感兴趣的:(目标跟踪,人工智能,计算机视觉,深度学习)