Process fails after computing sift

I installed ODM on Ubuntu 20.4 in a docker container (ASUS VivoBook laptop, cpu i7-8565U, gpu UHD Grphics 620, 8 GB RAM.).
I tried differen smallt image sets (10-40 images) but the process fails at the same point. The command to start odm:

docker run -it --rm \
    -v "$(pwd)/images:/code/images" \
    -v "$(pwd)/odm_orthophoto:/code/odm_orthophoto" \
    -v "$(pwd)/odm_texturing:/code/odm_texturing" \
    opendronemap/odm

The output:

[INFO]    Initializing ODM - Sun Jan 31 18:05:28  2021
[INFO]    ==============
[INFO]    build_overviews: False
[INFO]    camera_lens: auto
[INFO]    cameras: {}
[INFO]    crop: 3
[INFO]    debug: False
[INFO]    dem_decimation: 1
[INFO]    dem_euclidean_map: False
[INFO]    dem_gapfill_steps: 3
[INFO]    dem_resolution: 5
[INFO]    depthmap_resolution: 640
[INFO]    dsm: False
[INFO]    dtm: False
[INFO]    end_with: odm_report
[INFO]    fast_orthophoto: False
[INFO]    feature_quality: high
[INFO]    feature_type: sift
[INFO]    force_gps: False
[INFO]    gcp: None
[INFO]    geo: None
[INFO]    gps_accuracy: 10
[INFO]    ignore_gsd: False
[INFO]    matcher_distance: 0
[INFO]    matcher_neighbors: 8
[INFO]    matcher_type: flann
[INFO]    max_concurrency: 8
[INFO]    merge: all
[INFO]    mesh_octree_depth: 11
[INFO]    mesh_size: 200000
[INFO]    min_num_features: 8000
[INFO]    name: code
[INFO]    optimize_disk_space: False
[INFO]    orthophoto_compression: DEFLATE
[INFO]    orthophoto_cutline: False
[INFO]    orthophoto_no_tiled: False
[INFO]    orthophoto_png: False
[INFO]    orthophoto_resolution: 5
[INFO]    pc_classify: False
[INFO]    pc_csv: False
[INFO]    pc_ept: False
[INFO]    pc_filter: 2.5
[INFO]    pc_las: False
[INFO]    pc_quality: medium
[INFO]    pc_rectify: False
[INFO]    pc_sample: 0
[INFO]    primary_band: auto
[INFO]    project_path: /
[INFO]    radiometric_calibration: none
[INFO]    rerun: None
[INFO]    rerun_all: False
[INFO]    rerun_from: None
[INFO]    resize_to: 2048
[INFO]    skip_3dmodel: False
[INFO]    skip_band_alignment: False
[INFO]    skip_report: False
[INFO]    sm_cluster: None
[INFO]    smrf_scalar: 1.25
[INFO]    smrf_slope: 0.15
[INFO]    smrf_threshold: 0.5
[INFO]    smrf_window: 18.0
[INFO]    split: 999999
[INFO]    split_overlap: 150
[INFO]    texturing_data_term: gmi
[INFO]    texturing_outlier_removal_type: gauss_clamping
[INFO]    texturing_skip_global_seam_leveling: False
[INFO]    texturing_skip_local_seam_leveling: False
[INFO]    texturing_tone_mapping: none
[INFO]    tiles: False
[INFO]    time: False
[INFO]    use_3dmesh: False
[INFO]    use_exif: False
[INFO]    use_fixed_camera_params: False
[INFO]    use_hybrid_bundle_adjustment: False
[INFO]    verbose: False
[INFO]    ==============
[INFO]    Running dataset stage
[INFO]    Loading dataset from: /code/images
[INFO]    Loading 11 images
[INFO]    Wrote images database: /code/images.json
[INFO]    Found 11 usable images
[INFO]    Parsing SRS header: WGS84 UTM 34N
[INFO]    Finished dataset stage
[INFO]    Running split stage
[INFO]    Normal dataset, will process all at once.
[INFO]    Finished split stage
[INFO]    Running merge stage
[INFO]    Normal dataset, nothing to merge.
[INFO]    Finished merge stage
[INFO]    Running opensfm stage
[INFO]    Writing exif overrides
[INFO]    Maximum photo dimensions: 5472px
[INFO]    Altitude data detected, enabling it for GPS alignment
[INFO]    ['use_exif_size: no', 'flann_algorithm: KDTREE', 'feature_process_size: 2736', 'feature_min_frames: 8000', 'processes: 8', 'matching_gps_neighbors: 8', 'matching_gps_distance: 0', 'optimize_camera_parameters: yes', 'undistorted_image_format: tif', 'bundle_outlier_filtering_type: AUTO', 'align_orientation_prior: vertical', 'triangulation_type: ROBUST', 'feature_type: SIFT', 'use_altitude_tag: yes', 'align_method: auto', 'local_bundle_radius: 0']
[INFO]    running /code/SuperBuild/src/opensfm/bin/opensfm extract_metadata "/code/opensfm"
2021-01-31 18:05:29,724 INFO: Extracting EXIF for DJI_0023.JPG
2021-01-31 18:05:29,827 INFO: Extracting EXIF for DJI_0042.JPG
2021-01-31 18:05:29,931 INFO: Extracting EXIF for DJI_0024.JPG
2021-01-31 18:05:30,029 INFO: Extracting EXIF for DJI_0025.JPG
2021-01-31 18:05:30,120 INFO: Extracting EXIF for DJI_0022.JPG
2021-01-31 18:05:30,208 INFO: Extracting EXIF for DJI_0041.JPG
2021-01-31 18:05:30,310 INFO: Extracting EXIF for DJI_0026.JPG
2021-01-31 18:05:30,402 INFO: Extracting EXIF for DJI_0043.JPG
2021-01-31 18:05:30,491 INFO: Extracting EXIF for DJI_0039.JPG
2021-01-31 18:05:30,581 INFO: Extracting EXIF for DJI_0038.JPG
2021-01-31 18:05:30,673 INFO: Extracting EXIF for DJI_0040.JPG
[INFO]    running /code/SuperBuild/src/opensfm/bin/opensfm detect_features "/code/opensfm"
2021-01-31 18:05:31,826 INFO: Extracting ROOT_SIFT features for image DJI_0023.JPG
2021-01-31 18:05:31,827 INFO: Extracting ROOT_SIFT features for image DJI_0042.JPG
2021-01-31 18:05:31,827 INFO: Extracting ROOT_SIFT features for image DJI_0024.JPG
2021-01-31 18:05:31,827 INFO: Extracting ROOT_SIFT features for image DJI_0025.JPG
2021-01-31 18:05:31,827 INFO: Extracting ROOT_SIFT features for image DJI_0022.JPG
2021-01-31 18:05:31,827 INFO: Extracting ROOT_SIFT features for image DJI_0026.JPG
2021-01-31 18:05:31,828 INFO: Extracting ROOT_SIFT features for image DJI_0043.JPG
2021-01-31 18:05:31,828 INFO: Extracting ROOT_SIFT features for image DJI_0041.JPG
2021-01-31 18:05:32,729 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,778 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,784 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,813 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,818 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,829 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,842 DEBUG: Computing sift with threshold 0.1
2021-01-31 18:05:32,859 DEBUG: Computing sift with threshold 0.1
/code/SuperBuild/src/opensfm/bin/opensfm: line 12:    50 Killed                  "$PYTHON" "$DIR"/opensfm_main.py "$@"
Traceback (most recent call last):
  File "/code/run.py", line 69, in <module>
    app.execute()
  File "/code/stages/odm_app.py", line 83, in execute
    self.first_stage.run()
  File "/code/opendm/types.py", line 360, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 360, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 360, in run
    self.next_stage.run(outputs)
  File "/code/opendm/types.py", line 341, in run
    self.process(self.args, outputs)
  File "/code/stages/run_opensfm.py", line 32, in process
    octx.feature_matching(self.rerun())
  File "/code/opendm/osfm.py", line 274, in feature_matching
    self.run('detect_features')
  File "/code/opendm/osfm.py", line 27, in run
    system.run('%s/bin/opensfm %s "%s"' %
  File "/code/opendm/system.py", line 79, in run
    raise Exception("Child returned {}".format(retcode))
Exception: Child returned 137

Any idea to solve this issue?
Thanks

1 Like

Welcome, siki!

Thanks for providing logs and some hardware info. Super helpful!

Could you please tell me if you have SWAP enabled, and if so, how much SWAP space you have?

@Saijin_Naib, thanks for your answer.
I have a small cache 2GB.

free -m
              total        used        free      shared  buff/cache   available
Mem:           7812        2750        2204         607        2857        4163
Swap:          2047           0        2047

swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

Do you have enough room to increase swap to 8gb?

Strange that it fails at SIFT computation… it’s usually not very memory intensive.

Does it work with other images? Maybe it’s a problem of the dataset.

I’ve added 6 GB second swap file. It solves my issue. More than 4 GB swap is used.
Thanks for your help, the my project finished with success.

@pierotofy the images were OK. Thanks.

2 Likes

Glad to hear it works in the short-term!

You may wish to investigate adding more RAM (if your laptop’s motherboard allows for upgrading the RAM), and/or possibly expanding your SWAP to beyond 8GB total.

I have 24GB RAM allocated to my WSL2 instance, and 232GB SWAP and it sometimes still will run out of memory (though I expect that is a quirk of running under WSL2, as 8GB+32GB doesn’t run out on-hardware in Solus Linux)

1 Like

Hi Siki,

share the images, i will try on my computer and we will see where the issue are :wink:

@machinefly, thanks, increasing the swap space solved my issue.

2 Likes

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