Guide to GPU memory requirements?

I thought I’d re-do an old set of images to see how much faster GPU feature extraction was, but got this instead -

[WARNING] Image size (5472x3648px) would not fit in GPU memory, falling back to CPU

So it looks like I have to resize my M2P images to 0.5X in order to be processed with the GPU.

Is there some sort of guide for GPU memory requirement for various sized
images?

There is an option feature-quality , which is an easy way to fit in avialable GPU memmory.
But I use resize-to with small steps until i see “… would not fit in GPU memory, falling back to CPU” and then one or two notch back.
I think resize-to is the suitable option here because you can fill your GPU memmory at optimal

1 Like

I know it works at 0.5X, I’ll try 0.75X next time to see how it goes, but it is a bit disappointing not to be able to use full sized images for the best quality results.
The graphics card has 4GB of memory, plus another 48GB of shared memory, which I thought might be enough…

maybe i am wrong , but I think “speed” , is hevaly dependenp on GPU phisycal mem.
Shared mem does not count :slightly_smiling_face:

2 Likes

How much gpu ram do you have?

This much

1 Like

This is from the code

  feature_quality_scale = {
                    'ultra': 1,
                    'high': 0.5,
                    'medium': 0.25,
                    'low': 0.125,
                    'lowest': 0.0675,
                }

You can see the predefined scale factors for image resize.
And i think resize-to is not Legacy option.

1 Like

I believe we’re having a bit of a bug with the GPU pipeline at the moment where it is not properly parsing image dimensions and erroring out when it shouldn’t.

Yes, it is a legacy option that will likely be disabled at some point in the near future. It is recommended to instead use the --feature-quality flag.

1 Like

Using feature quality is a bit of a blunt instrument though, doesn’t the feature quality apply to the already resized images from ‘image resize’ on the front page, ie if you resize to 0.5X then use ‘high’, you are effectively resizing to 0.25X?

Resizing to 3144pixels (0.666X) allows GPU processing with M2P images, 0.75X fails.

In any case, yes there is a bug, as I have not had a single success in processing in the past few days on datasets that have succeeded in the past.
Errors like this -

FileNotFoundError: [Errno 2] No such file or directory: ‘E:\WebODM\resources\app\apps\NodeODM\data\16e85c60-bfd3-4686-9003-c2fdc8fa5ef3\opensfm\features\DJI_0814.JPG.features.npz’

and

File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\numpy\lib\npyio.py”, line 112, in zipfile_factory
return zipfile.ZipFile(file, *args, **kwargs)
File “zipfile.py”, line 1267, in init
File “zipfile.py”, line 1334, in _RealGetContents
zipfile.BadZipFile: File is not a zip file

2 Likes

Just trying a large dataset with 0.5X M2P image size, and it sure is working the GPU real hard, check the temperature!

GPU-use2

2 Likes

Sadly, despite the super GPU extraction speed, it’s another failure, end of the console log below.

Now about 10 tasks failed in a row when using GPU feature extraction, so it really is not working for me at all.

