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文件,文件中包含:
以上是我的数据存放形式,大家可自己自行建立。注意:后期data中的root路径要一致哦!
2.配置环境
第一步:
一.配置虚拟环境
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt
-i https://pypi.tuna.tsinghua.edu.cn/simple
如下图所示:依次在终端执行上述命令,建立环境在AB3DMOT的env里面。
然后还需要另外下载 xinshuoweng/Xinshuo_PyToolbox工具包,
二.
报错: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:]
处理后的结果是:
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.再次在终端运行上述命令,结果成功运行:
三.
在上述终端运行:
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文件,如下所示:
四.执行下述命令:
python3 scripts/post_processing/visualization.py --result_sha pointrcnn_val_H1_thres --split val
在验证集里面看到可视化结果,文件是trk_image_vis:
欢迎各位自动驾驶的朋友一起讨论,祝愿计算机视觉的朋友们早日拿到AI四小龙offer!