# Julia frameworks for large-scale nonlinear least-squares optimization for computer vision

**URL:** https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344
**Category:** Optimization (Mathematical)
**Tags:** question, machinevision, optimization
**Created:** [October 30, 2020, 11:45pm UTC](https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344 "2020-10-30T23:45:59Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![masoug](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/masoug/32/19074_2.png) [@masoug](https://discourse.julialang.org/u/masoug)
#### Post date: [October 30, 2020, 11:45pm UTC](https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344/1 "2020-10-30T23:45:59Z")

</div>

Hi, Julia newcomer here 🙂

I’m working on learning both Julia and computer vision by implementing common vision algorithms like camera calibration in the Julia language. I’m at a point right now where I’m looking for a nonlinear least-squares framework designed to handle large-scale, sparse problems. Personally, I feel a little overwhelmed by all the options Julia offers (Optim.jl, JSO, NLSolve, JuMP, Minpack, LsqFit, etc…) and I’m wondering if anyone else has done camera calibration/structure-from-motion/[bundle adjustment](https://en.wikipedia.org/wiki/Bundle_adjustment) problems in Julia and is willing to share their experiences? It seems to me that the listed libraries above seem to share a lot of common functionality, and its not totally clear to me how one goes about choosing a particular framework?

So far [https://github.com/matthieugomez/LeastSquaresOptim.jl](https://github.com/matthieugomez/LeastSquaresOptim.jl) seems the most promising option that best fits my use case, but I was wondering if anyone else has used JuMP, Optim, etc… before for my kind of NLS problem?

Thanks,  
Sam

---

<div class="post-metadata">

### Author: ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)
#### Post date: [October 31, 2020, 7:38am UTC](https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344/2 "2020-10-31T07:38:43Z")

</div>

@yakir12 not so much for the optimization bit but the camera calibration bit!

---

<div class="post-metadata">

### Author: ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)
#### Post date: [October 31, 2020, 8:03am UTC](https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344/3 "2020-10-31T08:03:39Z")

</div>

I’ve been needing a camera calibration package in Julia since Julia v0.3. I use Matlab’s toolbox from within Julia, which worked fine, but is obviously not ideal. In any case, just yesterday my `CameraCalibration.jl` package got registered. I’ll make a PA here next week, but you can go check it out here if you like: [https://github.com/yakir12/CameraCalibrations](https://github.com/yakir12/CameraCalibrations)

I believe that there’s a great opportunity for an awesome camera calibration package in Julia, you can read some of the related activity here: [Camera calibration](https://discourse.julialang.org/t/camera-calibration/31525).

Exciting!

---

<div class="post-metadata">

### Author: ![user664303](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/user664303/32/37843_2.png) [@user664303](https://discourse.julialang.org/u/user664303)
#### Post date: [March 21, 2024, 10:42am UTC](https://discourse.julialang.org/t/julia-frameworks-for-large-scale-nonlinear-least-squares-optimization-for-computer-vision/49344/4 "2024-03-21T10:42:44Z")

</div>

I wrote two packages that together can do bundle adjustment (and other such optimizations) very efficiently:

[NLLSsolver.jl](https://github.com/ojwoodford/NLLSsolver.jl) - A non-linear least squares solver that supports sparse problems, auto-differentiation, and robustified costs.

[VisualGeometryOptimization.jl](https://github.com/ojwoodford/VisualGeometryOptimization.jl) - This package constructs visual geometry optimization problems that can then be solved by NLLSsolver.

I am [seeking collaborators](https://discourse.julialang.org/t/collaboration-call-photometric-methods-for-visual-tracking/111926) to further extend the functionality of the second package.
