PVO: Panoptic Visual Odometry代码复现(如何在脚本设置GPU选择,软链接映射数据集)

本文主要是介绍PVO: Panoptic Visual Odometry代码复现(如何在脚本设置GPU选择,软链接映射数据集),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置环境

代码:https://github.com/zju3dv/pvo

1.拉取代码

git clone https://github.com/zju3dv/pvo

这个工程中的VO_Module中的thirdparty部分需要用DROID-SLAM的替换之后才行
具体参考我另一篇博客
https://blog.csdn.net/qin_liang/article/details/132635349

2.创建环境
修改environment.yaml的文件内容

name: pvoenv
channels:- rusty1s- pytorch- nvidia- conda-forge- defaults
dependencies:- _libgcc_mutex=0.1=conda_forge- _openmp_mutex=4.5=2_kmp_llvm- absl-py=1.4.0=pyhd8ed1ab_0- aiohttp=3.8.4=py39h72bdee0_0- aiosignal=1.3.1=pyhd8ed1ab_0- alsa-lib=1.2.8=h166bdaf_0- aom=3.5.0=h27087fc_0- async-timeout=4.0.2=pyhd8ed1ab_0- attr=2.5.1=h166bdaf_1- attrs=23.1.0=pyh71513ae_1- blas=2.116=mkl- blas-devel=3.9.0=16_linux64_mkl- blinker=1.6.2=pyhd8ed1ab_0- brotli=1.0.9=h166bdaf_8- brotli-bin=1.0.9=h166bdaf_8- brotlipy=0.7.0=py39hb9d737c_1005- bzip2=1.0.8=h7f98852_4- c-ares=1.19.0=hd590300_0- ca-certificates=2023.5.7=hbcca054_0- cachetools=5.3.0=pyhd8ed1ab_0- cairo=1.16.0=ha61ee94_1014- certifi=2023.5.7=pyhd8ed1ab_0- cffi=1.15.1=py39he91dace_3- charset-normalizer=2.1.1=pyhd8ed1ab_0- click=8.1.3=unix_pyhd8ed1ab_2- colorama=0.4.6=pyhd8ed1ab_0- contourpy=1.0.7=py39h4b4f3f3_0- cryptography=40.0.2=py39h079d5ae_0- cudatoolkit=11.3.1=ha36c431_9- cycler=0.11.0=pyhd8ed1ab_0- dbus=1.13.6=h5008d03_3- expat=2.5.0=hcb278e6_1- ffmpeg=5.1.2=gpl_h8dda1f0_106- fftw=3.3.10=nompi_hc118613_107- font-ttf-dejavu-sans-mono=2.37=hab24e00_0- font-ttf-inconsolata=3.000=h77eed37_0- font-ttf-source-code-pro=2.038=h77eed37_0- font-ttf-ubuntu=0.83=hab24e00_0- fontconfig=2.14.2=h14ed4e7_0- fonts-conda-ecosystem=1=0- fonts-conda-forge=1=0- fonttools=4.39.4=py39hd1e30aa_0- freeglut=3.2.2=h9c3ff4c_1- freetype=2.12.1=hca18f0e_1- frozenlist=1.3.3=py39hb9d737c_0- gettext=0.21.1=h27087fc_0- glib=2.76.2=hfc55251_0- glib-tools=2.76.2=hfc55251_0- gmp=6.2.1=h58526e2_0- gnutls=3.7.8=hf3e180e_0- google-auth=2.18.1=pyh1a96a4e_0- google-auth-oauthlib=1.0.0=pyhd8ed1ab_0- graphite2=1.3.13=h58526e2_1001- grpcio=1.54.2=py39h227be39_2- gst-plugins-base=1.22.0=h4243ec0_2- gstreamer=1.22.0=h25f0c4b_2- gstreamer-orc=0.4.33=h166bdaf_0- harfbuzz=6.0.0=h8e241bc_0- hdf5=1.14.0=nompi_hb72d44e_103- icu=70.1=h27087fc_0- idna=3.4=pyhd8ed1ab_0- importlib-metadata=6.6.0=pyha770c72_0- importlib-resources=5.12.0=pyhd8ed1ab_0- importlib_resources=5.12.0=pyhd8ed1ab_0- jack=1.9.22=h11f4161_0- jasper=2.0.33=h0ff4b12_1- jpeg=9e=h0b41bf4_3- keyutils=1.6.1=h166bdaf_0- kiwisolver=1.4.4=py39hf939315_1- krb5=1.20.1=h81ceb04_0- lame=3.100=h166bdaf_1003- lcms2=2.15=hfd0df8a_0- ld_impl_linux-64=2.40=h41732ed_0- lerc=4.0.0=h27087fc_0- libabseil=20230125.2=cxx17_h59595ed_2- libaec=1.0.6=hcb278e6_1- libblas=3.9.0=16_linux64_mkl- libbrotlicommon=1.0.9=h166bdaf_8- libbrotlidec=1.0.9=h166bdaf_8- libbrotlienc=1.0.9=h166bdaf_8- libcap=2.67=he9d0100_0- libcblas=3.9.0=16_linux64_mkl- libclang=15.0.7=default_h7634d5b_2- libclang13=15.0.7=default_h9986a30_2- libcups=2.3.3=h36d4200_3- libcurl=8.1.0=h409715c_0- libdb=6.2.32=h9c3ff4c_0- libdeflate=1.17=h0b41bf4_0- libdrm=2.4.114=h166bdaf_0- libedit=3.1.20191231=he28a2e2_2- libev=4.33=h516909a_1- libevent=2.1.10=h28343ad_4- libexpat=2.5.0=hcb278e6_1- libffi=3.4.2=h7f98852_5- libflac=1.4.2=h27087fc_0- libgcc-ng=12.2.0=h65d4601_19- libgcrypt=1.10.1=h166bdaf_0- libgfortran-ng=12.2.0=h69a702a_19- libgfortran5=12.2.0=h337968e_19- libglib=2.76.2=hebfc3b9_0- libglu=9.0.0=he1b5a44_1001- libgpg-error=1.46=h620e276_0- libgrpc=1.54.2=hb20ce57_2- libhwloc=2.9.1=hd6dc26d_0- libiconv=1.17=h166bdaf_0- libidn2=2.3.4=h166bdaf_0- liblapack=3.9.0=16_linux64_mkl- liblapacke=3.9.0=16_linux64_mkl- libllvm15=15.0.7=hadd5161_1- libnghttp2=1.52.0=h61bc06f_0- libnsl=2.0.0=h7f98852_0- libogg=1.3.4=h7f98852_1- libopencv=4.7.0=py39h2ca4621_1- libopus=1.3.1=h7f98852_1- libpciaccess=0.17=h166bdaf_0- libpng=1.6.39=h753d276_0- libpq=15.3=hbcd7760_1- libprotobuf=3.21.12=h3eb15da_0- libsndfile=1.2.0=hb75c966_0- libsqlite=3.42.0=h2797004_0- libssh2=1.10.0=hf14f497_3- libstdcxx-ng=12.2.0=h46fd767_19- libsystemd0=253=h8c4010b_1- libtasn1=4.19.0=h166bdaf_0- libtiff=4.5.0=h6adf6a1_2- libtool=2.4.7=h27087fc_0- libudev1=253=h0b41bf4_1- libunistring=0.9.10=h7f98852_0- libuuid=2.38.1=h0b41bf4_0- libuv=1.44.2=h166bdaf_0- libva=2.18.0=h0b41bf4_0- libvorbis=1.3.7=h9c3ff4c_0- libvpx=1.11.0=h9c3ff4c_3- libwebp-base=1.3.0=h0b41bf4_0- libxcb=1.13=h7f98852_1004- libxkbcommon=1.5.0=h79f4944_1- libxml2=2.10.3=hca2bb57_4- libzlib=1.2.13=h166bdaf_4- llvm-openmp=16.0.4=h4dfa4b3_0- lz4-c=1.9.4=hcb278e6_0- markdown=3.4.3=pyhd8ed1ab_0- markupsafe=2.1.2=py39h72bdee0_0- matplotlib=3.7.1=py39hf3d152e_0- matplotlib-base=3.7.1=py39he190548_0- metis=5.1.0=h58526e2_1006- mkl=2022.1.0=h84fe81f_915- mkl-devel=2022.1.0=ha770c72_916- mkl-include=2022.1.0=h84fe81f_915- mpfr=4.2.0=hb012696_0- mpg123=1.31.3=hcb278e6_0- multidict=6.0.4=py39h72bdee0_0- munkres=1.1.4=pyh9f0ad1d_0- mysql-common=8.0.32=hf1915f5_2- mysql-libs=8.0.32=hca2cd23_2- ncurses=6.3=h27087fc_1- nettle=3.8.1=hc379101_1- nspr=4.35=h27087fc_0- nss=3.89=he45b914_0- numpy=1.24.3=py39h6183b62_0- oauthlib=3.2.2=pyhd8ed1ab_0- opencv=4.7.0=py39hf3d152e_1- openh264=2.3.1=hcb278e6_2- openjpeg=2.5.0=hfec8fc6_2- openssl=3.1.0=hd590300_3- p11-kit=0.24.1=hc5aa10d_0- packaging=23.1=pyhd8ed1ab_0- pcre2=10.40=hc3806b6_0- pillow=9.4.0=py39h2320bf1_1- pip=23.1.2=pyhd8ed1ab_0- pixman=0.40.0=h36c2ea0_0- platformdirs=3.5.1=pyhd8ed1ab_0- ply=3.11=py_1- pooch=1.7.0=pyha770c72_3- protobuf=4.21.12=py39h227be39_0- pthread-stubs=0.4=h36c2ea0_1001- pulseaudio=16.1=hcb278e6_3- pulseaudio-client=16.1=h5195f5e_3- pulseaudio-daemon=16.1=ha8d29e2_3- py-opencv=4.7.0=py39hcca971b_1- pyasn1=0.4.8=py_0- pyasn1-modules=0.2.7=py_0- pycparser=2.21=pyhd8ed1ab_0- pyjwt=2.7.0=pyhd8ed1ab_0- pyopenssl=23.1.1=pyhd8ed1ab_0- pyparsing=3.0.9=pyhd8ed1ab_0- pyqt=5.15.7=py39h5c7b992_3- pyqt5-sip=12.11.0=py39h227be39_3- pysocks=1.7.1=pyha2e5f31_6- python=3.9.16=h2782a2a_0_cpython- python-dateutil=2.8.2=pyhd8ed1ab_0- python_abi=3.9=3_cp39- pytorch=1.10.2=py3.9_cuda11.3_cudnn8.2.0_0- pytorch-mutex=1.0=cuda- pytorch-scatter=2.0.9=py39_torch_1.10.0_cu113- pyu2f=0.1.5=pyhd8ed1ab_0- pyyaml=6.0=py39hb9d737c_5- qt-main=5.15.8=h5d23da1_6- re2=2023.03.02=h8c504da_0- readline=8.2=h8228510_1- requests=2.29.0=pyhd8ed1ab_0- requests-oauthlib=1.3.1=pyhd8ed1ab_0- rsa=4.9=pyhd8ed1ab_0- scipy=1.10.1=py39h6183b62_3- setuptools=67.7.2=pyhd8ed1ab_0- sip=6.7.9=py39h3d6467e_0- six=1.16.0=pyh6c4a22f_0- suitesparse=5.10.1=h9e50725_1- svt-av1=1.4.1=hcb278e6_0- tbb=2021.9.0=hf52228f_0- tensorboard=2.13.0=pyhd8ed1ab_0- tensorboard-data-server=0.7.0=py39h079d5ae_0- tk=8.6.12=h27826a3_0- toml=0.10.2=pyhd8ed1ab_0- tomli=2.0.1=pyhd8ed1ab_0- torchaudio=0.10.2=py39_cu113- torchvision=0.11.3=py39_cu113- tornado=6.3.2=py39hd1e30aa_0- tqdm=4.65.0=pyhd8ed1ab_1- typing-extensions=4.5.0=hd8ed1ab_0- typing_extensions=4.5.0=pyha770c72_0- tzdata=2023c=h71feb2d_0- unicodedata2=15.0.0=py39hb9d737c_0- urllib3=1.26.15=pyhd8ed1ab_0- werkzeug=2.3.4=pyhd8ed1ab_0- wheel=0.40.0=pyhd8ed1ab_0- x264=1!164.3095=h166bdaf_2- x265=3.5=h924138e_3- xcb-util=0.4.0=h166bdaf_0- xcb-util-image=0.4.0=h166bdaf_0- xcb-util-keysyms=0.4.0=h166bdaf_0- xcb-util-renderutil=0.3.9=h166bdaf_0- xcb-util-wm=0.4.1=h166bdaf_0- xkeyboard-config=2.38=h0b41bf4_0- xorg-fixesproto=5.0=h7f98852_1002- xorg-inputproto=2.3.2=h7f98852_1002- xorg-kbproto=1.0.7=h7f98852_1002- xorg-libice=1.0.10=h7f98852_0- xorg-libsm=1.2.3=hd9c2040_1000- xorg-libx11=1.8.4=h0b41bf4_0- xorg-libxau=1.0.9=h7f98852_0- xorg-libxdmcp=1.1.3=h7f98852_0- xorg-libxext=1.3.4=h0b41bf4_2- xorg-libxfixes=5.0.3=h7f98852_1004- xorg-libxi=1.7.10=h7f98852_0- xorg-libxrender=0.9.10=h7f98852_1003- xorg-renderproto=0.11.1=h7f98852_1002- xorg-xextproto=7.3.0=h0b41bf4_1003- xorg-xproto=7.0.31=h7f98852_1007- xz=5.2.6=h166bdaf_0- yaml=0.2.5=h7f98852_2- yarl=1.9.1=py39hd1e30aa_0- zipp=3.15.0=pyhd8ed1ab_0- zlib=1.2.13=h166bdaf_4- zstd=1.5.2=h3eb15da_6
prefix: /.../.conda/envs/pvoenv
conda env create -f VO_Module/environment.yaml
conda activate pvoenv
pip install evo --upgrade --no-binary evo
pip install gdown
cd VO_Module
python setup.py install

