LSS:Lift, Splat, Shoot 论文代码复现
LSS: Lift, Splat, Shoot 论文代码复现
环境搭建
使用anaconda创建虚拟环境
conda create -n LSS python=3.8激活环境
conda acticate LSS安装pytorch
pip install torch-1.9.0+cu102-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.10.0+cu102-cp38-cp38-linux_x86_64.whl为了节省时间和流量我一般下载离线的安装包,当然也可以直接按照官网中的在线安装
安装所需要的其他工具包
pip install nuscenes-devkit tensorboardX efficientnet_pytorch==0.7.0数据集准备
数据集下载
需要下载Full dataset和Map expansion


数据集准备
在git clone下来的工程目录下创建
data文件夹,并将Full dataset压缩包里的文件解压到在这里将解压得到的文件夹重命名为
mini将
Map expansion压缩包里的文件解压到刚重命名的mini文件夹下的map目录
代码运行
下载模型文件到任意位置
能够正确运行的目录结构大概如下
.
├── data
│ └── mini
│ ├── LICENSE
│ ├── maps
│ ├── samples
│ ├── sweeps
│ └── v1.0-mini
├── efficientnet-b0-355c32eb.pth
├── imgs
│ ├── check.gif
│ └── eval.gif
├── LICENSE
├── main.py
├── README.md
├── requirment.txt
└── src
├── data.py
├── explore.py
├── __init__.py
├── models.py
├── __pycache__
│ ├── data.cpython-38.pyc
│ ├── explore.cpython-38.pyc
│ ├── __init__.cpython-38.pyc
│ ├── models.cpython-38.pyc
│ ├── tools.cpython-38.pyc
│ └── train.cpython-38.pyc
├── tools.py
└── train.pyEvaluate a model(评估模型)
python main.py eval_model_iou mini --modelf=./efficientnet-b0-355c32eb.pth --dataroot=./data/ --gpuid=0modelf参数为下载的模型地址dataroot参数为数据集的地址,也就是mini文件夹所在的位置gpuid如果没有多个GPU就为0
如果遇到如下错误,删除int即可
ImportError: cannot import name 'int' from 'numpy' (/home/wang/.conda/envs/LSS/lib/python3.8/site-packages/numpy/__init__.py)如果遇到如下错误,导致Missing key(s) in state_dict:
Traceback (most recent call last):
File "main.py", line 13, in <module>
Fire({
File "/home/wang/.conda/envs/LSS/lib/python3.8/site-packages/fire/core.py", line 143, in Fire
component_trace = _Fire(component, args, parsed_flag_args, context, name)
File "/home/wang/.conda/envs/LSS/lib/python3.8/site-packages/fire/core.py", line 477, in _Fire
component, remaining_args = _CallAndUpdateTrace(
File "/home/wang/.conda/envs/LSS/lib/python3.8/site-packages/fire/core.py", line 693, in _CallAndUpdateTrace
component = fn(*varargs, **kwargs)
File "/home/wang/Project/BEV/lift-splat-shoot/src/explore.py", line 239, in eval_model_iou
model.load_state_dict(torch.load(modelf))
File "/home/wang/.conda/envs/LSS/lib/python3.8/site-packages/torch/nn/modules/module.py", line 2189, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for LiftSplatShoot:解决办法是:定位到上面报错的这一行
File "/home/wang/Project/BEV/lift-splat-shoot/src/explore.py", line 239, in eval_model_iou
model.load_state_dict(torch.load(modelf))将model.load_state_dict(torch.load(*modelf*)),改为
model.load_state_dict(torch.load(modelf), False)然后再次运行,输出以下内容成功
running eval...
{'loss': 0.7084423531720667, 'iou': 0.03712283950617284}Visualize Predictions(可视化预测)
python main.py viz_model_preds mini --modelf=./efficientnet-b0-355c32eb.pth --dataroot=./data/ --map_folder=./data/mini/ --gpuid=0会遇到与之前一样的错误,找到model.load_state_dict(torch.load(*modelf*)),跟之前的改法一样。
运行成功的结果如下
loading ./efficientnet-b0-355c32eb.pth
saving eval000000_000.jpg
saving eval000000_001.jpg并有合成的bev效果图如下

LSS:Lift, Splat, Shoot 论文代码复现
https://wjhln.github.io/2024/06/10/LSS Lift, Splat, Shoot 论文与代码复现/