Traceback (most recent call last):
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm_main.py”, line 25, in
commands.command_runner(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command_runner.py”, line 37, in command_runner
2022-01-14 13:15:39,630 DEBUG: No segmentation for DJI_0343_2.JPG, no features masked.
command.run(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command.py”, line 12, in run
2022-01-14 13:15:39,634 DEBUG: No segmentation for DJI_0598_4.JPG, no features masked.
self.run_impl(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\match_features.py”, line 11, in run_impl
2022-01-14 13:15:39,642 DEBUG: No segmentation for DJI_0543_5.JPG, no features masked.
match_features.run_dataset(dataset)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\actions\match_features.py”, line 14, in run_dataset
2022-01-14 13:15:39,654 DEBUG: No segmentation for DJI_0868_4.JPG, no features masked.
pairs_matches, preport = matching.match_images(data, {}, images, images)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\matching.py”, line 56, in match_images
2022-01-14 13:15:39,657 DEBUG: Matching DJI_0295.JPG and DJI_0343.JPG. Matcher: FLANN (symmetric) T-desc: 0.267 T-robust: 0.001 T-total: 0.269 Matches: 398 Robust: 388 Success: True
2022-01-14 13:15:39,667 DEBUG: No segmentation for DJI_0215_4.JPG, no features masked.
match_images_with_pairs(data, config_override, exifs, pairs),
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\matching.py”, line 80, in match_images_with_pairs
matches = context.parallel_map(match_unwrap_args, args, processes, jobs_per_process)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\context.py”, line 56, in parallel_map
2022-01-14 13:15:39,672 DEBUG: No segmentation for DJI_0824_2.JPG, no features masked.
2022-01-14 13:15:39,674 DEBUG: No segmentation for DJI_0371_3.JPG, no features masked.
res = Parallel(batch_size=batch_size)(delayed(func)(arg) for arg in args)
File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\joblib\parallel.py”, line 1061, in call
2022-01-14 13:15:39,681 DEBUG: No segmentation for DJI_0018_9.JPG, no features masked.
self.retrieve()
File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\joblib\parallel.py”, line 940, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File “multiprocessing\pool.py”, line 768, in get
File “multiprocessing\pool.py”, line 125, in worker
File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\joblib_parallel_backends.py”, line 595, in call
return self.func(*args, **kwargs)
File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\joblib\parallel.py”, line 262, in call
return [func(*args, **kwargs)
File “E:\WebODM\resources\app\apps\ODM\venv\lib\site-packages\joblib\parallel.py”, line 262, in
return [func(*args, **kwargs)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\matching.py”, line 210, in match_unwrap_args
matches = match(im1, im2, camera1, camera2, data, config_override, pose)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\matching.py”, line 579, in match
p1, p2, matches, matcher_type = _match_descriptors_impl(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\matching.py”, line 353, in _match_descriptors_impl
features_data1 = feature_loader.instance.load_all_data(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\feature_loading.py”, line 109, in load_all_data
2022-01-14 13:15:39,695 DEBUG: No segmentation for DJI_0096_7.JPG, no features masked.
2022-01-14 13:15:39,697 DEBUG: No segmentation for DJI_0250_7.JPG, no features masked.
features_data = self._load_all_data_masked(data, image)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\feature_loading.py”, line 160, in _load_all_data_masked
features_data = self._load_all_data_unmasked(data, image)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\feature_loading.py”, line 154, in _load_all_data_unmasked
return self._load_features_nocache(data, image)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\feature_loading.py”, line 201, in _load_features_nocache
features_data = data.load_features(image)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\dataset.py”, line 313, in load_features
with self.io_handler.open(features_filepath, “rb”) as f:
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\io.py”, line 1439, in open
return open(*args, **kwargs)
FileNotFoundError: [Errno 2] No such file or directory: ‘E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\opensfm\features\DJI_0968_5.JPG.features.npz’
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” create_submodels “E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\opensfm”
[INFO] Dataset has been split into 3 submodels. Reconstructing each submodel…
[INFO] Reconstructing E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\submodels\submodel_0000\opensfm
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” create_tracks “E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\submodels\submodel_0000\opensfm”
2022-01-14 13:15:56,561 INFO: reading features
Traceback (most recent call last):
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm_main.py”, line 25, in
commands.command_runner(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command_runner.py”, line 37, in command_runner
command.run(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command.py”, line 12, in run
self.run_impl(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\create_tracks.py”, line 11, in run_impl
create_tracks.run_dataset(dataset)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\actions\create_tracks.py”, line 12, in run_dataset
features, colors, segmentations, instances = tracking.load_features(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\tracking.py”, line 28, in load_features
features_data = dataset.load_features(im)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\dataset.py”, line 313, in load_features
with self.io_handler.open(features_filepath, “rb”) as f:
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\io.py”, line 1439, in open
return open(*args, **kwargs)
FileNotFoundError: [Errno 2] No such file or directory: ‘E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\submodels\submodel_0000\opensfm\features\DJI_0252_5.JPG.features.npz’
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” reconstruct “E:\WebODM\resources\app\apps\NodeODM\data\fddc31c1-db21-4491-87e4-67d7b867ae69\submodels\submodel_0000\opensfm”
Traceback (most recent call last):
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm_main.py”, line 25, in
commands.command_runner(
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command_runner.py”, line 37, in command_runner
command.run(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command.py”, line 12, in run
self.run_impl(data, args)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\reconstruct.py”, line 11, in run_impl
reconstruct.run_dataset(dataset)
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\actions\reconstruct.py”, line 9, in run_dataset
tracks_manager = data.load_tracks_manager()
File “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\opensfm\dataset.py”, line 381, in load_tracks_manager
return pymap.TracksManager.instanciate_from_file(self._tracks_manager_file(filename))
RuntimeError: Can’t read tracks manager file
[ERROR] The program could not process this dataset using the current settings. Check that the images have enough overlap, that there are enough recognizable features and that the images are in focus. You could also try to increase the --min-num-features parameter.The program will now exit.

1 Like

Yeah, we’re trying to isolate exactly what’s going on and the failure method. Piero should have a patch out soonish to address this if my testing holds up.

1 Like

Do you need any more console logs to help determine the problem? I have plenty saved!

1 Like

Not sure! Seems pretty deterministic.

What might be helpful is if you tried manually patching gpu.py in your WebODM installation to see if it gracefully fails over from GPU to CPU without resizing.

Change this location:

As per this larger/encompassing code block:

1 Like

OK, did that and tried to run a task

306 images 02:53:05

Cannot process dataset

Created on: 14/01/2022, 17:24:32
Processing Node: node-odm-1 (auto)
Options: auto-boundary: true, gps-accuracy: 3, matcher-neighbors: 12, mesh-octree-depth: 12, mesh-size: 250000, min-num-features: 10000, pc-filter: 5, pc-geometric: true, pc-rectify: true, use-3dmesh: true

Start of console

[INFO] Running dataset stage
[INFO] Loading dataset from: E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\images
[INFO] Loading 306 images
[INFO] Forcing GPS DOP to 3.0 for all images
[INFO] Wrote images database: E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\images.json
[INFO] Found 306 usable images
[INFO] Parsing SRS header: WGS84 UTM 56S
[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
[INFO] Maximum photo dimensions: 5472px
[INFO] Photo dimensions for feature extraction: 2736px
[INFO] Using GPU for extracting SIFT features
[INFO] Altitude data detected, enabling it for GPS alignment
[INFO] [‘use_exif_size: no’, ‘flann_algorithm: KDTREE’, ‘feature_process_size: 2736’, ‘feature_min_frames: 10000’, ‘processes: 16’, ‘matching_gps_neighbors: 12’, ‘matching_gps_distance: 0’, ‘matching_graph_rounds: 50’, ‘optimize_camera_parameters: yes’, ‘reconstruction_algorithm: incremental’, ‘undistorted_image_format: tif’, ‘bundle_outlier_filtering_type: AUTO’, ‘sift_peak_threshold: 0.066’, ‘align_orientation_prior: vertical’, ‘triangulation_type: ROBUST’, ‘retriangulation_ratio: 2’, ‘matcher_type: FLANN’, ‘feature_type: SIFT_GPU’, ‘use_altitude_tag: yes’, ‘align_method: auto’, ‘local_bundle_radius: 0’]
[INFO] Wrote reference_lla.json
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” detect_features “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\opensfm”
2022-01-14 17:26:02,947 INFO: Expecting to process 200 images.
2022-01-14 17:26:02,955 INFO: Reading data for image DJI_0525.JPG (queue-size=0
2022-01-14 17:26:02,955 INFO: Reading data for image DJI_0602.JPG (queue-size=0
2022-01-14 17:26:02,955 INFO: Reading data for image DJI_0680.JPG (queue-size=0
2022-01-14 17:26:02,955 INFO: Reading data for image DJI_0757.JPG (queue-size=0
2022-01-14 17:26:03,257 INFO: Reading data for image DJI_0681.JPG (queue-size=1
2022-01-14 17:26:03,257 INFO: Extracting ROOT_SIFT_GPU features for image DJI_0680.JPG
2022-01-14 17:26:03,275 INFO: Reading data for image DJI_0758.JPG (queue-size=1
2022-01-14 17:26:03,275 INFO: Extracting ROOT_SIFT_GPU features for image DJI_0757.JPG

End of console:
→ Statistical filtering

?> Done in 46.66s

→ Writing output

?> Done in 28.11s

?> Pipeline done in 89.3s

[INFO] Finished odm_filterpoints stage
[INFO] Running odm_meshing stage
[INFO] Writing ODM Mesh file in: E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.ply
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\PoissonRecon” --in “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_filterpoints\point_cloud.ply” --out “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.dirty.ply” --depth 12 --pointWeight 4.0 --samplesPerNode 1.0 --threads 15 --bType 2 --linearFit
[WARNING] Child returned 3221226505
[WARNING] PoissonRecon failed with 7 threads, let’s retry with 3…
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\PoissonRecon” --in “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_filterpoints\point_cloud.ply” --out “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.dirty.ply” --depth 12 --pointWeight 4.0 --samplesPerNode 1.0 --threads 7 --bType 2 --linearFit
[WARNING] Child returned 3221226505
[WARNING] PoissonRecon failed with 3 threads, let’s retry with 1…
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\PoissonRecon” --in “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_filterpoints\point_cloud.ply” --out “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.dirty.ply” --depth 12 --pointWeight 4.0 --samplesPerNode 1.0 --threads 3 --bType 2 --linearFit
[WARNING] Child returned 3221226505
[WARNING] PoissonRecon failed with 1 threads, let’s retry with 0…
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\PoissonRecon” --in “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_filterpoints\point_cloud.ply” --out “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.dirty.ply” --depth 12 --pointWeight 4.0 --samplesPerNode 1.0 --threads 1 --bType 2 --linearFit
[WARNING] Child returned 3221226505
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\OpenMVS\ReconstructMesh” -i “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.dirty.ply” -o “E:\WebODM\resources\app\apps\NodeODM\data\6611fdb1-26d8-4884-a890-e9ae947d8edd\odm_meshing\odm_mesh.ply” --remove-spikes 0 --remove-spurious 20 --smooth 0 --target-face-num 500000 -v 0
===== Dumping Info for Geeks (developers need this to fix bugs) =====
Child returned 1
Traceback (most recent call last):
File “E:\WebODM\resources\app\apps\ODM\stages\odm_app.py”, line 94, in execute
self.first_stage.run()
File “E:\WebODM\resources\app\apps\ODM\opendm\types.py”, line 346, in run
self.next_stage.run(outputs)
File “E:\WebODM\resources\app\apps\ODM\opendm\types.py”, line 346, in run
self.next_stage.run(outputs)
File “E:\WebODM\resources\app\apps\ODM\opendm\types.py”, line 346, in run
self.next_stage.run(outputs)
[Previous line repeated 3 more times]
File “E:\WebODM\resources\app\apps\ODM\opendm\types.py”, line 327, in run
self.process(self.args, outputs)
File “E:\WebODM\resources\app\apps\ODM\stages\odm_meshing.py”, line 24, in process
mesh.screened_poisson_reconstruction(tree.filtered_point_cloud,
File “E:\WebODM\resources\app\apps\ODM\opendm\mesh.py”, line 205, in screened_poisson_reconstruction
system.run(’"{reconstructmesh}" -i “{infile}” ’
File “E:\WebODM\resources\app\apps\ODM\opendm\system.py”, line 106, in run
raise SubprocessException(“Child returned {}”.format(retcode), retcode)
opendm.system.SubprocessException: Child returned 1

===== Done, human-readable information to follow… =====

[ERROR] Uh oh! Processing stopped because of strange values in the reconstruction…

I can upload the whole console if useful

Just running ver 51 on the same set, GPU used for no resize - high quality, but I’ve just spotted this, not sure what the altitude issue is, as it’s actually ~685m ASL.

[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” match_features “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm”
2022-01-15 18:04:24,459 INFO: Altiude is negative (-0.11137252230493022) : viewing directions are probably divergent. Using default altide of 1.0
2022-01-15 18:04:24,459 INFO: Altitude for orientation based matching 1.0
2022-01-15 18:04:24,505 INFO: Altiude is negative (-0.11137252230493022) : viewing directions are probably divergent. Using default altide of 1.0
2022-01-15 18:04:24,505 INFO: Altitude for orientation based matching 1.0
2022-01-15 18:04:24,646 INFO: Matching 3145 image pairs
2022-01-15 18:04:24,646 INFO: Computing pair matching with 16 processes

And 2 1/4 hours in, success (I think) with fallback to CPU

Running openmvs stage
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm” export_openmvs “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm”
[INFO] Running dense reconstruction. This might take a while.
[INFO] Estimating depthmaps
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\OpenMVS\DensifyPointCloud” “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm\undistorted\openmvs\scene.mvs” --resolution-level 0 --min-resolution 1368 --max-resolution 1368 --max-threads 16 --number-views-fuse 2 -w “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm\undistorted\openmvs\depthmaps” -v 0
[WARNING] OpenMVS failed with GPU, is your graphics card driver up to date? Falling back to CPU.
[INFO] running “E:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\OpenMVS\DensifyPointCloud” “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm\undistorted\openmvs\scene.mvs” --resolution-level 0 --min-resolution 1368 --max-resolution 1368 --max-threads 16 --number-views-fuse 2 -w “E:\WebODM\resources\app\apps\NodeODM\data\4dbaaa6d-aaea-49d0-ba65-6ea7734a0b5a\opensfm\undistorted\openmvs\depthmaps” -v 0 --cuda-device -1

Yes my driver is up to date.

And now the task has ended without crashing, sadly, the 3D model is a complete mess, and many of the camera positions are shown as pointing upwards, which of course they weren’t.

messy3D

Rolled back to ver 47, this is what it should look like, with all cameras facing downwards!

good3D-chookshed

Was the broken reconstruction using triangulation instead of incremental? No other parameters changed between those two runs, right?

1 Like

Mostly the same, but a few changes- here are the respective details

[INFO] Maximum photo dimensions: 5472px
[INFO] Photo dimensions for feature extraction: 2736px
[INFO] Using GPU for extracting SIFT features
[INFO] Altitude data detected, enabling it for GPS alignment
[INFO] [‘use_exif_size: no’, ‘flann_algorithm: KDTREE’, ‘feature_process_size: 2736’, ‘feature_min_frames: 8000’, ‘processes: 16’, ‘matching_gps_neighbors: 10’, ‘matching_gps_distance: 0’, ‘matching_graph_rounds: 50’, ‘optimize_camera_parameters: yes’, ‘reconstruction_algorithm: triangulation’, ‘undistorted_image_format: tif’, ‘bundle_outlier_filtering_type: AUTO’, ‘sift_peak_threshold: 0.066’, ‘align_orientation_prior: vertical’, ‘triangulation_type: ROBUST’, ‘retriangulation_ratio: 2’, ‘matcher_type: FLANN’, ‘feature_type: SIFT_GPU’, ‘use_altitude_tag: yes’, ‘align_method: auto’, ‘local_bundle_radius: 0’]

Resized 0.5X to save time

[INFO] Maximum photo dimensions: 2736px
[INFO] Photo dimensions for feature extraction: 2736px
[INFO] Altitude data detected, enabling it for GPS alignment
[INFO] [‘use_exif_size: no’, ‘flann_algorithm: KDTREE’, ‘feature_process_size: 2736’, ‘feature_min_frames: 8000’, ‘processes: 16’, ‘matching_gps_neighbors: 12’, ‘matching_gps_distance: 0’, ‘optimize_camera_parameters: yes’, ‘undistorted_image_format: tif’, ‘bundle_outlier_filtering_type: AUTO’, ‘sift_peak_threshold: 0.066’, ‘align_orientation_prior: vertical’, ‘triangulation_type: ROBUST’, ‘retriangulation_ratio: 2’, ‘matcher_type: FLANN’, ‘feature_type: SIFT’, ‘use_altitude_tag: yes’, ‘align_method: auto’, ‘local_bundle_radius: 0’]

1 Like

How do you roll back to Ver 47? I am having issues getting past the matching stage of the process since I upgraded (currently 40 hours just in matching images with a 1500 image dataset that used to only take 1 1/2 hours in the matching stage) and need to get some processing done. Currently running build 51 but want that build 47. Any help is appreciated.

1 Like