3.安装全景分割的部分
video panoptic segmentation requirements. The Video panoptic segmentation module is based on Detectron2, you can install Detectron2 following the instructions.

conda activate droidenv
# conda install pytorch==1.9.0 torchvision cudatoolkit=11.1 -c pytorch -c nvidiapython -m pip install -e VPS_Module
pip install git+https://github.com/cocodataset/panopticapi.git

可视化还要安装open3d

pip install open3d==0.17.0

4.处理数据集(可以先建立软链接)
下载vkitti
https://europe.naverlabs.com/research/computer-vision/proxy-virtual-worlds-vkitti-2/
在这里插入图片描述

在这里插入图片描述
生成训练和测试的数据集

conda activate pvoenv
sh tools/datasets/generate_vkitti_datasets.sh
python tools/datasets/generate_dynamic_masks.py

软链接映射数据集

假设你有一个数据集文件夹位于 dataset/VKITTI,并且你希望在 pvo/data/VKITTI 和 pvo2/data/VKITTI 中访问它,你可以按照以下步骤创建软链接:

  1. 打开终端,并进入 pvo 项目的根目录。

  2. 使用以下命令创建一个软链接来将 pvo/data/VKITTI 映射到 dataset/VKITTI:

ln -s /绝对路径/dataset/VKITTI /绝对路径/pvo/data/

