オブジェクト検出APIをローカルで実行しようとしています。
TensorFlow Object Detection API ドキュメントで説明されているようにすべてが設定されていると思いますが、model_main.pyを実行しようとすると、この警告が表示され、モデルがトレーニングされません。 (プロセスが終了していないため、モデルがトレーニングであるかどうかは本当にわかりませんが、それ以上のログは表示されません)
警告:tensorflow:Estimatorのmodel_fn(.model_fn at 0x0000024BDBB3D158>)にはparams引数が含まれていますが、paramsはEstimatorに渡されません。
私が渡しているコードは:
python tensorflow-models/research/object_detection/model_main.py \
--model_dir=training \
--pipeline_config_path=ssd_mobilenet_v1_coco.config \
--checkpoint_dir=ssd_mobilenet_v1_coco_2017_11_17/model.ckpt \
--num_tain_steps=2000 \
--num_eval_steps=200 \
--alsologtostderr
この警告の原因は何ですか?
コードが動かなくなったのはなぜですか?
助けてください!
同じ問題に遭遇したところ、この警告はモデルが機能しないという問題とは関係がないことがわかりました。この警告が示すように、モデルを機能させることができます。
私の間違いは、running_locally.mdのドキュメントの行を誤解していたことです
「$ {MODEL_DIR}は、トレーニングチェックポイントとイベントが書き込まれるディレクトリを指します」
MODEL_DIRを{project directory}/models/model
に変更しました。ディレクトリの構造は次のとおりです。
+data
-label_map file
-train TFRecord file
-eval TFRecord file
+models
+ model
-pipeline config file
+train
+eval
そしてそれはうまくいった。これがあなたを助けることを願っています。
Edit:これは機能する可能性がありますが、この場合model_dir
には、保存されているチェックポイントファイルが含まれていません。チェックポイントファイルが保存された後でトレーニングを停止して再起動すると、トレーニングはまだスキップされます。 doc はrecommendedディレクトリ構造を指定しますが、tfrecordへのすべてのパスと同じ構造である必要はありません。事前トレーニング済みのチェックポイントは、設定ファイル。
実際の理由は、model_dir
にすでにNUM_TRAIN_STEP
に達したチェックポイントファイルが含まれている場合、スクリプトはトレーニングが終了したと見なして終了します。チェックポイントファイルを削除し、トレーニングを再開してください。
私もこのエラーを受け取りました。これは、以前に別のデータセット/モデル/構成ファイルでモデルをトレーニングしたことがあり、以前のckptファイルが作業中のディレクトリにまだ存在していたため、古いckptトレーニングデータを別のデータに移動しましたディレクトリは問題を修正しました
あなたのスクリプトは良いようです。注意すべきことの1つは、新しいmodel_main.pyがトレーニングのログを出力しないことです(トレーニングステップ、lr、損失など)。1つまたは複数のエポックの後の評価結果のみが出力されます。長い時間。
したがって、「プロセスは終了しませんが、それ以上のログは表示されません」が正常です。 「nvidia-smi」を使用してGPUの状況を確認するか、テンソルボードを使用して確認することで、実行を確認できます。
この警告メッセージにも遭遇しました。 nvidia-smi
を確認したところ、トレーニングが開始されていないようです。また、出力ディレクトリを再編成しようとしましたが、うまくいきませんでした。チェックアウト後 オブジェクト検出トレーニングパイプラインの構成(tensorflow公式) 、それは構成の問題であることがわかりました。 load_all_detection_checkpoint_vars: true
を追加して問題を解決しました。