New user, poor results

I’m a new user having some trouble getting satisfactory results from a dataset.

The photo’s were collected using a DJI Phantom 4 Pro, using Pix4D Capture, and were processed with WebODM. 5 GCPs were set using a Carlson Brx7 GNSS receiver getting RTK corrections from the state DOT’s CORS network.

I flew two missions over a “campground” on a small peninsula at local lake, with one mission being rotated approximately 45° to the other. The two missions together captured 724 images, which took just under 27 hours to process on my PC, which has a AMD Ryzen 7 3700x and 64GB of Ram.
The GPU was disabled because the one I currently have will not process the images.

I am also curious why it took so long to process. I have a trial project (just images, no GCPs) that only took 5 hours to process 392 images, but my primary concern is the poor accuracy.

The ortho and point cloud look ok, the cloud has some weirdness at the water, but that’s to be expected, but as is confirmed by the quality report, the dataset does not fit my GCPs.

I am looking for some troubleshooting advice.

EDIT: The dataset is still uploading as I make this post.

https://drive.google.com/drive/folders/1zEbRdZn6-92kAvxCGY3VJFFhc36pD6wk?usp=sharing

1 Like

Super helpful to share the dataset. Can you share the settings you’ve used and if you haven’t shared the gcp, that too (I haven’t looked yet).

Finally, with GCPs, it probably best to do a run without as a testing step which will help you understand if it’s an issue with the GCPs or something else. And welcome!

1 Like

Here are the first several lines from the text file output. Does this have an exhaustive list of the settings? I’ve started a second run without GCPs, but if it takes as long as the first run, it will be a couple of days before it’s finished.

INFO] Initializing ODM 2.8.7 - Mon Nov 14 16:29:00 2022
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] auto_boundary: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[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_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: C:\WebODM\resources\app\apps\NodeODM\data\0b15d028-94b2-4a13-a7f7-3a1900d308ca\gcp\gcp_list.txt
[INFO] geo: None
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 16
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 0b15d028-94b2-4a13-a7f7-3a1900d308ca
[INFO] no_gpu: True
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 5
[INFO] pc_classify: False
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_geometric: False
[INFO] pc_las: False
[INFO] pc_quality: medium
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: C:\WebODM\resources\app\apps\NodeODM\data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: incremental
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: 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_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_data_term: gmi
[INFO] texturing_keep_unseen_faces: False
[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: C:\WebODM\resources\app\apps\NodeODM\data\0b15d028-94b2-4a13-a7f7-3a1900d308ca\images
[INFO] Loading 723 images
[INFO] Found 723 usable images
[INFO] Parsing SRS header: +proj=lcc +lat_0=34.3333333333333 +lon_0=-86 +lat_1=35.25 +lat_2=36.4166666666667 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs +type=crs
[INFO] Parsing SRS header: WGS84 UTM 17N
[INFO] Parsing SRS header: WGS84 UTM 17N
[INFO] 35 GCP points will be used for georeferencing
[INFO] Generated coords file from GCP: WGS84 UTM 17N
[INFO] Wrote C:\WebODM\resources\app\apps\NodeODM\data\0b15d028-94b2-4a13-a7f7-3a1900d308ca\odm_georeferencing\odm_georeferencing_model_geo.txt
[INFO] Parsing SRS header: WGS84 UTM 17N
[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] Maximum photo dimensions: 5472px
[INFO] Photo dimensions for feature extraction: 2736px
[INFO] Disabling GPU features (–no-gpu is set)
[INFO] Altitude data detected, enabling it for GPS alignment

1 Like

Welcome!

Yep, that first block has all your settings, and nothing jumps out as immediately problematic other than possibly the GCP being malformed.

I believe you may be onto something with the GCPs. The project I’m working on is natively in the State Plane Coordinate system for the area I’m working in. I don’t think ODM supports that, so there may be some error in how I converted the coordinates. If I graphically scale the ortho in my CAD drawing, I can fit the ortho to the GCPs in a way that looks like it fits the points.

I tried to process the same set of pictures without the GCPs, and after 34 hours it was still matching (the entire process took 27 hours originally), so I decided to cancel the process and try to process another flight. I ended this one after 12 hours with it still matching since it only had 337 images and had gone over twice as long as the last <400 image flight I had processed. I did realize that it had been several days in I rebooted my computer, so I did that and started processing the smaller image set again.

The very first set of images I processed was 154 images which took 2 hours, the second set was 392 images and took 5 hours, so I’m still pretty confused about how process times scales with image count.

1 Like

If you have to dip into swap/pagefile at all, the processing time is going to be orders of magnitude longer for those times.

Do you know if you’re running into swap/pagefile during processing?

I don’t believe so. I haven’t seen it use more than 50%‐60% of the system memory.

1 Like

Are you using the same processing parameters across datasets, and are the different datasets all at the same image resolution?

I am. Everything default except for “no gpu.”

If the process I’m running now does not complete over night, I may rerun an older project to see if it processes in a similar time.

Here are the lines from the task outputs from the 4 tasks mentioned above when they finished matching.

2022-11-15 11:58:38,402 INFO: Matched 8050 pairs (brown-brown: 8050) in 69737.2901996 seconds (8.663017416173911 seconds/pair).
2022-11-16 07:26:55,245 INFO: Matched 4522 pairs (brown-brown: 4522) in 34926.3140121 seconds (7.723643081070323 seconds/pair).
2022-11-04 00:40:13,838 INFO: Matched 4615 pairs (brown-brown: 4615) in 6833.8106122 seconds (1.480782364767064 seconds/pair).
2022-08-01 00:42:31,688 INFO: Matched 1596 pairs (brown-brown: 1596) in 2689.8107942 seconds (1.685345109649123 seconds/pair).

As you can see, the most recent two are around 8 seconds/ pair while the others are around 1.5 seconds/pair, and this is with the same settings.

Do all your images have EXIF metadata in every dataset?

Spot checking the images seems to indicate so. Do you know if there is a resource that will check all the images in a dataset?

1 Like

Exiftool will read the EXIF data and display as a list.

1 Like