Docker on Win 10 Pro throws python exception when meshing

I am running ODM from Docker on Windows 10 Pro but the job cannot finish and I have tried on several datasets incl. Calittera from the odm data set
Things go well until the Poisson reconstruction.

I have 16 core 3.5GHz AMD Ryzen 9 3950X and 128GB of RAM with NVIDIA GeForce RTX 2080 Ti.
So RAM and speed should not been an issue.
Docker was installed normally as Docker Desktop from their website and then followed the ODM guide at github.com/OpenDroneMap/ODM/wiki/Docker onlu adding project-path as otherwise it could not find the images

This is the docker command

docker run -it --rm -v “$(pwd)/images:/code/images” -v “$(pwd)/odm_orthophoto:/code/odm_orthophoto” -v “$(pwd)/odm_georeferencing:/code/odm_georeferencing” opendronemap/odm --mesh-size 100000 --project-path /

and this is the end of the log (I see no obvious errors above this but who am I so full log here Full log)

Processing view "0075" (with colors)...
Processing view "0076" (with colors)...
Writing final point set (12809902 points)...
Writing PLY file (12809902 verts, with colors, with normals, with confidences, with values, 0 faces)... done.
[INFO]    running /code/SuperBuild/src/elibs/mve/apps/meshclean/meshclean -t0.6 --no-clean --component-size=0 "/code/mve/mve_dense_point_cloud.ply" "/code/mve/mve_dense_point_cloud.filtered.ply"
MVE FSSR Mesh Cleaning (built on Feb 29 2020, 17:26:02)
Loading mesh: /code/mve/mve_dense_point_cloud.ply
PLY Loader: comment Export generated by libmve
Reading PLY: 12809902 verts... done.
Removing low-confidence geometry (threshold 0.6)...
  Deleted 963299 low-confidence vertices.
Writing mesh: /code/mve/mve_dense_point_cloud.filtered.ply
Writing PLY file (11846603 verts, with colors, with normals, with confidences, with values, 0 faces)... done.
[INFO]    Finished mve stage
[INFO]    Running odm_filterpoints stage
[INFO]    Filtering point cloud (statistical, meanK 16, standard deviation 2.5)
[INFO]    running /code/build/bin/odm_filterpoints -inputFile /code/mve/mve_dense_point_cloud.ply -outputFile /code/odm_filterpoints/point_cloud.ply -sd 2.5 -meank 16 -sample 0
[INFO]    Finished odm_filterpoints stage
[INFO]    Running odm_meshing stage
[INFO]    Writing ODM Mesh file in: /code/odm_meshing/odm_mesh.ply
[INFO]    running /code/SuperBuild/src/PoissonRecon/Bin/Linux/PoissonRecon --in /code/odm_filterpoints/point_cloud.ply --out /code/odm_meshing/odm_mesh.dirty.ply --depth 11 --pointWeight 4 --samplesPerNode 1.0 --threads 1 --linearFit
[INFO]    running /code/build/bin/odm_cleanmesh -inputFile /code/odm_meshing/odm_mesh.dirty.ply -outputFile /code/odm_meshing/odm_mesh.ply -removeIslands -decimateMesh 100000
Killed
Traceback (most recent call last):
  File "/code/run.py", line 57, in <module>
    app.execute()
  File "/code/stages/odm_app.py", line 92, in execute
    self.first_stage.run()
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 464, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 445, in run
    self.process(self.args, outputs)
  File "/code/stages/odm_meshing.py", line 31, in process
    verbose=self.params.get('verbose'))
  File "/code/opendm/mesh.py", line 170, in screened_poisson_reconstruction
    '-decimateMesh {max_vertex} {verbose} '.format(**cleanupArgs))
  File "/code/opendm/system.py", line 76, in run
    raise Exception("Child returned {}".format(retcode))
Exception: Child returned 137

What can the issue be?

Make sure you have allocated enough RAM to docker. https://docs.docker.com/docker-for-windows/#advanced

1 Like

This did it, now it can run to the end