From 9845a5d626220a91662db1e861eec4d143af1a71 Mon Sep 17 00:00:00 2001 From: Juli Date: Wed, 28 Apr 2021 23:46:27 +0200 Subject: [PATCH] Added config and hyperparameter files --- config/config_datasets.yaml | 65 ++++++++++++++++++++++++++++++++++ config/deployment_options.yaml | 21 +++++++++++ config/hyperparameters.yaml | 33 +++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 config/config_datasets.yaml create mode 100644 config/deployment_options.yaml create mode 100644 config/hyperparameters.yaml diff --git a/config/config_datasets.yaml b/config/config_datasets.yaml new file mode 100644 index 0000000..1b73e71 --- /dev/null +++ b/config/config_datasets.yaml @@ -0,0 +1,65 @@ +# General ------------------------------------ +## Deployment ------------ +horizontal_field_of_view: [ -179.9, 179.9 ] # Always this for rotating LiDAR sensors + +## Preprocessing --------- +### Neighborhood estimation +min_num_points_in_neighborhood_to_determine_point_class: 10 # neighborhood below this threshold --> no normal computed +epsilon_plane: 0.01 # 1e-2, this is the epsilon value when eigenvalues are considered to describe a plane +epsilon_line: 0.01 # 1e-2, -"- to describe a line +epsilon_range: 0.5 # Epsilon when points are removed from patch used for normal estimation + +# KITTI -------------------------------------- +kitti: # must be the same as dataset name specified in deployment_options.yaml + ## Deployment -------- + ### Training/testing configuration + training_identifiers: [ 0 , 1, 2, 3, 4, 5, 6, 7, 8 ] + testing_identifiers: [ 9, 10 ] + ### Sensor specs + vertical_field_of_view: [ -24.5, 2.0 ] # taken from the datasheet, in degrees + vertical_cells: 64 # Number of LiDAR rings + horizontal_cells: 720 # Can be defined, should not be larger than horizontal resolution of LiDAR + ### Pre-processed file + preprocessed_path: "./datasets/kitti/preprocessed/sequences" + ### Ground-truth poses + pose_data_path: "./datasets/kitti/data_odometry_poses/dataset/poses" + + ## Pre-processing ---- + ### Dataset type, currently supported: "kitti" and "rosbag" + dataset_type: "kitti" + ### Specific configurations needed for pre-processing + horizontal_cells_preprocessing: 2250 # Calculated from 10Hz frequency of LiDAR + ### Preprocessing hyperparameters + neighborhood_side_length: [ 7, 11 ] # Patch dimensions used for normal estimation + ### Source files (before pre-processing) + data_path: "./datasets/kitti/data_odometry_velodyne/dataset/sequences" # Path to dataset + rosbag_path: "./datasets/kitti/rosbags/" # Only needed when converted to rosbag + +# DARPA -------------------------------------- +darpa: + ## Deployment -------- + ### Training/testing configuration + training_identifiers: [ 0 ] + testing_identifiers: [ 0 ] + ### Sensor specs + vertical_field_of_view: [ -22.5, 22.5 ] + vertical_cells: 64 + horizontal_cells: 512 + ### Pre-processed file + preprocessed_path: "./datasets/darpa/preprocessed/sequences" + ### Ground-truth poses + pose_data_path: null + + ## Pre-processing ---- + ### Dataset type, currently supported: "kitti" and "rosbag" + dataset_type: "rosbag" + topic: "/sherman/lidar_points" + ### Specific configurations needed for pre-processing + horizontal_cells_preprocessing: 512 + ### Preprocessing hyperparameters + neighborhood_side_length: [ 7, 11 ] + ### Source files (before pre-processing) + data_path: "./datasets/darpa" + +# Custom dataset +custom: # etc. \ No newline at end of file diff --git a/config/deployment_options.yaml b/config/deployment_options.yaml new file mode 100644 index 0000000..77cdb1e --- /dev/null +++ b/config/deployment_options.yaml @@ -0,0 +1,21 @@ +# Dataset +## Selection +datasets: ["kitti"] # Can contain multiple datasets, e.g. ["darpa", "kitti"] +mode: "training" # Valid options: "training" and "testing", will also be set by training/testing scripts +experiment: "trainings_experiments_1" + +# System information +device: "cuda" # "cuda", "cpu", if multiple GPUs: select cuda device via CUDA_VISIBLE_DEVICES=... +store_dataset_in_RAM: False # If false, each scan and normal file will be read from disk + # For KITTI requires approximately 50GB RAM/SWAP +num_dataloader_workers: 0 # default: 0 + +## Comfort options +unsupervised_at_start: False # if False, it starts to train supervised in the first epoch (Identity matching) +inference_only: True # During testing, it does not compute any losses, during training: no impact +log_normals: True +visualize_images: True +visualize_single_img_preprocessing: False + +## Performance options +use_jit: False # Only thoroughly tested for inference \ No newline at end of file diff --git a/config/hyperparameters.yaml b/config/hyperparameters.yaml new file mode 100644 index 0000000..b4d6000 --- /dev/null +++ b/config/hyperparameters.yaml @@ -0,0 +1,33 @@ +# Training Parameters ------------------------------- +## Loss Computation +batch_size: 1 # batch_size > 1 currently only supported if single image dims are used (vertical and horizontal cells) +# In general: larger batches currently implemented rather primitively +learning_rate: 0.00001 #1e-5 +lambda_po2pl: 1.0 # 10.0 +## Network training options +use_dropout: False +## Data Augmentation +random_point_cloud_rotations: False # Data augmentation by rotating point cloud during training +random_rotations_only_yaw: False # If set to true, and random_point_cloud_rotations set to true --> rotations only about yaw axis +magnitude_random_rot: 4.0 # in degrees +## Loss Functions +normal_loss: "squared" # "squared" or "linear" +rotation_losses_only_plane_to_plane: False +point_to_point_loss: False +point_to_plane_loss: True +plane_to_plane_loss: True +po2po_alone: False + +# Network Parameters --------------------------------- +## Data Format +normalization_scaling: False # If set to true --> lambda_po2pl should be increased +## Model parameters +###############num_input_channels: 8 # No impact yet +activation_fct: "tanh" # "tanh" or "relu" +resnet_outputs: 1000 # Output of the resnet, then fed into the rot/trans fully connected networks +###############conv_size: [3, 5] # No impact yet +pre_feature_extraction: False # Additional feature extraction layers before concatenation of input +layers: [ 2, 2, 2, 2 ] # 4 down-sampling steps, num resnet blocks (2 layers each) per down-sampling (2 here) + # [ 1, 1, 1, 1 ] e.g. results in half as many layers +factor_fewer_resnet_channels: 1 # 4 leads to approximately 15 times fewer weights +use_single_mlp_at_output: False # Single big MLP at output