我在一个项目中使用 ceres 求解器,当我调用ceres::Solve
函数后,库开始输出如下行:
iterative_schur_complement_solver.cc:88 No parameter blocks left in the schur complement.
wall_time.cc:74
IterativeSchurComplementSolver::Solve
Delta Cumulative
Total : 0.00001 0.00001
我尝试禁用这些中间步骤的日志记录,但到目前为止还没有成功。我在类的构造函数中调用这一行:
google::InitGoogleLogging("my-project");
我调用求解器时设置的选项是:
ceres::Solver::Options options;
options.preconditioner_type = ceres::SCHUR_JACOBI;
options.linear_solver_type = ceres::ITERATIVE_SCHUR;
options.logging_type = SILENT;
options.minimizer_progress_to_stdout = false;
ceres::Solver::Summary summary;
ceres::Solve(options, &problem, &summary);
在我看来,ceres 日志记录已被有效禁用,但其依赖库(即 SuiteSparse)的日志记录并未被禁用。
有人知道如何禁用这个烦人的日志吗?
我首先会验证您使用的是 glog 而不是 miniglog(在构建 ceres 时检查 CMake 的输出),因为两者不能很好地混合。然后你应该能够使用 glog 设置详细级别命令行标志 http://google-glog.googlecode.com/svn/trunk/doc/glog.html.
另外,我认为SILENT
应该限定范围,即options.logging_type = ceres::SILENT;
我正在使用 miniglog,我也看到这些消息。
Edit: 最近的这个补丁 https://ceres-solver.googlesource.com/ceres-solver/+/f55780063620e7a3dcfe7e018d6488bf6a5b29da也可能对你有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)