Processing node went offline. This could be due to insufficient memory or a network error... and other errors

Hi,
I am having memory problems. I have 128GB of system memory with over 200GB of Windows virtual memory. I am running WebOdM in docker with WSL 2. My .wslconfig file WAS configured with
memory 112GB and the swap was at 150GB. This gave me this memory error

[INFO] running “/code/SuperBuild/install/bin/odm_orthophoto” -inputFiles /var/www/data/86366996-e24b-49d3-a76c-ea751a386083/odm_texturing_25d/odm_textured_model_geo.obj -logFile “/var/www/data/86366996-e24b-49d3-a76c-ea751a386083/odm_orthophoto/odm_orthophoto_log.txt” -outputFile “/var/www/data/86366996-e24b-49d3-a76c-ea751a386083/odm_orthophoto/odm_orthophoto_render.tif” -resolution 20.0 -outputCornerFile “/var/www/data/86366996-e24b-49d3-a76c-ea751a386083/odm_orthophoto/odm_orthophoto_corners.txt”

With the classic error message [ERROR] Whoops! You ran out of memory! Add more RAM to your computer, if you’re using docker configure it to use more memory, for WSL2 make use of .wslconfig (Advanced settings configuration in WSL | Microsoft Docs), resize your images, lower the quality settings or process the images using a cloud provider (e.g. https://webodm.net).

Adding and extra 50GB (200GB) total to the swap did not fix the problem. I also noted that my swap memory was not being used much so I figure this part of the code needed real system memory to work… It this possible?

Anyway, I add 150GB of memory in the configuration file. This is more than the 128GB of real system ram (and obviously a bad idea). I was hopping Docker would then use Windows virtual memory rather then using the Docker swap memory. This gave me Processing node went offline error.

What is the way out of this bind? Is my only solution reducing the amount of images? Using feature_quality: high (rather than ultra) is not an option for my 1950’s orthophotos.

Thanks for your help (again).
Nicolas

1 Like

Do you have an estimated footprint for the reconstruction area and rough idea of GSD?

Hi,
Approximately 400km2. What is the GSD?
Thanks again for your help
Nicolas

1 Like

I have reduced from 16 to 9 images to test. Using this configuration, I only have overlap in the flight path direction…

1 Like

When imaging with a drone, Ground Sample Distance - essentially the size of the pixels. With 400km^2 area, the file needs to be quite large to maintain fine details. If you know the width dimension on the ground of the original image scan, and how many pixels wide the scan is, you can determine GSD pretty well.

2 Likes

Thanks for that extra info. I will check tomorrow. For now, I can say that the images are 10680x10680. 1200dpi, scale is 1:20k. I will check the pixel posting in the morning. Traditionally the scene would have about 8.1m square miles.

2 Likes

I think this is correct -

10680pixels / 1200dpi = 8.9"
20000 * 8.9 / 39.37 = 4521m * 4521m image size
4521/10680 = 420mm GSD

EDIT, from a later post

X2 for above calculation, so GSD more like 84cm.

2 Likes

I dont know if this way fix the problem, but I hope it will helpful

Please try ODM native command prompt in Windows. You can download the installer at download site

for example, put all of your images in D:\Qwerty\code\images

Then run this

run --project-path “D:\Qwerty” --dem-resolution 5 --orthophoto-resolution 5 --feature-quality ultra

Please note the resolution was capped with GSD, so you can add --ignore-gsd flag If you want force the resolution sharper than GSD

1 Like

Hi,

I abandoned using OSM native as I was getting inconsistent results using the same parameters. The reconstructed area was very small compared to my first partial success runs using Docker with hyper-V. I switched to ODM hopping it would be faster and easier to track my different commands using the command prompt.

I can’t understand why some things would work in hyper-v machine but not locally. I figured it came down to versions of odm being slightly different.

After seeing the inconsistent runs using ODM on windows, I then reinstalled webODM using docker with WSL2.

Are you hopping the parameters you gave me will help or using odm directly on Windows will help? I am using -fast orthophoto so I think the dem resolution command is not useful and I thing orthophoto resolution is at 5 by default. I will check.

Thanks
Nicolas

2 Likes

If you have any successfull runs, the Report.pdf should state the reconstructed GSD and the area.

It’d also be really helpful if you could include your processing options.

1 Like

Hi,
GSD was estimated at 79.3cm in that report. Pixel size is 0.80m in QGIS so both are very close. For the “successfull” run (the run with the biggest recontruction, these where the options.

[INFO] auto_boundary: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] debug: False
[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_postprocess
[INFO] fast_orthophoto: True
[INFO] feature_quality: ultra
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: /var/www/data/465ba25b-1ecf-4d93-9a24-21af7d080a6d/gcp/geo.txt
[INFO] gps_accuracy: 250.0
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 8
[INFO] matcher_type: bruteforce
[INFO] max_concurrency: 6
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 18000
[INFO] name: 465ba25b-1ecf-4d93-9a24-21af7d080a6d
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 5
[INFO] pc_classify: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_geometric: False
[INFO] pc_las: False
[INFO] pc_quality: medium
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] sfm_algorithm: incremental
[INFO] skip_3dmodel: True
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: 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_keep_unseen_faces: False
[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: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] verbose: False

For the run that created the above memory error, the options where the following: The biggest difference between both runs is the use of some GCP, min-number of feature at 40k (rather than 18K), and pc-tiles I think…

INFO] Fast orthophoto is turned on, automatically setting --skip-3dmodel
[INFO] Initializing ODM 2.7.2 - Sat Feb 05 17:13:20 2022
[INFO] ==============
[INFO] auto_boundary: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 0.0
[INFO] debug: False
[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_postprocess
[INFO] fast_orthophoto: True
[INFO] feature_quality: ultra
[INFO] feature_type: sift
[INFO] force_gps: True
[INFO] gcp: /var/www/data/86366996-e24b-49d3-a76c-ea751a386083/gcp/gcp_list.txt
[INFO] geo: None
[INFO] gps_accuracy: 250.0
[INFO] ignore_gsd: True
[INFO] matcher_neighbors: 8
[INFO] matcher_type: bruteforce
[INFO] max_concurrency: 9
[INFO] merge: all
[INFO] mesh_octree_depth: 14
[INFO] mesh_size: 200000
[INFO] min_num_features: 40000
[INFO] name: 86366996-e24b-49d3-a76c-ea751a386083
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 5
[INFO] pc_classify: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_geometric: False
[INFO] pc_las: False
[INFO] pc_quality: medium
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_tile: True
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] sfm_algorithm: incremental
[INFO] skip_3dmodel: True
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: 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_keep_unseen_faces: False
[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: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] verbose: False

