Segmentation
===========================
ScanNet
---------------------------
#. Download the data from the
`ScanNet benchmark `__.
Unzip the data and place it to the folder ````.
Enter the subdirectory ``projects``, run the following command
to prepare the dataset.
.. code-block:: none
python tools/seg_scannet.py --run process_scannet --path_in
#. Run the following command to train the network with 4 GPUs. The mIoU on the
validation set without voting is **73.7**, the training log and weights can
be downloaded from this
`link `__.
.. code-block:: none
python scripts/run_seg_scannet.py --gpu 0,1,2,3 --alias scannet
#. Run the following command to get the per-point predictions for the validation
dataset with a voting strategy. And after voting, the mIoU is **74.9** on the
validation dataset.
.. code-block:: none
python scripts/run_seg_scannet.py --run validate --alias scannet
#. To achieve the 76.2 mIoU on the testing set of the
`ScanNet benchmark `__,
run the following command to train the network on both the training and
validation dataset and get the predictions for the testing dataset.
.. code-block:: none
python scripts/run_seg_scannet.py --run train_all --gpu 0,1,2,3 --alias all
python scripts/run_seg_scannet.py --run test --alias all
.. note::
The ocnn-pytorch is very efficient compared with other sparse convolution
frameworks. It only takes 18 hours to train the network on ScanNet for 600
epochs with 4 V100 GPUs. For reference, under the same training settings,
MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4 takes 30 hours.
SemanticKITTI
---------------------------
#. Download the dataset and semantic labels from the official website of
`SemanticKITTI `__,
including `data_odometry_velodyne.zip `__
and `data_odometry_labels.zip `__,
and place them into the folder ``projects/data/SemanticKITTI``. Then enter
the subdirectory ``projects``, run the following command to prepare the
dataset.
.. code-block:: none
python tools/seg_kitti.py
#. Run the following command to train the network with 4 GPUs. The mIoU on the
validation set is **64.0**, the training log and weights can be downloaded from
this `link `__.
.. code-block:: none
python segmentation.py --config configs/seg_kitti.yaml SOLVER.gpu 0,1,2,3
ShapeNet
---------------------------
#. Run the following command to prepare the dataset.
.. code-block:: none
python tools/seg_shapenet.py
#. Run the following command to train the a shallow SegNet with an octree depth
of 5 used in the original experiment of
`O-CNN `__.
And the segmentation refinement based on CRF in the paper is omitted for
simplicity. The category mIoU and instance mIoU without voting is 82.5 and
84.0 respectively, the training log and weights can be downloaded from this
`link `__.
It is also easy to do experiments with an octree depth of 6 by specifying
command line parameter ``--depth 6``, with which the category mIoU and
instance mIoU is 82.8 and 84.2 respectively.
.. code-block:: none
python scripts/run_seg_shapenet.py --depth 5 --model segnet --alias segnet_d5
#. Run the following command to train the a deep UNet with an octree depth of 5.
The category mIoU and instance mIoU without voting is **84.2** and **85.4**
respectively, the training log and weights can be downloaded from this
`link `__.
.. code-block:: none
python scripts/run_seg_shapenet.py --depth 5 --model unet --alias unet_d5