Does Screened Poisson Reconstruction use N-1 CPU threads?

If I’m reading the debug/verbose output correctly, it looks like this stage explicitly takes N-1 CPU threads. In my instance, I have 8 threads and have not specified a --max-concurrency value, so 8 threads should be used for all stages that support multithreading.

However, the Screened Poisson Reconstruction always seems to use N-1 threads, or N-1 whatever I set for --max-concurrency.

Display issue, or actually not using them all?

root@GreenMachine:/code# ./run.sh --verbose --debug --use-hybrid-bundle-adjustment --pc-classify --pc-rectify --time --mesh-octree-depth 14 --pc-ept --pc-las
ERROR 4: Unable to open EPSG support file gcs.csv. Try setting the GDAL_DATA environment variable to point to the directory containing EPSG csv files.
[INFO] Initializing ODM - Wed Feb 24 22:08:27 2021
[INFO] ==============
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] crop: 3
[INFO] debug: True
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 5
[INFO] depthmap_resolution: 640
[INFO] dsm: False
[INFO] dtm: False
[INFO] end_with: odm_report
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_distance: 0
[INFO] matcher_neighbors: 8
[INFO] matcher_type: flann
[INFO] max_concurrency: 8
[INFO] merge: all
[INFO] mesh_octree_depth: 14
[INFO] mesh_size: 200000
[INFO] min_num_features: 8000
[INFO] name: code
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 5
[INFO] pc_classify: True
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: True
[INFO] pc_quality: medium
[INFO] pc_rectify: True
[INFO] pc_sample: 0
[INFO] primary_band: auto
[INFO] project_path: /
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_report: False
[INFO] sm_cluster: None
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_data_term: gmi
[INFO] texturing_outlier_removal_type: gauss_clamping
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] texturing_tone_mapping: none
[INFO] tiles: False
[INFO] time: True
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: True
[INFO] verbose: True
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /code/images
[INFO] Loading images database: /code/images.json
[INFO] Found 23 usable images
[INFO] Coordinates file already exist: /code/odm_georeferencing/coords.txt
[INFO] Parsing SRS header: WGS84 UTM 18N
[INFO] Finished dataset stage
[INFO] Running split stage
[INFO] Normal dataset, will process all at once.
[INFO] Finished split stage
[INFO] Running merge stage
[INFO] Normal dataset, nothing to merge.
[INFO] Finished merge stage
[INFO] Running opensfm stage
[WARNING] /code/opensfm/image_list.txt already exists, not rerunning OpenSfM setup
[WARNING] Detect features already done: /code/opensfm/features exists
[WARNING] Match features already done: /code/opensfm/matches exists
[WARNING] Found a valid OpenSfM tracks file in: /code/opensfm/tracks.csv
[WARNING] Found a valid OpenSfM reconstruction file in: /code/opensfm/reconstruction.json
[INFO] Already extracted cameras
[WARNING] Negative GSD estimated, this might indicate a flipped Z-axis.
[INFO] Undistorting /code/opensfm …
[WARNING] Already undistorted (nominal)
[WARNING] Found a valid OpenSfM NVM reconstruction file in: /code/opensfm/undistorted/reconstruction.nvm
[WARNING] Will skip exporting /code/opensfm/geocoords_transformation.txt
[INFO] Export reconstruction stats
[WARNING] Found existing reconstruction stats /code/opensfm/stats/stats.json
[INFO] Finished opensfm stage
[INFO] Running openmvs stage
[WARNING] Found a valid OpenMVS reconstruction file in: /code/opensfm/undistorted/openmvs/scene_dense_dense_filtered.ply
[INFO] Finished openmvs stage
[INFO] Running odm_filterpoints stage
[WARNING] Found a valid point cloud file in: /code/odm_filterpoints/point_cloud.ply
[INFO] Finished odm_filterpoints stage
[INFO] Running odm_meshing stage
[INFO] Writing ODM Mesh file in: /code/odm_meshing/odm_mesh.ply
[INFO] running /code/SuperBuild/src/PoissonRecon/Bin/Linux/PoissonRecon --in /code/odm_filterpoints/point_cloud.ply --out /code/odm_meshing/odm_mesh.dirty.ply --depth 14 --pointWeight 4.0 --samplesPerNode 1.0 --threads 7 --linearFit --verbose



** Running Screened Poisson Reconstruction (Version 10.02) **



    --in /code/odm_filterpoints/point_cloud.ply
    --depth 14
    --out /code/odm_meshing/odm_mesh.dirty.ply
    --verbose
    --samplesPerNode 1.000000
    --pointWeight 4.000000
    --threads 7
    --linearFit

Good eye, we purposefully set the threads to N -1 because… during testing we noticed that using all the threads the program would sometimes hang at random!

2 Likes

Thanks! I was playing around with stitching stuff from my TeraCube One phone:
image

The accuracy of the reconstruction is… wow.

1 Like

The wedding photo point cloud is adorbs.

2 Likes

Haha, thanks! I’m amazed by how accurately it portrayed the objects it imaged. The sensor on this phone is not fantastic by any means…

If only I had more RAM so I could crank the processing settings more… As it was, I couldn’t complete the point cloud filtering/mesh decimation stage. All 28GB of RAM for WSL2 + about 24GB of SWAP out to my USB HDD… Not fun.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.