Skip to content
This repository has been archived by the owner on Feb 3, 2024. It is now read-only.

Latest commit

 

History

History
75 lines (48 loc) · 3.08 KB

README_zh.md

File metadata and controls

75 lines (48 loc) · 3.08 KB

在语义分割(Semantic Segmentation)任务中使用Minkowski模型

[English]

本文件夹包含了在ScanNet数据集上使用虚假语义标签(Pseudo Semantic Label)训练Minkowski模型的代码,我们从官方代码库chrischoy/SpatioTemporalSegmentation克隆了Minkowski代码,并在其基础上修改了数据加载模块,使得代码能够读取我们的虚假标签。

 

准备工作

请根据这里的Minkowski安装步骤初始化你的环境,我们的代码使用和Minkowski一样的环境。

我们推荐您使用Anaconda来安装Minkowski Engine,相关的安装步骤可以参考Minkowski Engine 0.4.3代码库。你需要确保你下载的是0.4.3版本安装包,不是最新版。

这里我们提供了一份安装示例。

 

数据集

使用下面的命令预处理所有原始点云及其真实标签(Ground-truth Label),你需要在lib/datasets/preprocessing/scannet.py文件的第9行和第10行对SCANNET_RAW_PATHSCANNET_OUT_PATH设置好路径。

python -m lib.datasets.preprocessing.scannet

使用下面的命令预处理所有原始点云及其虚假标签(Pseudo Label),你需要在lib/datasets/preprocessing/scannet2.py文件的第7-12行对EXP_NAMELABEL_NAME进行设置,对SCANNET_RAW_PATH2LABEL_PATHSCANNET_OUT_PATH2设置好路径。虚假标签的实验名称EXP_NAME对应于SegGroup中的标签风格<label style>

cp -r SCANNET_OUT_PATH/train SCANNET_OUT_PATH2
python -m lib.datasets.preprocessing.scannet2

 

开始训练

使用下面的命令用训练集上的真实标签训练Minkowski模型。

export BATCH_SIZE=8;
./scripts/train_scannet.sh <gpu id> \
        -default \
        "--scannet_path SCANNET_OUT_PATH/train"

使用下面的命令用训练集上的虚假标签训练Minkowski模型。

export BATCH_SIZE=8;
./scripts/train_scannet.sh <gpu id> \
        -default \
        "--scannet_path SCANNET_OUT_PATH2"

你只能使用一个显卡ID<gpu id>,在我们的实验中我们使用一张32G的Tesla V100显卡。

 

Evaluation

使用下面的命令在验证集上测试你训练好的模型性能。

python test_scannet.py --weights <weight path> --data_path SCANNET_OUT_PATH/train

模型路径<weight path>的格式是outputs/ScannetVoxelization2cmDataset/Res16UNet34C-b8-120000--default/<exp name>/checkpoint_NoneRes16UNet34Cbest_val.pth

你可以在清华云盘或者百度网盘(提取密码:wwm2)下载我们训练好的模型,该模型训练时使用了产生自手工标注的块级标签(Manual Labeled Seg-level Label)的虚假标签,模型性能如下:

划分 mIoU
验证集 64.5
测试集 62.7