mobilenetv3_small_seg アーキテクチャで deeplabv3 モデルをトレーニングしようとしています。モデルをトレーニングしましたが、得られた予測はクラス予測のない完全な空白のマスクです。トレーニングのために私が従った手順は次のとおりです。
Google Colab にクローンされた公式リポジトリ。
クラスが 1 つだけのデータセットを用意しました (顔の唇のセグメント化)。Pascal VOC12 データセット形式に従いました。以下に示すように、RGB マスク (0, 255, 0) を作成し、周囲に白い境界線 (255, 255, 255) と黒い背景 (0, 0, 0) を配置しました。
次に、以下に示すように、このスクリプトを使用して、RGB マスクを background:0、forground:1、boundary:255 の単一チャネル png (8 ビット) に変換しました。
次に、このスクリプトを変更して、データセットを tfrecord に正常に変換しました。
次に、data_generator.py にデータセットの説明を ignore_label=255 および num_classes=2 で追加しました。
最後に、次のコマンドでトレーニングを開始しました。
!python train.py \ --logtostderr \ --training_number_of_steps=10000 \ --train_split="val" \ --model_variant="mobilenet_v3_small_seg" \ --decoder_output_stride=16 \ --train_crop_size="256,256" \ --train_batch_size=16 \ --dataset="pqr" \ --save_interval_secs=600 \ --save_summaries_secs=300 \ --save_summaries_images=True \ --log_steps=200 \ --train_logdir=${PATH_TO_TRAIN_DIR} \ --dataset_dir=${PATH_TO_DATASET}
トレーニングが完了したら、いくつかの異なる画像でモデルをテストしました。モデルの出力は、すべての値が 0 に等しい (256, 256) 配列です。単一の値ではなく、1 などを取得します。
私は機械学習が初めてです。それを知りたい
- 私のプロセスの何が問題になっていますか?多くのチュートリアルを見ましたが、答えが見つかりませんでした。
- データセットに何か問題がありますか? データセットには合計 2000 枚の画像が含まれていました。
- mobilenetv3_small の事前トレーニング済みの重みが見つかりませんでした。誰かが知っている場合は、親切に共有してください。転移学習を行うことができます。
- クラスの数を 2 (背景と前景) に設定します。そうですか?