Point Transformer V3 论文复现

安装

Pointcept/PointTransformerV3: [CVPR'24 Oral] Official repository of Point Transformer V3 (PTv3) (github.com)在Github上下载好代码文件进行环境配置

conda create -n pointcept python=3.8 -y
conda activate pointcept
conda install ninja -y
# Choose version you want here: https://pytorch.org/get-started/previous-versions/
# We use CUDA 11.8 and PyTorch 2.1.0 for our development of PTv3
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install torch-geometric

cd libs/pointops
python setup.py install
cd ../..

# spconv (SparseUNet)
# refer https://github.com/traveller59/spconv
pip install spconv-cu118  # choose version match your local cuda version

# Open3D (visualization, optional)
pip install open3d

这边由于使用Windows进行安装会出现很多BUG

BUG及解决

1.Sharedarray库安装时出现conda安装不了的问题

尝试使用github安装SharedNumpyarray替换原本的Sharedarray

pip install git+https://github.com/imaginary-friend94/SharedNumpyArray

安装成功后,修改pointcept/utils/cache.py,将sharedarray.attach改为

numpysharedarray.attach_mem_sh

sharedarray.create改为

numpysharedarray.create_mutex

2.ModuleNotFoundError: No module named 'pointgroup_ops'

conda install -c bioconda google-sparsehash 
cd libs/pointgroup_ops
python setup.py install --include_dirs=${CONDA_PREFIX}/include

按照readme进行安装

发现无法安装google-sparsehash

然后直接进入官网下载到本地安装

Search :: Anaconda.org

选择Win-64

conda install --use-local win-64_win-64_linux-64_google-sparsehash-2.0.3-1.tar.bz2

安装完成后,继续安装pointgroup-ops。进入Pointcept/libs/pointgroup_ops输入python setup.py install进行安装

cd Pointcept/libs/pointgroup_ops
python setup.py install

安装完成

数据预处理

完成环境配置后进行数据预处理操作,这里选择S3DIS数据集进行处理,数据集下载参考这篇文章

S3DIS场景点云数据集_s3dis数据集baiduwangpan下载-CSDN博客

下载完成后,对数据集进行处理

# S3DIS_DIR: the directory of downloaded Stanford3dDataset_v1.2 dataset.
# RAW_S3DIS_DIR: the directory of Stanford2d3dDataset_noXYZ dataset. (optional, for parsing normal)
# PROCESSED_S3DIS_DIR: the directory of processed S3DIS dataset (output dir).

# S3DIS without aligned angle
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR}
# S3DIS with aligned angle
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --align_angle
# S3DIS with normal vector (recommended, normal is helpful)
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --raw_root ${RAW_S3DIS_DIR} --parse_normal
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --raw_root ${RAW_S3DIS_DIR} --align_angle --parse_normal

需要注意,如果要计算法向量的话需要安装trimesh库

pip install trimesh

开始训练

由于没有使用法向量,这里需要对配置文件修改一些参数。

打开Pointcept\config\s3dis\semseg-pt-v3m1-1-rpe

删除所有字典里有"normal"的值,例如

            dict(
                type="Collect",
                keys=("coord", "grid_coord", "segment"),
                feat_keys=("color"),
                # feat_keys=("color", "normal"),
            ),

此外还需要修改Pointcept\pointcept\dataset\transform.py

将第49行处的

data[name] = torch.cat([data_dict[key].float() for key in keys], dim=1)

修改为

if self.kwargs.__len__() == 1:
    data[name] = torch.cat([data_dict[keys].float()], dim=1)
else:
    data[name] = torch.cat([data_dict[key].float() for key in keys], dim=1)

否则当keys只有一个元素"color"时会报错

修改完成后,运行PTv3开始训练

sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v3m1-1-rpe -n semseg-pt-v3m1-0-rpe

运行成功! 

<think>好的,我现在需要帮助用户复现dust3r项目或功能。根据用户提供的引用内容,我应该先整理出清晰的步骤。首先,用户提到需要进入项目目录并安装依赖,引用[1]和[5]都提到了安装步骤,特别是引用[5]提到需要下载croco的依赖,可能这里需要特别注意,因为直接下载项目文件可能croco文件夹是空的,必须手动下载。 接下来,用户可能还需要配置环境,比如安装Python和相关库。引用[2]提到工具包简化了3D数据处理,所以可能需要安装对应的Python包,比如torch、opencv等,这些可能在requirements.txt里已经列出,用户需要运行pip install命令。 然后,运行示例代码的部分,引用[1]提到运行示例,可能需要使用提供的脚本或命令,比如demo.py。用户可能需要准备测试数据,或者按照文档中的指示进行操作。 另外,引用[3]和[4]提到模型训练和结果分析,如果用户需要复现训练过程,可能需要下载预训练模型或准备数据集。不过用户的问题主要是复现项目或功能,可能更侧重于运行而不是训练模型,所以重点可能在环境配置和示例运行。 需要提醒用户注意的常见问题,比如croco依赖的手动下载,这可能是一个容易出错的地方。还有环境兼容性问题,比如Python版本、CUDA版本是否匹配等。此外,可能还需要安装额外的库,如可视化工具或点云处理库,引用[2]提到集成可视化库,可能需要安装Mayavi或Open3D之类的。 最后,生成相关问题时要围绕复现过程、环境配置、功能应用等,帮助用户深入理解项目结构和使用方法。</think>### 复现 dust3r 项目的分步教程 #### 1. 环境准备 - **克隆项目仓库**: ```bash git clone https://github.com/naver/awesome-dust3r cd awesome-dust3r ``` - **安装依赖**: ```bash pip install -r requirements.txt # 安装基础依赖[^1] ``` - **手动下载croco依赖**: - 从官方仓库下载[croco](https://github.com/naver/croco)源码,解压后替换项目中的`croco`空文件夹[^5]。 #### 2. 配置模型与数据 - **下载预训练模型**: - 从项目文档提供的链接下载`dust3r_model.pth`,保存到`checkpoints/`目录。 - **准备测试数据**: - 使用示例图像(如项目提供的`demo_images/`)或自定义图像对。 #### 3. 运行示例代码 - **执行单图像重建**: ```python import dust3r model = dust3r.DUST3R(device=&#39;cuda&#39;) # 加载模型 result = model.process_image(&#39;input_image.jpg&#39;) # 处理单张图像 ``` - **多视图重建示例**: ```bash python demo.py --input_dir demo_images/ --output_dir results/ # 运行多视角重建 ``` #### 4. 可视化结果 - **使用内置工具**: ```python dust3r.visualize_pointcloud(result[&#39;pointcloud&#39;]) # 调用集成可视化库[^2] ``` - **导出为PLY格式**: ```python result.export_ply(&#39;output.ply&#39;) # 保存点云数据[^2] ``` --- ### 注意事项 1. **硬件要求**:需NVIDIA GPU(建议显存≥8GB)以支持CUDA加速。 2. **依赖冲突**:若出现库版本问题,可尝试创建虚拟环境: ```bash python -m venv dust3r_env source dust3r_env/bin/activate # Linux/macOS ``` 3. **调试建议**: - 若`croco`编译失败,检查CUDA工具链版本是否与PyTorch匹配。 - 图像输入需包含EXIF元数据以提取相机参数[^3]。 ---
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值