Why cant I figure out how to allocate more RAM to WebODM?

I am a drone operator trying to render DSM+DTM and orthophoto for a 49acre parcel of undeveloped dirt land in Arizona. I wanted it high-resolution so I shot the photos from 100ft in a lawnmower pattern with an -10 camera angle instead of straight down and it ended up being 2,681 photos total.

Installed WebODM using the installer package.

OS: Windows 10 4-bit
Installed Ram: 32Gb
Processor: AMD Ryzen 7 3700X 8-Core Processor 3.6GHz

Issue - Not all of my computing power is able to be used.
Only 38% of memory is being used and 2% of CPU is being used… Read lots of articles and cannot figure out how to fix this to allocate more to webodm.

Question - Was it the angle the photos were taken that is messing up the rendering? I was able to successfully render 400 photos, but not the whole thing at once.

The Photos

WebODM should take what is appropriate when using the WebODM for Windows native version. If you’re using the Docker version, you’ll need to adjust your settings in Docker/Hyper-V/WSL2.

Not every step of the process will use 100% of your RAM and CPU.

1 Like

I am unsure of what I have. I used the paid installer package for windows, but it was not using much much of the available resources, so I started trying to go the docker route and downloaded docker and made a cloud server through linode to try and do it on that and now I am stuck. (I know nothing about coding, docker, or virtual machines… this is all new to me)

If you downloaded it recently (past month or so), you should be using the native version.

I would strongly recommend using that and getting rid of the Docker version.

Current release should be:
v1.9.7 Build 32

Okay, I can do that. Does that work with NodeODM? I have a bunch of older desktops living in my apartment rent free that I’d like to all work together to help processing.

You can use clusterOdm to process a job on several computers running nodeOdm

Is nodeODM or ClusterODM something I have to install separately from WebODM?

Yes, ClusterODM will need to be installed and running somewhere to act as the marshaller, and you’d need NodeODM (at least) on every machine you wish to use as a processing node.

You can add your WebODM instance of NodeODM to ClusterODM, but you’ll need to get the hostname/port/Token from WebODM’s Processing Nodes edit page for node-odm-1.

AAhhh… This is a little outside my experience level haha. If this is a lot easier than it sounds and someone would be willing to assist I would greatly appreciate it. Otherwise, if there are any other conversation threads or videos that show how to do this set by step I would greatly appreciate it! What kind of courses or certificates could I take to help me understand how this stuff works? Python courses maybe?

1 Like

It isn’t too bad, honestly.

First, I’d hit the GitHub repo for ClusterODM:
OpenDroneMap/ClusterODM: A NodeODM API compatible autoscalable load balancer and task tracker for easy horizontal scaling ♆ (github.com)

Then, I’d hit the GitHub repo for NodeODM:
OpenDroneMap/NodeODM: A lightweight REST API to access aerial image processing engines such as ODM or MicMac (github.com)

Finally, I’d take a poke at my running WebODM to find the information I need for it’s node-odm-1 instance:
image

Those courses sound great, but I think they’d mostly be valuable for you to understand things more behind the scenes in the code, not necessarily at the systems-level where things interact (though it sure would help).

1 Like

Thank you for the help! I will give it a shot and reach out if/when I have questions.

2 Likes