示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
# 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