Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.0.3 texturing runs up memory until it fails, only when using triangulation #1585

Open
summitbri opened this issue Jan 19, 2023 · 1 comment

Comments

@summitbri
Copy link

How did you install ODM? (Docker, installer, natively, ...)?

Ubuntu 20.04

docker run -ti --detach --rm --tty --name odm_container -v /odm/datasets/project:/datasets/code opendronemap/odm --project-path /datasets
--auto-boundary
--orthophoto-resolution 1.5
--dsm
--rerun-from dataset
--force-gps
--gps-accuracy 0.03
--sfm-algorithm triangulation

What is the problem?

3.0.3 texturing runs through memory and swap until it fails, only fails when using triangulation

What should be the expected behavior? If this is a feature request, please describe in detail the changes you think should be made to the code, citing files and lines where changes should be made, if possible.

Doesn't fail when not using triangulation

How can we reproduce this? What steps did you do to trigger the problem? If this is an issue with processing a dataset, YOU MUST include a copy of your dataset uploaded on Google Drive or Dropbox (otherwise we cannot reproduce this).

Data set and logfile are uploaded here: https://drive.google.com/drive/folders/1b1FaQ9dHYdlNohzoWKTxYTR2gK4SomED?usp=share_link

@HeDo88TH
Copy link
Contributor

It fails regardless of --sfm-algorithm triangulation

Traceback (most recent call last):
  File "C:\ODM\SuperBuild\install\bin\opensfm\bin\\opensfm_main.py", line 25, in <module>
    commands.command_runner(
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command_runner.py", line 38, in command_runner
    command.run(data, args)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\command.py", line 13, in run
    self.run_impl(data, args)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\commands\detect_features.py", line 13, in run_impl
    detect_features.run_dataset(dataset)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\actions\detect_features.py", line 15, in run_dataset
    features_processing.run_features_processing(data, data.images(), False)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\features_processing.py", line 79, in run_features_processing
    parallel_map(process, arguments, processes, 1)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\context.py", line 59, in parallel_map
    res = Parallel(batch_size=batch_size)(delayed(func)(arg) for arg in args)
  File "C:\ODM\venv\lib\site-packages\joblib\parallel.py", line 1056, in __call__
    self.retrieve()
  File "C:\ODM\venv\lib\site-packages\joblib\parallel.py", line 935, 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 "C:\ODM\venv\lib\site-packages\joblib\_parallel_backends.py", line 595, in __call__
    return self.func(*args, **kwargs)
  File "C:\ODM\venv\lib\site-packages\joblib\parallel.py", line 262, in __call__
    return [func(*args, **kwargs)
  File "C:\ODM\venv\lib\site-packages\joblib\parallel.py", line 262, in <listcomp>
    return [func(*args, **kwargs)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\features_processing.py", line 146, in process
    read_images(queue, data, images, counter, expected, force)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\features_processing.py", line 163, in read_images
    image_array = data.load_image(image)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\dataset.py", line 109, in load_image
    return self.io_handler.imread(
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\io.py", line 1494, in imread
    return imread_from_fileobject(fb, grayscale, unchanged, anydepth)
  File "C:\ODM\SuperBuild\install\bin\opensfm\opensfm\io.py", line 1248, in imread_from_fileobject
    image = cv2.imdecode(im_buffer, flags)
cv2.error: OpenCV(4.5.0) D:\a\ODM\ODM\SuperBuild\src\opencv\modules\core\src\alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 134184960 bytes in function 'cv::OutOfMemoryError'

I have 64GB RAM and 12GB video card and it says this:

[WARNING] Image size (4096x2730px) would not fit in GPU memory, try lowering --feature-quality. Falling back to CPU

Without parameters it works. I think it's --dsm that causes this abnormal (?) memory usage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants