我正在使用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)的日志记录却没有。
有人知道如何禁用这个恼人的日志吗?
答案 0 :(得分:2)
我首先要验证你是在使用glog而不是miniglog(在建立ceres时检查CMake的输出),因为两者混合不好。然后你应该能够使用glog的command line flags设置详细程度。
另外,我认为SILENT
应该是范围的,即options.logging_type = ceres::SILENT;
我正在使用miniglog,我也看到了这些消息。
修改:This recent patch也可以为您提供帮助。
答案 1 :(得分:0)
尝试添加以下行:
#define MAX_LOG_LEVEL -100
文件 logging.h 中的
就在#ifdef MAX_LOG_LEVEL
确保将等级设置为 -100 ,不是100 。
这很棒!