周报-240130

学习内容

  1. VP2P-Net 与 SPNet 的代码配置、运行、调试

  2. FreeReg 论文的阅读


学习时间

2024.01.24 — 2024.01.30


学习笔记

VP2P-Net 配置流程

2024.1.29 — 目前评估代码已跑通,训练代码仍然没有公布

环境配置
  • 安装 python 虚拟环境
conda create -n vp2p python=3.8
conda activate vp2p
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
pip install tqdm scipy 
  • 编译库 pointnet2_ops_lib
cd models/pointTransformer/pointnet2_ops_lib/
python setup.py install
  • 体素方面安装 torchsparse

安装 torchsparse 时,不是用以下方式安装的,而是遵从官方的代码进行安装,具体可以查看 torchsparse 官方 git 仓库

pip install --upgrade git+https://github.com/mit-han-lab/torchsparse.git
运行

运行评估代码:

python run_kitti.py --load_ckpt /home/root_1/users/wkp/projects/python/VP2P-Match-main/ckpts/pretrain_kitti.t7 --data_path /home/root_1/users/wkp/data/KITTI/kitti_testset --exp_name KITTI_test

遇到报错:

大致意思是 np.int 已不使用,需要换成 np.int64 或 np.int 32,应该是 numpy 新版本的原因,在 matr2d3d 中也有体现(如把 np.float 换成了 np.float64)

修改:./models/kitti_dataset.py 第 64 行:

farthest_pts_idx = np.zeros(k, dtype=np.int) —> farthest_pts_idx = np.zeros(k, dtype=np.int64)

运行结果:

step: 0 --- Good rate :  (0,) / (2,)
RTE mean 1.6614190994800024 std 0.7397203244711551
RRE mean 7.426141875064905 std 0.8150713043183351
step: 100 --- Good rate :  (179,) / (202,)
RTE mean 0.5256546219550652 std 0.833817282744911
RRE mean 2.60635018998482 std 4.942026863786252
step: 200 --- Good rate :  (361,) / (402,)
RTE mean 0.5714196128838047 std 0.7791679880286244
RRE mean 2.6453934884264574 std 3.9280279951368176
step: 300 --- Good rate :  (493,) / (602,)
RTE mean 0.7677277395675197 std 1.6942811461534917
RRE mean 3.5271521036663604 std 7.084887640660373
step: 400 --- Good rate :  (693,) / (802,)
RTE mean 0.6718257087148862 std 1.484684099656692
RRE mean 2.948878053207573 std 6.23294749001849

...

step: 2500 --- Good rate :  (4227,) / (5002,)
RTE mean 0.7941879929903809 std 1.7210940130232983
RRE mean 3.3001441376823495 std 9.200347229162038
step: 2600 --- Good rate :  (4388,) / (5202,)
RTE mean 0.7899703551888246 std 1.6916974891122705
RRE mean 3.303320137622692 std 9.041277245652203
step: 2700 --- Good rate :  (4588,) / (5402,)
RTE mean 0.7724050544462876 std 1.6629799119921416
RRE mean 3.235564163806176 std 8.879921706131874
------------------Final Results------------------
Good rate :  (4644,) / (5584,)
RTE mean 0.7831692324013878 std 1.6414525405055138
RRE mean 3.345724941659466 std 8.771777159605811

SPNet 安装流程

2024.01.29 — 目前环境安装完毕,训练代码能运行但是有 bug,评估代码仍不能跑通,目前还在寻找解决方案

环境配置

先下载安装 cuda-10.1

wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
sh cuda_10.1.243_418.87.00_linux.run

修改环境变量 .bashrc,指向 cuda-10.1 文件夹

新建 conda 虚拟环境 spnet,然后安装 pytorch 1.4.0

# 创建虚拟环境
conda create -n spnet python=3.6.6
# 进入虚拟环境
conda activate spnet
# 安装 torch 1.4.0
pip install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html

安装 torchnet,忽略版本检查,因为 python==3.6.6,而 torchnet 最低需要 3.7

pip install --no-deps torchnet

安装其他依赖包

pip install future igraph tqdm transforms3d pynvrtc fastrlock cupy h5py sklearn plyfile scipy pandas

conda install -c anaconda boost; conda install -c omnia eigen3; conda install eigen; conda install -c r libiconv

编译 libply_c 库,服务器上没有 cmake,安装了一下

cd lib/ply_c

cmake . -DPYTHON_LIBRARY=/share/home/ncu_418000230023/anaconda3/envs/spnet/lib/libpython3.6m.so -DPYTHON_INCLUDE_DIR=/share/home/ncu_418000230023/anaconda3/envs/spnet/include/python3.6m -DBOOST_INCLUDEDIR=/share/home/ncu_418000230023/anaconda3/envs/spnet/include -DEIGEN3_INCLUDE_DIR=/share/home/ncu_418000230023/anaconda3/envs/spnet/include/eigen3

make

make 时遇到错误:numpy/ndarrayobject.h:没有那个文件或目录,解决方案:

[ 50%] Building CXX object CMakeFiles/ply_c.dir/ply_c.cpp.o
/share/home/ncu_418000230023/projects/python_projects/SPNet-main/lib/ply_c/ply_c.cpp:8:10: 致命错误:numpy/ndarrayobject.h:没有那个文件或目录
 #include <numpy/ndarrayobject.h>
          ^~~~~~~~~~~~~~~~~~~~~~~
编译中断。
make[2]: *** [CMakeFiles/ply_c.dir/build.make:63:CMakeFiles/ply_c.dir/ply_c.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:73:CMakeFiles/ply_c.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2

打开 CMakeList.txt ,修改以下内容,即可 make 成功:

# 把这句代码添加在 INCLUDE_DIRECTORIES 的上面
set(NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} $CONDAENV/spnet/lib/python3.6/site-packages/numpy/core/include/)

# 添加 ${NUMPY_INCLUDE_DIRS}
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
${NUMPY_INCLUDE_DIRS} 
)

build ops

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

中途遇到问题,经查阅[资料](nvcc fatal : Unsupported gpu architecture ‘compute_86‘_洛洛洛洛洛洛洛-华为开发者联盟HarmonyOS专区 (csdn.net) ),应该是 cuda 10.1 不支持 8.6 的算力,修改为 7.5 即可:

显示错误:

nvcc fatal : Unsupported gpu architecture ‘compute_86‘
command '/usr/local/cuda/bin/nvcc' failed with exit status 1

修改:

export TORCH_CUDA_ARCH_LIST="7.5"
运行

运行代码 sh tool/sh_train.sh s3dis 20220121 config/spnet.yaml

报错提示没有 tensorboardX yaml visdom

Traceback (most recent call last):
  File "tool/train.py", line 21, in <module>
    from tensorboardX import SummaryWriter
ModuleNotFoundError: No module named 'tensorboardX'

Traceback (most recent call last):
  File "tool/train.py", line 23, in <module>
    from util import dataset, transform, config
  File "/share/home/ncu_418000230023/projects/python_projects/SPNet-main/util/config.py", line 4, in <module>
    import yaml
ModuleNotFoundError: No module named 'yaml'

安装一下:

pip install tensorboardX pyyaml visdom

遇到报错:

没有此文件夹,实际上也确实没有,如果把对应 Area_5 改为 Area_5_test,则会报 num_samples = 0 的错误

Traceback (most recent call last):
  File "tool/train.py", line 559, in <module>
    main()
  File "tool/train.py", line 183, in main
    train_data, test_data = create_s3dis_datasets(args, logger)
  File "/share/home/ncu_418000230023/projects/python_projects/SPNet-main/util/S3DIS_dataset.py", line 89, in create_s3dis_datasets
    for fname in sorted(os.listdir(path),key=lambda x:os.stat(path + "/" + x).st_size, reverse=True):
FileNotFoundError: [Errno 2] No such file or directory: '/share/home/ncu_418000230023/data/s3dis/Stanford3dDataset_v1.2/Area_5_test/'
Traceback (most recent call last):
  File "tool/train.py", line 559, in <module>
    main()
  File "tool/train.py", line 207, in main
    drop_last=True)
  File "/public/home/ncu_418000230023/anaconda3/envs/spnet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 213, in __init__
    sampler = RandomSampler(dataset)
  File "/public/home/ncu_418000230023/anaconda3/envs/spnet/lib/python3.6/site-packages/torch/utils/data/sampler.py", line 94, in __init__
    "value, but got num_samples={}".format(self.num_samples))
ValueError: num_samples should be a positive integer value, but got num_samples=0

参考文章:修改 tool/train.py 207 行 shuffle = True —> shuffle = False

跑出来的结果:所有指标全为 0,目前还在寻找解决方案

FreeReg 论文总结

  1. 方法介绍: 文献详细介绍了FreeReg的方法,包括数据预处理、网络结构和模型训练策略。其中,提到了使用ControlNet和SuperGlue等方法作为基线。
  2. 与相关工作的比较: 文中对FreeReg与其他相关工作,如2D3D-Matr,进行了比较。通过在RGBD-Scene-v2数据集上的实验证明,FreeReg在不同的评估指标上取得了良好的性能。
  3. 不同扩散层特征的效果: 文章在表格中展示了使用不同扩散层特征构建跨模态扩散特征的效果。结果表明,选择适当的扩散层组合可以获得理想的对应和注册性能。
  4. 深度特征提取比较: 文章比较了使用ControlNet提取扩散特征和直接将深度图传递给扩散网络的效果。结果表明使用ControlNet提取特征在某些指标上具有优势。
  5. PnP与Kabsch算法比较: 文献对比了PnP算法和Kabsch算法在注册中的性能。结果显示在不同的Registration Recall阈值下,两者表现不同,Kabsch算法在较宽松的阈值下性能更好。
  6. 单模态注册性能: FreeReg不仅在跨模态注册(RGB到点云)上表现优越,还能在单模态注册(RGB图像或深度图像)上取得令人满意的性能。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值