替换 /绝对路径/ 为你的系统上的绝对路径。

  1. 同样,在 pvo2 项目的根目录,使用相同的命令创建软链接:
ln -s /绝对路径/dataset/VKITTI /绝对路径/pvo2/data/

这样,你在 pvo 和 pvo2 项目中的代码就可以通过相同的路径访问数据集文件夹 dataset/VKITTI,而无需复制或调整路径。请确保在软链接命令中使用正确的绝对路径以使其正常工作。

  1. 如果要取消软链接,删除’/绝对路径/pvo2/data/VKITTI’后面这个文件夹就行了

我们这里就可以通过软链接把VKITTI数据集进行映射

ln -s  /data/qinl/Dataset/Virtual_KITTI2   /data/qinl/code/pvo/datasets/

测试

下载模型后放在checkpoints中,参考checkpoint的readme.md

1.生成全景分割

sh tools/initial_segmentation.sh  

运行结果
在这里插入图片描述

2.vps->vo,vo Module generate pose, flow and depth.
因为numpy版本不同,所以这里np.range要改为np.arange
在这里插入图片描述

sh tools/test_vo_scene.sh  

可视化运行效果(去掉–disable_vis)
在这里插入图片描述

3.vo->vps, vps Module use flow and depth from vo Module and generate final video panoptic segmentation results and vpq.

