記事ディレクトリ
Deeplabv3 +環境構成前のチュートリアルを参照してください。 環境構成 モデルのトレーニングは、環境構成の後に実行できます。PASCALVOC2012データセットでトレーニングすることを選択します。
1.データセットをダウンロードします
ubuntuでコマンドを実行します。
#From the tensorflow/models/research/deeplab/datasets directory.
sh download_and_convert_voc2012.sh
このコマンドはダウンロードしてtfrecord形式に変換できます。models / research / deeplab / datasetsディレクトリにpascal_voc_segフォルダを作成します。フォルダ構造は次のとおりです。
2.事前トレーニング済みモデルをダウンロードします
ダウンロードする事前トレーニングモデルがわからない場合は、local_test_mobilenetv2.shスクリプトを開いて確認してください。間違った事前トレーニングモデルを使い始めたため、継続的なトレーニングエラーが発生しました。
mobilenetv2_coco_voc_trainaug
ダウンロード後、解凍してローカルディレクトリに保存します:/ home / hy / software / models / research / deeplab / datasets / pascal_voc_seg / init_models(手動で作成する必要があります)
3.トレーニング
local_test_mobilenetv2.shスクリプトに記載されているトレーニング手順を参照してください。
NUM_ITERATIONS=10
python "${WORK_DIR}"/train.py \
--logtostderr \
--train_split="trainval" \
--model_variant="mobilenet_v2" \
--output_stride=16 \
--train_crop_size="513,513" \
--train_batch_size=4 \
--training_number_of_steps="${NUM_ITERATIONS}" \
--fine_tune_batch_norm=true \
--tf_initial_checkpoint="${INIT_FOLDER}/${CKPT_NAME}/model.ckpt-30000" \
--train_logdir="${TRAIN_LOGDIR}" \
--dataset_dir="${PASCAL_DATASET}"
実際のトレーニングのパラメータ形式:
# from models/research directory
python deeplab/train.py \
--logtostderr \
--train_split="train" \
--model_variant="mobilenet_v2" \
--output_stride=16 \
--train_crop_size="513,513" \ # 网上说内存不够时可调小为321,我没调也能正常训练完成
--train_batch_size=1 \
--training_number_of_steps=1000 \
--fine_tune_batch_norm=False \
--tf_initial_checkpoint="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/init_models/deeplabv3_mnv2_pascal_train_aug/model.ckpt-30000" \
--train_logdir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train" \
--dataset_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord"
パラメータの理解
- training_number_of_steps:トレーニングの反復回数。これは単なる検証なので、小さい方を1000に設定します。
- train_crop_size:トレーニング画像のトリミングサイズ、変更はありません。変更されたルールはこの記事に記載されていますhttps://www.jianshu.com/p/1a07990705ee
Crop_size = output_stride * k + 1 - train_batch_size:トレーニングbatchsize、ハードウェア条件のため、1に設定fine_tune_batch_norm = False:batch_normを使用するかどうか、batchsizeは1であるため、Falseに設定
- tf_initial_checkpoint:事前トレーニングの初期チェックポイント
- train_logdir:トレーニングウェイトが保存されるディレクトリ。プロジェクトディレクトリが最初に作成されるときに作成されることに注意してください。
- datadata_dir:データセットのアドレス、以前に作成されたTFRecordsディレクトリ
エラー1
ValueError:MobilenetV2 / Conv / weightsの新しい配列の合計サイズは変更しないでくださいlh_shape:[(3、3、3、16)]、rh_shape:[(3、3、3、32)]
これは、事前トレーニングモデルが正しくダウンロードされておらず、正しいモデルに置き換えることができるためです。
トレーニングされた
モデルファイルは、トレーニング結果のtrainフォルダーに保存されています。フォルダーには次のものが含まれます。
- チェックポイント
- graph.pbtxt
- model.ckpt-0.data-00000-of-00002
…
4.eval.pyを実行します
tran.pyと同じように、パラメーターは公式のものを参照します。私が使用したパラメーターは次のとおりです。
python deeplab/eval.py \
--logtostderr \
--eval_split="val" \
--model_variant="mobilenet_v2" \
--eval_crop_size="513,513" \
--checkpoint_dir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train' \
--eval_logdir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/eval' \
--dataset_dir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord' \
--max_number_of_evaluations=1
ERROR2
は、メモリが十分でないことを示しています。psauxを使用して、プログラムがCPUの330%を占有していることを確認します... kill -9PIDを使用してkillします。eval_crop_sizeを321,321に変更すると、エラーが発生しました。。。train_crop_sizeとeval_crop_sizeが同じかどうかを推測します(検証対象)。電車の中で変化がないので、513を維持する方法がなく、エラーはありませんが、mIOUの結果は表示されません。次のステップに進みましょう。
5. vis.pyを実行して、結果を視覚化します
私のパラメータ:
python deeplab/vis.py \
--logtostderr \
--vis_split="val" \
--model_variant="mobilenet_v2" \
--vis_crop_size="513,513" \
--checkpoint_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train" \
--vis_logdir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/vis" \
--dataset_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord" \
--max_number_of_iterations=1
幸い、実行することができ、実行後に表示され
ます。結果はvisフォルダーに表示されます。
- まず、公式ウェブサイトで提供されているレンダリングを見てください。
- 私が使い果たしたレンダリング:
6.export_model.pyを実行します
私のパラメータ設定:
# export_model
python deeplab/export_model.py \
--logtostderr \
--checkpoint_path="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/init_models/deeplabv3_mnv2_pascal_train_aug/model.ckpt-30000" \
--export_path="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/export/frozen_inference_graph.pb" \
--model_variant="mobilenet_v2" \
--num_classes=21 \
--crop_size=513 \
--crop_size=513 \
--inference_scales=1.0
このステップでは、パラメーターをエクスポートする必要があります(検証対象)