Training the DEF networks

December 26, 2022 ยท View on GitHub

def/neural/

The code in this folder is relatively separate from the code in the remaining repository and may be used without having to depend on the main repository. We thus start with dependencies for this sub-project.

Dependencies

python -m venv ~/.venv/defs-env
source ~/.venv/defs-env/bin/activate
pip install -r requirements.txt
python setup.py build develop

Data binding

mkdir data
# patches
ln -s /gpfs/gpfs0/3ddl/sharp_features/data_v2_cvpr/points data/points
ln -s /gpfs/gpfs0/3ddl/sharp_features/data_v3_cvpr/images data/images

Download pretrained models

The following table provides an overview of the available models. You can download weights from Dropbox.

FilenameModalityResolutionNoise levelInputsSupervisionLoss
def-image-arbitrary-regression-high-0.ckptimage-based0.020depth image (with bg)real-valued distanceshist
def-image-arbitrary-regression-high-0.005.ckptimage-based0.020.005depth image (with bg)real-valued distanceshist
def-image-arbitrary-regression-high-0.02.ckptimage-based0.020.02depth image (with bg)real-valued distanceshist
def-image-arbitrary-regression-high-0.08.ckptimage-based0.020.08depth image (with bg)real-valued distanceshist
def-image-arbitrary-regression-med-0.ckptimage-based0.050depth image (with bg)real-valued distanceshist
def-image-arbitrary-regression-low-0.ckptimage-based0.1250depth image (with bg)real-valued distanceshist
def-image-arbitrary-segmentation-high-0.ckptimage-based0.020depth image (with bg)binary mask: distances < 0.02bce
def-image-high-0.ckptimage-based0.020depth image (with bg)real-valued distanceshist
def-image-regression-high-0.0025.ckptimage-based0.020.0025depth image (no bg)real-valued distanceshist
def-image-regression-high-0.005.ckptimage-based0.020.005depth image (no bg)real-valued distanceshist
def-image-regression-high-0.01.ckptimage-based0.020.01depth image (no bg)real-valued distanceshist
def-image-regression-high-0.02.ckptimage-based0.020.02depth image (no bg)real-valued distanceshist
def-image-regression-high-0.04.ckptimage-based0.020.04depth image (no bg)real-valued distanceshist
def-image-regression-high-0.08.ckptimage-based0.020.08depth image (no bg)real-valued distanceshist
def-image-regression-med-0.ckptimage-based0.050depth image (no bg)real-valued distanceshist
def-image-regression-low-0.ckptimage-based0.1250depth image (no bg)real-valued distanceshist
def-image-segmentation-high-0.ckptimage-based0.020depth image (no bg)binary mask: distances < 0.02bce
def-image-regression-real.ckptimage-based0.5 mm (med)real depth image (with bg)real-valued distanceshist
def-points-regression-high-0.ckptpoint-based0.020point patchreal-valued distanceshist
def-points-regression-high-0.0025.ckptpoint-based0.020.0025point patchreal-valued distanceshist
def-points-regression-high-0.005.ckptpoint-based0.020.005point patchreal-valued distanceshist
def-points-regression-high-0.01.ckptpoint-based0.020.01point patchreal-valued distanceshist
def-points-regression-high-0.02.ckptpoint-based0.020.02point patchreal-valued distanceshist
def-points-regression-high-0.04.ckptpoint-based0.020.04point patchreal-valued distanceshist
def-points-regression-high-0.08.ckptpoint-based0.020.08point patchreal-valued distanceshist
def-points-regression-med-0.ckptpoint-based0.050point patchreal-valued distanceshist
def-points-regression-low-0.ckptpoint-based0.1250point patchreal-valued distanceshist
def-points-regression-high-0-dgcnn-d3w64-mse.ckptpoint-based0.020point patchreal-valued distancesmse
def-points-regression-high-0-dgcnn-d3w64-l1.ckptpoint-based0.020point patchreal-valued distancesl1
def-points-segmentation-high-0.ckptpoint-based0.020point patchbinary mask: distances < 0.02bce
def-points-wo-v-regression-high-0.ckptpoint-based0.020point patch + voronoireal-valued distanceshist
def-points-wo-v-regression-high-0.02.ckptpoint-based0.020.02point patch + voronoireal-valued distanceshist
def-points-wo-v-regression-med-0.ckptpoint-based0.050point patch + voronoireal-valued distanceshist
def-points-wo-v-regression-low-0.ckptpoint-based0.1250point patch + voronoireal-valued distanceshist
def-points-wo-v-segmentation-high-0.ckptpoint-based0.020point patch + voronoibinary mask: distances < 0.02bce
def-points-wo-v-regression-real.ckptpoint-based0.5 mm (med)point patch + voronoireal-valued distanceshist

Experiments

DEF-Image (high-res, zero noise, regression)
# test on patches
python train_net.py trainer.gpus=1 callbacks=regression datasets=abc-image-64k model=unet2d-hist transform=depth-regression system=def-image-regression hydra.run.dir=test/def-image-regression eval_only=true test_weights=pretrained_models/def-image-regression-high-0.ckpt