sh tools/test_vps.sh  

目前有点bug

训练

1.训练一下vo部分

tip:GPU选择


export CUDA_VISIBLE_DEVICES=1,2,3,4python VO_Module/train.py --gpus=4 --lr=0.00025

报错

AttributeError: module ‘distutils’ has no attribute ‘version’

问题: AttributeError: module ‘distutils’ has no attribute ‘version’.

解决: setuptools版本问题”,版本过高导致的问题;setuptools版本

第一步: pip uninstall setuptools【使用pip,不能使用 conda uninstall setuptools ; 【不能使用conda的命令,原因是,conda在卸载的时候,会自动分析与其相关的库,然后全部删除,如果y的话,整个环境都需要重新配置。

第二步: pip或者conda install setuptools==59.5.0【现在最新的版本已经到了65了,之前的老版本只是部分保留,找不到的版本不行

IndexError: list index out of range

运行python tools/datasets/generate_dynamic_masks.py 发生的报错
需要从ALL_clone里面把panoptic_gt_id单独复制出来,放在每个secene的clone里面
在这里插入图片描述
但其实可以直接改一下代码,因为segments其实对于生成dynamic mask并没有用
在这里插入图片描述

运行vkitti数据集

需要修改的文件
在这里插入图片描述
在这里插入图片描述

这篇关于PVO: Panoptic Visual Odometry代码复现(如何在脚本设置GPU选择,软链接映射数据集)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701843

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo