从零部署点云实例分割项目Mask3D

一、下载

论文地址:arxiv.org/pdf/2210.03105v2.pdf

Github地址:GitHub - JonasSchult/Mask3D: Mask3D predicts accurate 3D semantic instances achieving state-of-the-art on ScanNet, ScanNet200, S3DIS and STPLS3D.

二、环境配置

export TORCH_CUDA_ARCH_LIST="6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6"

conda create -n mask3d python=3.10.9
conda activate mask3d

pip3 install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
pip3 install torch-scatter -f https://data.pyg.org/whl/torch-1.12.1+cu113.html
pip3 install 'git+https://github.com/facebookresearch/detectron2.git@710e7795d0eeadf9def0e7ef957eea13532e34cf' --no-deps

pip install pytorch-lightning==1.7.2
pip install tensorboard
pip install loguru
pip install natsort
pip install fire
pip install scikit-learn
pip install scikit-image
pip install numpy==1.23.5            # 高于24会有np.int的不兼容
pip install hydra-core==1.0.5        # 安装了高版本的之后,训练的时候会报错
pip install pillow==9.5.0            # 如已有较高版本,需要降版本
pip install torchmetrics==0.11.4     # 如已有较高版本,需要降版本
pip install matplotlib
pip install pyviz3d
pip install python-dotenv
pip install plyfile
pip install trimesh
pip install wandb==0.15.0
pip install pyyaml==5.4.1
pip install fvcore
pip install cloudpickle
pip install pycocotools
pip install albumentations==1.2.1
pip install -U git+https://github.com/kumuji/volumentations
pip install volumentations --no-build-isolation
pip uninstall pip uninstall importlib-metadata        # 不卸载后面会一直报错…


# MinkowskiEngine
cd third_party
git clone --recursive "https://github.com/NVIDIA/MinkowskiEngine"
cd MinkowskiEngine
git checkout 02fc608bea4c0549b0a7b00ca1bf15dee4a0b228
python setup.py install --force_cuda --blas=openblas

# pointnet2
cd ..
cd pointnet2
python setup.py install
cd ../..



三、数据准备

下载 Stanford3dDataset_v1.2数据集,网盘可参考

S3DIS场景点云数据集_s3dis/stanford3ddataset_v1.2_aligned_version-CSDN博客

mkdir data

# 将下载的数据集放在data目录下

unzip Stanford3dDataset_v1.2

python -m datasets.preprocessing.s3dis_preprocessing preprocess \
--data_dir="./data/Stanford3dDataset_v1.2" \
--save_dir="./data/processed/s3dis"

预处理后数据解析】:

 processed/s3dis下

Area_1/conferenceRoom_1.npy文件:arr.shape为(N, 12),N为conferenceRoom_1这个房间的点总个数,12分别是points.coord三位,points.color三位,points.normal三位(且均为1),填充一位(代码中提到add segment id as addtional feature),points.semantic_label(语义标签)一位,points.instance_label(实例标签)一位,共12位。

instance_gt/Area_1/conferenceRoom_1.txt文件:arr.shape为(N, 1),N为conferenceRoom_1这个房间的点总个数,存放着这个房间所有点的标签值(计算方式=(语义标签+1)*1000 + 实例标签 +1,例如3001=(2+1)*1000 + 2 + 1)

Area_1_database.yaml文件:存放着Area_1区域下每一个场景房间的信息,例如该场景的颜色均值、颜色方差、点云个数、点云路径、场景名称等。

Area_1_color_mean_std.yaml文件 :存放着Area_1区域下颜色均值、颜色方差。

Area_1_database.yaml_color_mean_std.yaml文件:同上。

label_database.yaml文件:存放着所有语义标签的信息,包含标签号,颜色,名称,是否有效。

train_Area_1_database.yaml文件:存放着除了Area_1之外的几个区域下的每个场景房间的信息。(不太明白这样设计的意义何在…)

四、代码分析

Dataset——SemanticSegmentationDataset

Dataloader——torch.utils.data.DataLoader

Model——Mask3D

Optimizer——torch.optim.AdamW

Scheduler——torch.optim.lr_scheduler.OneCycleLR

Loss——SetCriterion

五、训练流程分析

1.命令

python main_instance_segmentation.py \
  general.project_name="s3dis" \
  general.experiment_name="area5_from_scratch" \
  data.batch_size=1 \
  data/datasets=s3dis \
  general.num_targets=14 \
  data.num_labels=13 \
  trainer.max_epochs=1001 \
  general.area=5 \
  trainer.check_val_every_n_epoch=10

2.流程剖析

 数据经由SemanticSegmentationDataset类的__getitem__之后,会经过train_dataloader的collate_fn——本项目为VoxelizeCollate类

注意:collate_fn参数用于指定如何将多个样本合并成一个批次数据。collate_fn是一个可调用对象,接受一个样本列表作为输入,并返回一个合并后的批次数据。

  • 34
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值