OpenSfM torch passing

Yann Noutary, long time maintainer of OpenSfM (a core ODM upstream library) and periodic epic contributor to ODM proper, has started a new job that prevents him continuing to work on each. In his last months and days before his new job, he worked on a few different problems, from bug fixes to deeper computational efficiency, and wrote a nice email summarizing that work to hand off to Leo and the rest of us as he dives in to the new adventure.

He agreed that I could share that here, as it contains a bit of the history of OpenSfM, provides us the challenge of being maintainers of the project from now on, and lists the improvements he’s thought about, tested, or implemented in OpenSfM. For our convenience, he’s also wrapped the ready to use portion of these in a pull request which is now open here.

Hey everyone !

A small (actually bigger than expected) follow-up on the current OpenSfM status. A small recap’ on the official repository :

  • Created by Pau. Continued and supported while at Mapillary

  • Mapillary acquired by FB/Meta.

  • Github repo are synced with internal Meta monorepo. PR merge has to be triggered from inside Meta.

  • 2025 : almost all the Mapillary team has left Meta.

  • There’s one person left inside (for how long ?). OpenSfM isn’t being actively developed anymore.

  • Only updates to OpenSfM will now be bots and linter.
    So the main repo is “dead”.

Still, there was a lots of things that could have been done to improve OpenSfM if we would have been actively working on it in these past years. So, I took advantage of my free time to improve a few things here and there. Everything is currently on my fork’s master branch : GitHub - YanNoun/OpenSfM. I also gave it a try to merge my repo into ODM/ODM branch. This is the ODM branch of my repo : GitHub - YanNoun/OpenSfM at ODM and here for a tentative PR :

Here’s a list :

And now the things I wish I had to work on :

  • Benchmarking : but I learnt yesterday that OATS was similar. Something where you could just launch with a list of datasets folder and a commit hash, it runs overnight all these datasets SfM, dense, compute quality report and outputs a big CSV so you can compare.

  • CUDA support :

    • For matching, I’ve tried RAPIDS cuVS, and on a RTX5090, it was only 20% faster than FLANN+24 Cores. It was brute-force though so better than FLANN. But without any x5 or x10, it’s not worth the hassle.

    • I wish I would have time to implement https://wiki.epfl.ch/edicpublic/documents/Candidacy%20exam/LDAHash.pdf I know it can work nicely with both GPU and CPU. Not super complicated, training can be done offline or online. We could even try using to project SIFT descriptors using the matrices provided here : https://documents.epfl.ch/groups/c/cv/cvlab-ldahash/www/ldahash1.0.tar.bz2 Then we have binary descriptor and it should match at blazing speeds.

    • For the bundle, CUDA support could improve, didn’t try though, but CUDA support in Ceres seems quite traightforward.

  • Large : splitting in large can be easily improved using pair_selection.get_representative_points that use GPS+OPK to get “points on the ground” that improve for oblique.

    • We should think on using the EXIF “altitude_above_ground” in DJI, as it can improve the above.

Unfortunately, I won’t time to work on OpenSfM anymore as I’m starting a new job at ESRI.

Have fun, and thank you for keeping the open-source torch bright !

Yann

7 Likes

Wishing Yann the very best to start his new chapter.

Honestly, OpenSfM is the first open source project I’m quite familiar with, see a great potential, try to make contributions, once very popular but being dead in a sudden. Feeling a bit sad for this, I know stories about big corp killing open source project, but this is probably the first one I experienced.

I do want to know what would be the proper place for people still wish to contribute onwards. ODM has its forked version, but it’s usually updated on a branch for the specific ODM version only and the default branch is still 322. It would be quite confusing for anyone that is not familiar with how ODM build system works, also my update for one version was once lost during version update

4 Likes

Disclaimer: The message from Yann and the following text are our personal opinions. To the best of our knowledge, Meta/Facebook has made no announcement of sunsetting OpenSfM.

Now, the reality of the situation is that there were very few incentives to maintain OpenSfM when the team was still part of Meta, and I personally agree with Yann’s comments that it is highly unlikely that Mapillart/OpenSfM will be actively maintained in the future.

I am a bit torn about what would be the best course of action here. Some fundamental differences and changes were funded by ODM, and subsequently, the ODM version has more substantial changes under a more restrictive license. To me, there are three main paths:

  1. (Default) We do nothing and just patch the ODM version to our needs.
  2. Make an official fork, i.e. find a new owner of OpenSfM, ideally from the founding team, e.g. Pau Gargallo. I believe that was Yann N.'s intention. In this scenario, the ODM community can contribute as usual.
  3. ODM becomes the de facto maintained copy, which would mean diverting some resources to support non-aerial use cases.
1 Like

I think so long as Meta continues to officially keep OpenSfM alive, work should be done in the ODM fork (so option 1). If Pau has interest in merging PRs and doing reviews it would make sense to do 2, but not sure if he does (and I wouldn’t expect this to be a pro-bono endevour).

3 would make sense once Meta officially discontinues OpenSfM.

2 Likes