一、配置环境
ubuntu=18.04 cuda=10.0 python=3.7 pytorch=1.1.0 (AutoDL云服务器)
1.conda环境
创建名为motionNet,python为3.7的conda基础环境,并激活环境
conda create -n motionNet python=3.7
conda activate motionNet
2.安装pytorch与pyquaternion,Matplotlib,numpy,tqdm,cv2,PIL,sklearn,cachetools,numba依赖包,pytorch官网链接:Previous PyTorch Versions | PyTorch
注意:MGDA相关代码目前仅支持在pytorch1.1版本上运行
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch
pip install pyquaternion-i https://pypi.douban.com/simple
pip install Matplotlib -i https://pypi.douban.com/simple
pip install numpy -i https://pypi.douban.com/simple
pip install tqdm -i https://pypi.douban.com/simple
pip install opencv-python -i https://pypi.douban.com/simple //cv2
pip install pillow -i https://pypi.douban.com/simple //PIL
pip install scikit-learn -i https://pypi.douban.com/simple //sklearn
pip install cachetools -i https://pypi.douban.com/simple
pip install numba -i https://pypi.douban.com/simple
二、分割train数据集
1.添加目录到python环境中
export PYTHONPATH=/root/autodl-tmp/MotionNet:$PYTHONPATH //存放MotionNet项目代码的路径
export PYTHONPATH=/root/autodl-tmp/MotionNet/nuscenes-devkit/python-sdk:$PYTHONPATH
2.生成所需要的数据
(1)先在MotionNet/data/nuscenes/下创建好preprocess_data文件夹,否则会报错
(2)修改gen_data.py文件的第24行,修改为version=‘v1.0-mini’
(3)在gen_data.py文件的第64行,65行添加如下两行代码:
if scene_idx >= len(nusc.scene):
continue
(4)生成训练数据。 --root为存放nuscenesv1.0-mini数据集路径,--savepath 为存放分割后的train数据集
cd MotionNet //进入MotionNet文件夹路径下
python data/gen_data.py --root /root/autodl-fs/data/nuscenes/v1.0-mini/ --split train --savepath /root/autodl-tmp/MotionNet/data/nuscenes/preprocess_data
三、训练模型
python train_multi_seq.py --data /home/root123/Downloads/MotionNet/data/nuscenes/preprocess_data --batch 4 --nepoch 45 --nworker 4 --use_bg_tc --reg_weight_bg_tc 0.1 --use_fg_tc --reg_weight_fg_tc 2.5 --use_sc --reg_weight_sc 15.0 --log
python train_multi_seq_MGDA.py --data /root/autodl-tmp/MotionNet/data/nuscenes/preprocess_data/ --batch 4 --nepoch 45 --nworker 4 --use_bg_tc --reg_weight_bg_tc 0.1 --use_fg_tc --reg_weight_fg_tc 2.5 --use_sc --reg_weight_sc 15.0 --reg_weight_cls 2.0 --log --logpath ./logs
四、评估模型
(1)先按照步骤二中的方法分割test数据集
cd MotionNet //进入MotionNet文件夹路径下
python data/gen_data.py --root /root/autodl-fs/data/nuscenes/v1.0-mini/ --split test --savepath /root/autodl-tmp/MotionNet/data/nuscenes/test_data
(2)修改文件中的代码
## nuscenes_dataloader.py 文件中修改第171行:
if os.path.isdir(os.path.join(self.dataset_root, d))]
## nuscenes_dataloader.py 文件中修改第172、173行注释放开
seq_files = [os.path.join(seq_dir, f) for seq_dir in seq_dirs for f in os.listdir(seq_dir)
if os.path.isfile(os.path.join(seq_dir, f))]
## nuscenes_dataloader.py 文件中修改第175行:
self.seq_files = seq_files
(3) 评估训练好的模型
python eval.py --data /root/autodl-tmp/MotionNet/data/nuscenes/test_data/ --model model/model.pth --split test --log . --bs 1 --net MotionNet
五、可视化
1.先安装imageio-ffmpeg库
pip install imgaug
2.生成.png图片格式预测结果 --modelpath为存放训练好的模型,图片保存到logs/gif文件夹中
python plots.py --data /root/autodl-fs/data/nuscenes/v1.0-mini --version v1.0-mini --modelpath model/model.pth --net MotionNet --nframe 10 --savepath logs/gif
3.合成png格式为gif或MP4格式
// 生成gif,保存位置logs/gif文件夹下,需要优先生成.png文件
python plots.py --data /root/autodl-fs/data/nuscenes/v1.0-mini --version v1.0-mini --modelpath model/model.pth --net MotionNet --nframe 10 --savepath logs/gif --video --format gif
// 生成MP4,保存位置logs/mp4文件夹下,需要优先生成.png文件
python plots.py --data /root/autodl-fs/data/nuscenes/v1.0-mini --version v1.0-mini --modelpath autodl-tmp/MotionNet/logs/train_multi_seq/2023-06-13_20-23-25/epoch_45.pth --net MotionNet --nframe 10 --savepath logs/gif --video --format mp4
注意1:保存gif、MP4的文件路径要与png格式图片保存的位置一致,否则无法生成(空白文件夹)
注意2:在生成gif时,报错TypeError: The keyword 'fps' is no longer supported. Use 'duration' (in ms) instead,则修改plot.py文件中第718行,将fps与duration进行换算,fps为每秒20帧时,duration为1000/20=50毫秒。
注意3:在生成MP4时,提示如下,则只需将plot.py文件中的第727行“yuvj444p”改成“yuv444p”即可
4.成功生成gif或MP4结果如下:
5.gif动图结果展示
参考文章
https://blog.csdn.net/weixin_59961223/article/details/130954977
非常感谢Darchan作者的工作。MotionNet 工程复现_modulenotfounderror: no module named 'pyquaternion_Darchan的博客-CSDN博客