def test_pointcloud_generation(self): dataset_path = get_dataset_path() dataset_parameters_pointclouds = {} dataset_parameters_pointclouds["input_type"] = "pointcloud" dataset_parameters_pointclouds["output_targets"] = ["height", "weight"] dataset_parameters_pointclouds["random_seed"] = 666 dataset_parameters_pointclouds["pointcloud_target_size"] = 30000 dataset_parameters_pointclouds["pointcloud_random_rotation"] = True dataset_parameters_pointclouds["dataset_size_train"] = 1000 dataset_parameters_pointclouds["dataset_size_test"] = 20 data_generator = create_datagenerator_from_parameters( dataset_path, dataset_parameters_pointclouds) dataset = next( data_generator.generate(size=1, yield_file_paths=True, verbose=True)) assert dataset[0].shape == (1, 30000, 4)
def test_voxelgrid_generation(self): dataset_path = get_dataset_path() dataset_parameters_voxelgrids = {} dataset_parameters_voxelgrids["input_type"] = "voxelgrid" dataset_parameters_voxelgrids["output_targets"] = ["height", "weight"] dataset_parameters_voxelgrids["random_seed"] = 666 dataset_parameters_voxelgrids["voxelgrid_target_shape"] = (32, 32, 32) dataset_parameters_voxelgrids["voxel_size_meters"] = 0.1 dataset_parameters_voxelgrids["voxelgrid_random_rotation"] = True dataset_parameters_voxelgrids["dataset_size_train"] = 6000 dataset_parameters_voxelgrids["dataset_size_test"] = 1000 data_generator = create_datagenerator_from_parameters( dataset_path, dataset_parameters_voxelgrids) dataset = next( data_generator.generate(size=1, yield_file_paths=True, verbose=True)) assert dataset[0].shape == (1, 32, 32, 32)
def test_pointcloud_generation(self): # Get the dataset path. dataset_path = get_dataset_path() assert os.path.exists( dataset_path ), "Dataset-path \"{}\" does not exist! Did you specify a path in datasetpath.txt?".format( dataset_path) print("Dataset path:", dataset_path) # Get the QR-Codes. qrcode_paths = glob.glob(os.path.join(dataset_path, "*")) assert len( qrcode_paths) > 0, "No QR-codes at dataset-path \"{}\"!".format( dataset_path) print("QR-Code paths:", qrcode_paths) # Only folders allowed! for qrcode_path in qrcode_paths: assert os.path.isdir( qrcode_path ), "Unexpected file \"{}\". Only folders allowed!".format( qrcode_path) # Check if there are folders for manual measurements. manual_measurements_paths_all = [] for qrcode_path in qrcode_paths: manual_measurements_paths = glob.glob( os.path.join(qrcode_path, "*")) # Each QR-code must have at least one manual measurement. assert len( manual_measurements_paths ) > 0, "No manual measurements at qrcode-path \"{}\"!".format( qrcode_path) # Only folders allowed. for manual_measurements_path in manual_measurements_paths: assert os.path.isdir( manual_measurements_path ), "Unexpected file \"{}\". Only folders allowed!".format( manual_measurements_path) manual_measurements_paths_all.extend(manual_measurements_paths) print("Manual measurements paths:", manual_measurements_paths_all) # Check individual manual measurements. for manual_measurements_path in manual_measurements_paths_all: paths = glob.glob(os.path.join(manual_measurements_path, "*")) assert len(manual_measurements_paths ) > 0, "Path \"{}\" not expected to be empty!".format( manual_measurements_path) # Forbid folders. for path in paths: assert os.path.isdir( path ) == False, "Unexpected folder \"{}\". Only folders allowed!".format( manual_measurements_path) targets_path = os.path.join(manual_measurements_path, "targets.json") assert os.path.exists(targets_path), "targets.json does not exist!" print("Targets-file path:", targets_path)
# Dataset-Generator. import os from cgmcore.datagenerator import DataGenerator, get_dataset_path, create_datagenerator_from_parameters from cgmcore import utils import pickle import random import sys import multiprocessing # Prepare for multiprocessing. Determine number of parallel jobs. multiprocessing_jobs = multiprocessing.cpu_count() print("Going to spawn", multiprocessing_jobs, "jobs...") # Get the dataset path. dataset_path = get_dataset_path() print("Using dataset path:", dataset_path) # Output path. Ensure its existence. output_path = "datasets" if os.path.exists(output_path) == False: os.makedirs(output_path) print("Using output path:", output_path) # Now come the parameters for dataset generation. # For creating pointclouds. dataset_parameters_pointclouds = {} dataset_parameters_pointclouds["input_type"] = "pointcloud" dataset_parameters_pointclouds["output_targets"] = ["height"] dataset_parameters_pointclouds["random_seed"] = 666