1

mobilenetv3_small_seg アーキテクチャで deeplabv3 モデルをトレーニングしようとしています。モデルをトレーニングしましたが、得られた予測はクラス予測のない完全な空白のマスクです。トレーニングのために私が従った手順は次のとおりです。

  1. Google Colab にクローンされた公式リポジトリ。

  2. クラスが 1 つだけのデータセットを用意しました (顔の唇のセグメント化)。Pascal VOC12 データセット形式に従いました。以下に示すように、RGB マスク (0, 255, 0) を作成し、周囲に白い境界線 (255, 255, 255) と黒い背景 (0, 0, 0) を配置しました。

    RGB マスク RGB マスク

  3. 次に、以下に示すように、このスクリプトを使用して、RGB マスクを background:0、forground:1、boundary:255 の単一チャネル png (8 ビット) に変換しました。

    RGB マスク カラーマップが削除されました

  4. 次に、このスクリプトを変更して、データセットを tfrecord に正常に変換しました。

  5. 次に、data_generator.py にデータセットの説明を ignore_label=255 および num_classes=2 で追加しました。

  6. 最後に、次のコマンドでトレーニングを開始しました。

     !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}
    
  7. トレーニングが完了したら、いくつかの異なる画像でモデルをテストしました。モデルの出力は、すべての値が 0 に等しい (256, 256) 配列です。単一の値ではなく、1 などを取得します。

私は機械学習が初めてです。それを知りたい

  1. 私のプロセスの何が問題になっていますか?多くのチュートリアルを見ましたが、答えが見つかりませんでした。
  2. データセットに何か問題がありますか? データセットには合計 2000 枚の画像が含まれていました。
  3. mobilenetv3_small の事前トレーニング済みの重みが見つかりませんでした。誰かが知っている場合は、親切に共有してください。転移学習を行うことができます。
  4. クラスの数を 2 (背景と前景) に設定します。そうですか?
4

0 に答える 0