Windows 10 Pro
Intel Core i9-10885H @ 2.40GHz
Graphics: NVIDIA GeForce GTX 1650 Ti (apparently not being used)
Windows Native WebODM 1.9.14
I am attempting to build a 3D model (textured mesh) of a complex sculpture. Because of the complexity, I have shot ~350 images to try to cover everything. When I process this it takes “forever” to complete the match-features stage. What I mean by forever is that I have never successfully completed it. I have had issues where I thought it stopped processing because the log file did not update (see Windows Native WebODM hung matching images) for a long period of time - over 12 hours in one instance. I have had my computer crash after 40+ hours of processing. So, I have given up processing all images and am trying to do a subset, playing with masking and parameters, etc.
It appears to me that match_features is not running multi-threaded. My system has 8 cores, 16 threads, yet during match_features it does not appear that all cores/threads are being used. For testing purposes I am running with 50 images and trying to log what is happening.
The log file shows:
[INFO] running "C:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\opensfm" match_features "C:\WebODM\resources\app\apps\NodeODM\data\92e945b6-70dd-4365-9f00-f2ade721920e\opensfm" 2022-06-11 18:23:58,770 INFO: Matching 1225 image pairs 2022-06-11 18:23:58,770 INFO: Computing pair matching with 16 processes
During detect_features, I see CPU usage pegged at 100% (the 100% CPU usage in screen capture of Task Manager below). I did the screen capture during match_features (right portion of screen capture):
Note that overall CPU is < 50%.
Likewise, Resource Monitor shows similar information:
The Python task at the top is averaging between 12 and 13%. In a test last week with more images, that was consistently around 8%. That Python task’s PID is 39744. Here is the command line for that task:
Command Line: C:\WebODM\resources\app\apps\ODMWpython38\python.exe "C:\WebODM\resources\app\apps\ODM\SuperBuild\install\bin\opensfm\bin\\opensfm_main.py" match_features "C:\WebODM\resources\app\apps\NodeODM\data\92e945b6-70dd-4365-9f00-f2ade721920e\opensfm" Path: C:\WebODM\resources\app\apps\ODM\python38\python.exe
I don’t know what to conclude other than match_features is not running 16 processes as it claims. If I could get it from 1 (or 2) processes to 16 processes, I might be able to complete my ~350 images in a reasonable amount of time. On one pass with just over 200 images, I projected that it would take ~120 hours to complete, and it was using about 7% of the total CPU. If I could get it even to 50%, that would be 7x faster, and the total time for match_feaatures would be <20 hours instead of the 120 hours I projected.
Bottom line: Is match_features working as intended?