# train
python train_net.py trainer.gpus=1 callbacks=regression datasets=abc-image-64k model=unet2d-hist transform=depth-regression system=def-image-regression hydra.run.dir=experiments/def-image-regression
DEF-Image (high-res, zero noise, segmentation)
# test on patches
python train_net.py trainer.gpus=1 callbacks=segmentation datasets=abc-image-64k model=unet2d-seg transform=depth-regression-seg system=def-image-segmentation hydra.run.dir=test/def-image-segmentation eval_only=true test_weights=pretrained_models/def-image-segmentation-high-0.ckpt

# train
python train_net.py trainer.gpus=4 callbacks=segmentation datasets=abc-image-64k model=unet2d-seg transform=depth-regression-seg system=def-image-segmentation hydra.run.dir=experiments/def-image-segmentation
DEF-Image-Arbitrary (high-res, zero noise, regression)
# test on unlabeled patches
python train_net.py trainer.gpus=1 datasets.path=\${hydra:runtime.cwd}/examples/20201113_castle_45.hdf5 callbacks=regression datasets=unlabeled-image model=unet2d-hist transform=depth-sl-regression-arbitrary system=def-image-regression hydra.run.dir=test/20201113_castle_45 eval_only=true test_weights=pretrained_models/def-image-arbitrary-regression-high-0.ckpt

# test on patches
python train_net.py trainer.gpus=1 callbacks=regression datasets=abc-image-arbitrary-64k model=unet2d-hist transform=depth-regression-arbitrary system=def-image-regression hydra.run.dir=test/def-image-arbitrary-regression eval_only=true test_weights=pretrained_models/def-image-arbitrary-regression-high-0.ckpt

# train
python train_net.py trainer.gpus=4 callbacks=regression datasets=abc-image-arbitrary-64k model=unet2d-hist transform=depth-regression-arbitrary system=def-image-regression hydra.run.dir=experiments/def-image-arbitrary-regression
DEF-Image-Arbitrary (high-res, zero noise, segmentation)
# test on patches
python train_net.py trainer.gpus=1 callbacks=segmentation datasets=abc-image-arbitrary-64k model=unet2d-seg transform=depth-regression-seg-arbitrary system=def-image-segmentation hydra.run.dir=test/def-image-arbitrary-segmentation eval_only=true test_weights=pretrained_models/def-image-arbitrary-segmentation-high-0.ckpt

# train
python train_net.py trainer.gpus=4 callbacks=segmentation datasets=abc-image-arbitrary-64k model=unet2d-seg transform=depth-regression-seg-arbitrary system=def-image-segmentation hydra.run.dir=experiments/def-image-arbitrary-segmentation
DEF-Points (high-res, zero noise, regression)
# test on patches
python train_net.py trainer.gpus=1 callbacks=regression datasets=abc-pcv-64k model=dgcnn-d6w158-hist model.in_channels=4 transform=pc-voronoi system=def-points-regression hydra.run.dir=test/def-points-regression eval_only=true test_weights=pretrained_models/def-points-regression-high-0.ckpt dataloader.total_batch_size=4

# train
python train_net.py trainer.gpus=4 callbacks=regression datasets=abc-pcv-64k model=dgcnn-d6w158-hist model.in_channels=4 transform=pc-voronoi system=def-points-regression hydra.run.dir=experiments/def-points-regression
DEF-Points (high-res, zero noise, segmentation)
# test on patches
python train_net.py trainer.gpus=1 callbacks=segmentation datasets=abc-pcv-64k model=dgcnn-d6w158-seg model.in_channels=4 transform=pc-voronoi-segmentation system=def-points-segmentation hydra.run.dir=test/def-points-segmentation eval_only=true test_weights=pretrained_models/def-points-segmentation-high-0.ckpt dataloader.total_batch_size=4

# train
python train_net.py trainer.gpus=4 callbacks=segmentation datasets=abc-pcv-64k model=dgcnn-d6w158-seg model.in_channels=4 transform=pc-voronoi-segmentation system=def-points-segmentation hydra.run.dir=experiments/def-points-segmentation
DEF-Points w/o VCM in input (high-res, zero noise, regression)
# test on patches
python train_net.py trainer.gpus=1 callbacks=regression datasets=abc-pc-64k model=dgcnn-d6w158-hist transform=pc-basic system=def-points-regression hydra.run.dir=test/def-points-wo-v-regression eval_only=true test_weights=pretrained_models/def-points-wo-v-regression-high-0.ckpt dataloader.total_batch_size=4

# train
python train_net.py trainer.gpus=4 callbacks=regression datasets=abc-pc-64k model=dgcnn-d6w158-hist transform=pc-basic system=def-points-regression hydra.run.dir=experiments/def-points-wo-v-regression
DEF-Points w/o VCM in input (high-res, zero noise, segmentation)
# test on patches
python train_net.py trainer.gpus=1 callbacks=segmentation datasets=abc-pc-64k model=dgcnn-d6w158-seg transform=pc-segmentation system=def-points-segmentation hydra.run.dir=test/def-points-wo-v-segmentation eval_only=true test_weights=pretrained_models/def-points-wo-v-segmentation-high-0.ckpt dataloader.total_batch_size=4

# train
python train_net.py trainer.gpus=1 callbacks=segmentation datasets=abc-pc-64k model=dgcnn-d6w158-seg transform=pc-segmentation system=def-points-segmentation hydra.run.dir=experiments/def-points-wo-v-segmentation

Some project parts are inspired by or based on Detectron2 and segmentation_models_pytorch code.