Expected Memory Usage for 42MP 201 Image Set?

Hello,

We’re attempting to test out WebODM with 42MP images, 201 in the set. Currently we seem to OOM even with 16GB RAM, 32GB swap. I assume using full resolution is advantageous. I was also looking at ClusterODM, and noticed for a 201 image set on AWS, it seems to recommend an M5.large instance (8GB RAM).

So I have three questions:

  1. How much memory should I expect to use, do you think?
  2. Are the images too large? I’d image more is better.
  3. Is it possible to configure ClusterODM to look at image size, and not just quantity?

Thanks :slight_smile: .

1 Like

Depends on your processing settings, really.

I can OOM with about 20 12MP images on 28GB RAM if I go a bit nuts with my settings.

  1. 64GB+, I’d say is comfortable for defaults and some light tweaks
  2. Should not be too large, but certainly too large for 16GB of RAM
  3. I’m not sure I understand your query
1 Like

Thank you very much with 1 & 2. Definitely helps us understand the scale we should be dealing with.

For 3. I’m referring to this document. It appears I can tell ClusterODM to spin up instances based on quantity of images, but I don’t see how to get it to factor in the size of the images, which seems to be relevant.

1 Like
  • 32GB + 32GB swap should do it. But it depends on the settings, the altitude of the flight, and the output orthophoto/dsm resolution.
  • ODM should be able to handle those. But resizing will reduce both memory usage and improve runtime. Do you need super-high resolution outputs? If no, then resize.
  • Currently not (but you could modify ClusterODM…)
3 Likes

Thank you very much for those numbers and the information. I’ll add modifying ClusterODM to our task list (and contribute back!). Thank you!

3 Likes

Confirming this did indeed work perfectly! Very nice result too.

2 Likes

Please provide a update on your rendering. Looking to the future I am wondering about a 48to 55 MB photos in system requirements. You can provide that answer.
I am rendering about 40 photos 21MP pushing ODM into high gear can clearly see a person’s eye … solid clean color pupil with white color around it. ODM is great!!!

1 Like

I will, I’m currently investigating into having ClusterODM scale depending on the size of the images.

A random guess based on our tests would be simply 8-16GB RAM should do the trick, 8GB swap just in case, as your set is around 1/8 the size of our set. This is a rough guess though, I haven’t done a lot of testing yet.

Do you think it’s reasonable to estimate memory usage by only factoring in total image size? I was thinking if I just multiply the total size by 8, add 500MB on, that might be a “reasonable” estimation. Hopefully a better estimate than just using image count anyways.

Total megapixels (if not resized) is definitely a better estimate of total and maximum resource use. Maybe that’s something we should be explicitly tracking at GitHub - OpenDroneMap/odm-benchmarks: Benchmark data index for OpenDroneMap and WebODM.

3 Likes

So as an efficient solution, grab the MP from an image (using image-pixels or something), multiply that number by the total images? If that’s all, I’ll work on implementing that.

Thanks!

2 Likes

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