WebODM Lightning - Failed to Extract EXIF for Image

UUID: fca7e721-4cb7-43ae-8f21-5613a89ab775
Name: Old_Orchard
Images: 171
Status: Failed
Time Elapsed: 00:00:15

Salient Error Message Lines

[INFO] running /usr/bin/env python2 /code/SuperBuild/src/opensfm/bin/opensfm extract_metadata "/var/www/data/fca7e721-4cb7-43ae-8f21-5613a89ab775/opensfm"
2020-02-11 05:38:00,212 INFO: Extracting EXIF for GOPR0188.JPG
Traceback (most recent call last):
File "/code/SuperBuild/src/opensfm/bin/opensfm", line 34, in 
command.run(args)
File "/code/SuperBuild/src/opensfm/opensfm/commands/extract_metadata.py", line 43, in run
camera = exif.camera_from_exif_metadata(d, data)
File "/code/SuperBuild/src/opensfm/opensfm/exif.py", line 499, in camera_from_exif_metadata
camera.focal_x = calib['focal_x']
KeyError: 'focal_x'
Traceback (most recent call last):
File "/code/run.py", line 57, in 
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 445, in run
self.process(self.args, outputs)
File "/code/stages/run_opensfm.py", line 25, in process
octx.extract_metadata(self.rerun())
File "/code/opendm/osfm.py", line 181, in extract_metadata
self.run('extract_metadata')
File "/code/opendm/osfm.py", line 22, in run
(context.opensfm_path, command, self.opensfm_project_path))
File "/code/opendm/system.py", line 76, in run
raise Exception("Child returned {}".format(retcode))
Exception: Child returned 1
Full Console Output
[INFO] Initializing OpenDroneMap app - Tue Feb 11 05:37:56 2020
[INFO] ==============
[INFO] build_overviews: False
[INFO] camera_lens: brown
[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: 4.5
[INFO] depthmap_resolution: 1000.0
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_orthophoto
[INFO] fast_orthophoto: False
[INFO] force_gps: False
[INFO] gcp: None
[INFO] ignore_gsd: False
[INFO] matcher_distance: 0
[INFO] matcher_neighbors: 12
[INFO] max_concurrency: 9
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_point_weight: 4
[INFO] mesh_samples: 1.0
[INFO] mesh_size: 300000
[INFO] min_num_features: 10000
[INFO] mve_confidence: 0.6
[INFO] name: fca7e721-4cb7-43ae-8f21-5613a89ab775
[INFO] opensfm_depthmap_method: PATCH_MATCH
[INFO] opensfm_depthmap_min_consistent_views: 3
[INFO] opensfm_depthmap_min_patch_sd: 1
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 4.5
[INFO] pc_classify: True
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: True
[INFO] pc_sample: 0.01
[INFO] project_path: /var/www/data
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] skip_3dmodel: 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_keep_unseen_faces: False
[INFO] texturing_nadir_weight: 16
[INFO] texturing_outlier_removal_type: gauss_clamping
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_hole_filling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] texturing_skip_visibility_test: False
[INFO] texturing_tone_mapping: none
[INFO] time: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] use_opensfm_dense: False
[INFO] verbose: True
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/fca7e721-4cb7-43ae-8f21-5613a89ab775/images
[INFO] Loading 171 images
[INFO] Wrote images database: /var/www/data/fca7e721-4cb7-43ae-8f21-5613a89ab775/images.json
[INFO] Found 171 usable images
[INFO] Parsing SRS header: WGS84 UTM 18N
[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] Altitude data detected, enabling it for GPS alignment
[INFO] ['use_exif_size: no', 'feature_process_size: 2048', 'feature_min_frames: 10000', 'processes: 9', 'matching_gps_neighbors: 12', 'matching_gps_distance: 0', 'depthmap_method: PATCH_MATCH', 'depthmap_resolution: 1000.0', 'depthmap_min_patch_sd: 1', 'depthmap_min_consistent_views: 3', 'optimize_camera_parameters: yes', 'undistorted_image_format: tif', 'bundle_outlier_filtering_type: AUTO', 'align_orientation_prior: vertical', 'triangulation_type: ROBUST', 'bundle_common_position_constraints: no', 'camera_projection_type: BROWN', 'use_altitude_tag: yes', 'align_method: auto', 'local_bundle_radius: 0']
[INFO] running /usr/bin/env python2 /code/SuperBuild/src/opensfm/bin/opensfm extract_metadata "/var/www/data/fca7e721-4cb7-43ae-8f21-5613a89ab775/opensfm"
2020-02-11 05:38:00,212 INFO: Extracting EXIF for GOPR0188.JPG
Traceback (most recent call last):
File "/code/SuperBuild/src/opensfm/bin/opensfm", line 34, in 
command.run(args)
File "/code/SuperBuild/src/opensfm/opensfm/commands/extract_metadata.py", line 43, in run
camera = exif.camera_from_exif_metadata(d, data)
File "/code/SuperBuild/src/opensfm/opensfm/exif.py", line 499, in camera_from_exif_metadata
camera.focal_x = calib['focal_x']
KeyError: 'focal_x'
Traceback (most recent call last):
File "/code/run.py", line 57, in 
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 445, in run
self.process(self.args, outputs)
File "/code/stages/run_opensfm.py", line 25, in process
octx.extract_metadata(self.rerun())
File "/code/opendm/osfm.py", line 181, in extract_metadata
self.run('extract_metadata')
File "/code/opendm/osfm.py", line 22, in run
(context.opensfm_path, command, self.opensfm_project_path))
File "/code/opendm/system.py", line 76, in run
raise Exception("Child returned {}".format(retcode))
Exception: Child returned 1

Problematic image:
https://1drv.ms/u/s!AvMZEGXuAwQzs5UPEslHxGkFPsg5WA
GOPR0188

:+1: this will be fixed at the next release. https://github.com/OpenDroneMap/OpenSfM/commit/5a5b402ac7caefa0991ea3d0eb4773a950f57578

In the meanwhile, a workaround is to use --camera-type perspective or --camera-type fisheye.

1 Like

Awesome! Thanks!

Do you have an estimate on when that release will go live on WebODM Lightning? How will I know it’s the proper release?

Ahhh, that’s the rub! I want to use Brown-Conrady in WebODM Lightning to test against Pix4D’s optimized camera parameters with rolling shutter compensation. This dataset bowled pretty badly in Pix4D.

Just so I know:
From reading your commit message, OpenSFM can’t be passed hard-coded Brown-Conrady? Is that the issue?

No ETA for deployment, probably in a few weeks.

3 Likes