7

プロジェクトに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) のロギングはそうではありません。

この迷惑なログを無効にする方法について誰か考えがありますか?

4

2 に答える 2

3

最初に、miniglog ではなく glog を使用していることを確認します (ceres をビルドするときに CMake の出力を確認してください)。この 2 つはうまく混ざりません。次に、glog のコマンド ライン フラグを使用して詳細レベルを設定できるはずです。

また、スコープを設定する必要があると思いますSILENT。つまり、options.logging_type = ceres::SILENT;

私は miniglog を使用していますが、これらのメッセージも表示されます。

編集:この最近のパッチも役立つかもしれません。

于 2014-01-28T23:01:30.253 に答える
0

次の行を追加してみてください。

#define MAX_LOG_LEVEL -100

すぐ上のファイルlogging.hで#ifdef MAX_LOG_LEVEL

レベルを 100ではなく-100に設定してください。 これはうまくいきます!

于 2014-02-26T12:55:15.620 に答える