对于入门轨迹预测这个方向的小白来说,HiVT是一篇质量非常高的论文,以下是我将论文要求硬件2080ti换为4080后居然有报错,所以来帮助大家避坑。
在CSDN里有很多大佬的踩坑记录,链接放在下边给大家参考。
安装argoverse和复现HiVT时踩的坑_hivt复现-CSDN博客
Argoverse数据集API安装和HiVT代码调试踩坑及排坑记录_argoverse api-CSDN博客
1.错误说明:
HiVT代码中的软件环境要求是py3.8,pytorch1.8.0+cuda11.1,pyg使用1.7.2,py-lightning为1.5.2,硬件要求为2080ti。
于是乎,我在换了4080后,心血来潮跑了一下,结果直接给我爆红:
下边也是一长串,大概意思是说cuda和40系显卡不太适配,什么GPU架构有不兼容问题。
我查了很多资料,又装了一下新一点的cuda12.1版本,使用软链接指向了cuda12.1作为默认。但依然没有解决问题,又发现有人说torch版本必须大于1.13版本才可以适配我的显卡和cuda。
我一想,反正cuda向下兼容,cuda高了没问题,但我的torch高了,我的pyg,一大堆包还得重新装。秉承着试一试态度,我装了torch1.13.1+cu116,由于PyG有4个依赖库,大家可以参考这篇博客自行下载:PyTorch Geometric (PyG) 库的安装_pyg安装-CSDN博客,基础环境配好后,我们还需要将官方api安装到我们的虚拟环境中。
我选择的包如下图所示:
2.Argoverse api安装
由于argo数据集官方api只能安装在Linux系统中,所以我安装了双系统win11+ubuntu20.04
首先我们需要去官网Argoverse 1,将数据集下载(训练,验证,测试)。并且下载HDmap文件,我们会得到一个hd_maps.tar.gz压缩包,解压后打开文件,里边有map_files文件。
在本地工程文件夹中使用clone命令将github的argoverse-apihttps://github.com/argoverse/argoverse-api复制到本地文件夹中,把map_files放到api文件的一级目录下,像下图这样:
按照要求放好高精地图文件后,我们还需要执行api安装,这部分我们还需要对依赖包进行处理,打开api文件的setup.py文件,我们对其中一些包进行修改,也可以直接用我下图的处理方式:
修改完毕后,我们可以直接运行pip install -e argoverse-api,但太慢了,我们直接在后边添加国内源,速度直接飞起(大概1分钟左右???),就像下面这样子。
pip install -e argoverse-api -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完毕后,发现代码中的argoverse还是会有错误提示,这是正常的,只需要在终端里输入python,然后运行import argoverse,若是没有报错,就证明我们安装成功了,代码也能正常运行。
2.HiVT报错解决
装完api,我们就可以按照github一步一步来解决下面的问题了:
首先是模型训练,/path/to/dataset_root/换成你自己数据集的路径,我们选择编码维度64
python train.py --root /path/to/dataset_root/ --embed_dim 64
2.1评价指标报错
ValueError: Unexpected keyword arguments: compute_on_step
将指标文件夹中ade.py,fde.py,mr.py文件中的super里的compute_on_step去掉即可。
不出所料,又有错误了。
2.2数据预处理报错
大概意思是说我以前进行过数据预处理,让我删了我预处理的文件夹,重新运行,于是乎我删了训练和验证集里的processed文件夹后,代码又重新跑起来了。
如果你第一次跑,应该不会遇到这个问题。
接着我们会迎来第二个问题:
这个问题也很好解决,找到对应函数给他加一些东西进去。
点报错的最后一个文件地址,会进入到collate.py文件。
跳转进去是data.__inc__(key, value, store)这一行代码,PyCharm/VSCode用户可以按着ctrl+鼠标左键,然后出现下图这样:
选择第一个文件,进入到utils.py,把54行代码改成下图所示------在value的后面加上了 ,*args
之后就没有什么问题了,至少在我自己的环境中是这样的,此时运行训练代码,首先会执行数据预处理,之后会按照代码的batch_size进行训练了,训练的日志会存在lightning_logs中,希望大家顺利跑通。
3.总结
经过实践,代码终于能够在我的4080里跑了,后续课题研究有可能会找别的代码来看,有其他问题也会持续更新,记录一下第一次写博客哈哈哈。