I’ve been exploring ODM for survey usage for the last several weeks. I’ve been running it on a variety of cloud-based machines in Linux (AWS 2) everything from smaller end machines up to ~100 vcpu, 1TB ram. I’ve exercised single instance tasks, multi-instance different tasks run concurrently, and ClusterODM tasks run from WebODM using up to 5 machines. All with various options set. Runs on the same data set, 600+ images, varied from 2.5 hrs up to 7 hrs. The last thing to exercise was inclusion of a GCP file. With much help from the questions and answers here, I was able to get a state plane coordinate system file created, starting with a no-image file from Pix4d converted into a usable gcp_list.txt file using GCPi. One problem I have is that I’m not able to reload this gcp file back into GCPi and view my locked points. That said, when the file is brought up to load, it appears to be fine and it loads without error. Here is the original no-image file and the conversion:
+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs
JMT50 556055.6978 1403883.6979 497.2820
JMT51 555974.4955 1404030.4520 497.5420
JMT52 556074.1074 1404095.5406 498.6550
JMT53 556165.7922 1403943.2338 497.4570
JMT54 556236.3355 1403963.3672 497.4370
JMT60 555783.8170 1404335.7854 504.6350
JMT61 555864.9984 1404066.1337 500.2800
JMT62 556383.8311 1403623.7548 496.1650
JMT63 556556.4905 1403270.6650 493.3000
+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9999666666666667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs
556556.49 1403270.66 493.3 3947.43 3266.22 DSC09267.JPG JMT63
556556.49 1403270.66 493.3 3962.00 3318.00 DSC09266.JPG JMT63
556556.49 1403270.66 493.3 3994.76 3401.00 DSC09265.JPG JMT63
556383.83 1403623.75 496.165 2322.99 2563.66 DSC09275.JPG JMT62
556383.83 1403623.75 496.165 100.06 4428.59 DSC09403.JPG JMT62
556383.83 1403623.75 496.165 5084.79 882.95 DSC09273.JPG JMT62
556383.83 1403623.75 496.165 3742.91 1699.07 DSC09274.JPG JMT62
556236.34 1403963.37 497.437 6906.86 2281.73 DSC09314.JPG JMT54
556236.34 1403963.37 497.437 3977.57 3414.03 DSC09338.JPG JMT54
556236.34 1403963.37 497.437 7022.37 509.45 DSC09313.JPG JMT54
556165.79 1403943.23 497.457 3515.77 3895.82 DSC09339.JPG JMT53
556165.79 1403943.23 497.457 7311.25 1899.50 DSC09313.JPG JMT53
556165.79 1403943.23 497.457 3368.31 2223.06 DSC09338.JPG JMT53
556055.70 1403883.70 497.282 2852.21 1294.86 DSC09356.JPG JMT50
556055.70 1403883.70 497.282 2897.50 3009.25 DSC09357.JPG JMT50
556055.70 1403883.70 497.282 2087.74 4107.32 DSC09340.JPG JMT50
556074.11 1404095.54 498.655 937.50 2251.25 DSC09839.JPG JMT52
556074.11 1404095.54 498.655 5148.32 2248.99 DSC09312.JPG JMT52
556074.11 1404095.54 498.655 987.50 1450.25 DSC09837.JPG JMT52
555974.50 1404030.45 497.542 6618.08 2013.35 DSC09311.JPG JMT51
555974.50 1404030.45 497.542 4247.96 3675.52 DSC09341.JPG JMT51
555974.50 1404030.45 497.542 6568.04 3735.52 DSC09312.JPG JMT51
555865.00 1404066.13 500.28 4346.95 3327.94 DSC09342.JPG JMT61
555865.00 1404066.13 500.28 4559.04 4962.74 DSC09343.JPG JMT61
555865.00 1404066.13 500.28 6444.81 2382.22 DSC09310.JPG JMT61
555783.82 1404335.79 504.635 5421.42 597.35 DSC09600.JPG JMT60
555783.82 1404335.79 504.635 5428.01 4339.72 DSC09603.JPG JMT60
555783.82 1404335.79 504.635 2427.00 3666.00 DSC09606.JPG JMT60
The conversion to this format was handled entirely by GCPi. (Along the way it dropped a couple of decimal places in my x/y coordinates.) I realize this is borderline for the survey requirements but 9 points was all I had in the test set and the overlap among images was marginal.
Second thing about this is that the GCP enabled run seems to take a bit longer, which perhaps makes sense considering the relatively few number of points.
Finally, how do I know that the GCP points were actually used? I’ve asked my survey team for a quality inspection but can I know for sure that the system used GCP rather than, for instance, EXIF data for the reconstruction? Does force-gps replace the GCP’s with EXIF data or use them in conjunction with each other?
One thing I’ve discovered in this exercise is that we’ve also run comparative tests on the same set of data with Pix4D for both cloud-based and on-prem (large machine) instances. The performance differences give me pause and make me wonder what I’m not doing with ODM that the surveyors did do with Pix4D. Do people have performance comparisons between these 2 systems?
Overall, this has been an incredible exercise with an incredible product so thanks so much to those who have contributed. My background is in machine learning so I hope to be able to contribute to the community in some way in the near future. Thank you for all the help in these exchanges - I’ve made good use of them.
Editorial addition: If anyone has the ability to automatically perform a quality check, with an accuracy metric, on the GCP’s, comparing their location in the Orthophoto to their actual registered location, that would be of interest.