2 Likes

Looks like I mixed the scale and the altitude. Altitude was 20000 feet and the scale 1:40 000. Area should be 32.3 square miles. Qgis give me a GSD of 80cm while ODM estimates it at 79.3cm. Sorry for your loss of time and thanks for the help

Nicolas

2 Likes

--pc-tile should, in theory, help with memory pressure.

I’m happy to see you adjust --crop to 0, it can help get the largest reconstruction, though it may not be as clean around the edges.

However, you’ve added our favorite dangerous flag, --ignore-gsd to the mix alongside a few other changes. Can you please leave this one out and try to change as few flags as possible when A/B testing?

Another incredibly heavy flag is --mesh-octree-depth, which I believe doubles the memory required (roughly) each level.

1 Like

Ok,
I will test without -ignore-gsd and will leave --mesh-octree-depth to default.
Thanks
Nicolas

2 Likes

Currently testing with:

crop: 0, debug: true, fast-orthophoto: true, feature-quality: ultra, force-gps: true, gps-accuracy: 250, matcher-type: bruteforce, min-num-features: 18000, pc-tile: true, resize-to: -1 I also reduced the threads from 9 to 6 in the WSL2.

I just noticed that resize-to:… was added automatically to 2048. Maybe removing this will help? -1 apparently deactivate this old option.

I will update in a couple of hours…
Thanks

3 Likes

Hi,
Last run finished but the reconstructed area is very small (much smaller than my first runs). I will re-running the exact same script to see what is going on. Then I will boost the min-num-features to 20 000 or 25 000… How much of this is up to pure chance based on those min-num features found?
Nicolas

2 Likes

Yes, perhaps it will help you if you using ODM directly on Windows since Windows have access to page file :ok_hand:

Personally, I never use Windows as main OS for WebODM, (I use native ODM command line on Windows).

I use Linux as main OS + WebODM Docker since we don’t need to use WSL that cause unexpected problem.

Thanks again

1 Like

It was from ODM native command line or WSL Docker WebODM?

Currently on WebODM with docker on WSL2.

Hi,
I have place screen shots of two identical runs in my Google drive. As you can see, results are very different. This is the exact same project. All I did for run2 is click “restart” from Load Dataset. If you have any idea of what is going on, I am ready to listen!

I am relaunching with min-num-features:40 000

https://drive.google.com/open?id=1GCv4SHhv-FSHGB3aEn5aSIarIfl-TjWb&authuser=njacadieux.gitlab%40gmail.com&usp=drive_fs

2 Likes