Перейти к содержимому
Compvision.ru
Smorodov

МНК оптимизатор для нелинейных задач от Google.

Recommended Posts

По-моему достаточно интересная библиотека.

http://code.google.com/p/ceres-solver/

Что может:

Features:

A friendly API: build your objective function one term at a time.

Automatic differentiation.

Robust loss functions.

Local parameterizations.

Threaded Jacobian evaluators and linear solvers.

Levenberg-Marquardt and Dogleg (Powell & Subspace) solvers.

Dense QR and Cholesky factorization (using Eigen) for small problems.

Sparse Cholesky factorization (using SuiteSparse) for large sparse problems.

Specialized solvers for bundle adjustment problems in computer vision.

Iterative linear solvers for general sparse and bundle adjustment problems.

Runs on Linux, Windows, Mac OS X and Android. An iOS port is underway.

UPD: не без напильника но собралось достаточно быстро (gflags-2.0 , glog-0.3.2, CXSparse, Eigen), система x64, vs2010.

CXSparse использовал отсюда: https://github.com/PetterS/CXSparse

PS: надо в файле log_severity.h задефайнить вначале:

#define GLOG_NO_ABBREVIATED_SEVERITIES 1

и при компиляции на x64 библиотеки glog заменить во всем проекте (2 замены) строчку:

#if defined(_DEBUG) && defined(_MSC_VER)

на

#if defined(_DEBUG) && defined(_MSC_VER) && !defined(_M_X64)

иначе ругается на _asm.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

судя по ролику это похоже на то, что мне нужно.это я про то что я мучаю в теме про ICP.

но я пока на матлабе всё это делаю, так что хотелось бы понять хотя в теории как это можно сделать.

да и вообщем то говоря, это и можно сделать как раз оптимизируя задачу по параметрам(не знаю как они это там делают, а у меня точки, хотя можно было бы взять и отрезки и определить для них меру?), но надо делать это как можно быстрее, а скорее всего тогда надо накладывать какие то ограничения.

но вот интересный вопрос, если мы используем регистрацию только сдвиг+поворот(имеем всего 3 параметра, относительно быстро всё решаем), допустим у меня задача которая примерно ложится и так.

а потом я например ищу для каждой точки ближайшую точку и пытаюсь решить систему уравнений чтобы получить перспективное преобразование, только вот не знаю решится ли она, ведь будет достаточно много ложных сопоставлений.

еще про поиск на разных масштабах для ускорения может стоит подумать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что то я как то не нашел реальных примеров применения этого ceres.

вот еще кое-что.

http://www.cise.ufl.edu/research/sparse/

там вроде говорят о bundle adjustment задаче

а тут вот еще приводят несколько солверов

https://groups.google.com/forum/?fromgroups=#!topic/ceres-solver/0PwXWq0FtgA

http://procrastineering.blogspot.com/2012/05/today-sameer-agarwal-and-keir-mierle-as.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
вот еще кое-что.

http://www.cise.ufl....esearch/sparse/

там вроде говорят о bundle adjustment задаче

а тут вот еще приводят несколько солверов

В инструкции по ceres, пишут, что Sparse Suite под win собрать сложно, поэтому я использовал CXSparse.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В инструкции по ceres, пишут, что Sparse Suite под win собрать сложно, поэтому я использовал CXSparse.

что то для матриц?

а сам ceres это просто минимизатор? или всё таки он заточен под задачу, которая на ролике там где gps данные впысывают?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ceres - это просто минимизатор.

CXSparse и Sparse Suite - пакеты для работы с разреженными матрицами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

тут некий subgraph preconditioning

http://www.cc.gatech.edu/~dellaert/pubs/Dellaert10iros.pdf

вы не вкурсе что это за direct methods и iterative optimization methods?

и еще оттудаже что то сложное

http://www.cc.gatech.edu/~dellaert/pubs/Ni10iros.pdf

http://www.cc.gatech.edu/~dellaert/pubs/Dellaert06ijrr.pdf

вообще похоже надо копать в стороны работы с картами и с всяких SLAM методов, проблема только в том, что обычно данные со сканирующего сенсора не имеют искажений и там всего лишь ригид регистрация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть методы которые решают СЛАУ сразу, это прямые методы (используются в OpenCV).

А есть методы типа сопряженного градиента (Eigen умеет. Пример применения тут http://www.compvision.ru/forum/index.php?showtopic=966), которые используют для решения больших систем, представленных в виде разреженных матриц, эти методы решают линейную систему итеративно, требуют значительно меньше памяти и часто намного эффективнее в задачах типа bundle adjustment.

Данные со сканирующего сенсора имеют погрешность (иногда очень даже заметную), причем эта погрешность накапливается при составлении карты в результате получаем искажения геометрии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×