問題タブ [deeplab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
162 参照

python - Deeplab の新しいデータセットが新しいクラスを見つけられない

Pascal データセットに新しいクラスを追加して、21 個の検出可能なクラスにしようとしています。次の手順に従いました。

  1. 画像のセグメント化。私はニワトリを選び、4 つの別々のニワトリのセグメンテーションを作成しました。次に例を示します。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

  1. 対応する画像を Voc2012 SegementationClass、SegmentationClassRaw、SegmentationObject、および JPEGImages に配置します

  2. 注釈 XML を追加

  3. 「VOC2012\ImageSets\Main」のすべてのtxtファイルに新しい画像を追加します

  4. "VOC2012\ImageSets\Main" に、chicken_train.txt、chicken_trainval.txt、chicken_val.txt の 3 つの新しい txt ファイルを追加します。ニワトリが含まれるファイル名に 1 を追加します。VOC2012\ImageSets\Segmentation\train.txt に 2 つのニワトリ ファイルを追加し、trainval + val に他の 2 つのファイルを追加します。

  5. 「data_generator.py」に新しいデータセットを作成します。

    _EXTENDED_SEG_INFORMATION = DatasetDescriptor( splits_to_sizes={ 'train': 1466, 'train_aug': 10583, 'trainval': 2915, 'val': 1451, }, num_classes=22, ignore_label=255, )

  6. 「拡張」データセットの新しいカラーマップを作成します。

    def create_extended_label_colormap(): return np.asarray([ [0, 0, 0], #background [128, 0, 0], #aeroplane [0, 128, 0], #bike [128, 128, 0], #鳥 [0, 0, 128], #ボート [128, 0, 128], #ボトル [0, 128, 128], #バス [128, 128, 128], #車 [64, 0, 0], #猫 [192, 0, 0], #椅子 [64, 128, 0], #牛 [64, 0, 128], #食卓 [64, 0, 128], #犬 [192, 0, 128], #馬 [64, 128, 128], #オートバイ [192, 128, 128], #人 [0, 64, 0], #鉢植え [128, 64, 0], #羊 [0, 192, 0], #ソファー [128, 192, 0], #train [0, 64, 128], #tv [128, 64, 128], #chicken ])

  7. 次のコマンドで TFRecord を生成します。

    py "research\deeplab\datasets\build_voc2012_data.py" --image_folder="D:\DeepLab\models-master\research\deeplab\datasets\pascal_voc_seg\VOCdevkit\VOC2012\JPEGImages" --semantic_segmentation_folder="research\deeplab\datasets \pascal_voc_seg\VOCdevkit\VOC2012\SegmentationClassRaw" --list_folder="research\deeplab\datasets\pascal_voc_seg\VOCdevkit\VOC2012\ImageSets\Segmentation" --image_format="jpg" --output_dir="research\deeplab\datasets\extended\ tfrecord」

  8. 人為的に、新しいチキン クラスに重みを設定して、それを表示させます。次のコマンドでトレーニングします。

    python "D:\DeepLab\models-master\research\deeplab\train.py" --logtostderr --train_split="trainval" --model_variant="xception_65" --atrous_rates=6 --atrous_rates=12 --atrous_rates= 18 --output_stride=16 --decoder_output_stride=4 --train_crop_size="513,513" --train_batch_size=2 --dataset="extended" --training_number_of_steps=1000 --fine_tune_batch_norm=true --tf_initial_checkpoint="D:\DeepLab\ models-master\research\deeplab\datasets\pascal_voc_seg\init_models\deeplabv3_pascal_train_aug\model.ckpt" --train_logdir="D:\DeepLab\models-master\research\deeplab\datasets\extended\exp\train_on_trainval_set\train" -- dataset_dir="D:\DeepLab\models-master\research\deeplab\datasets\extended\tfrecord" --label_weights=.001 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 - -label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights=.01 --label_weights =.01 --label_weights=100

  9. モデルをエクスポートしてテストすると、これはあまり良くありません:

ここに画像の説明を入力

  1. イメージに対する eval コマンドも悪い結果を生成します。

    eval/miou_1.0_class_1 [0.00715755112] eval/miou_1.0_class_16 [0.00142123573] eval/miou_1.0_class_17 [0.000168795494] ever/miou_1.0_class_12 [0] pise fid/miou_1.0/miou_1. miou_1.0_class_5[0] eval/miou_1.0_class_13[0.0135749253] eval/miou_1.0_class_15[0.0179808438] eval/miou_1.0_class_3[0.000226198768] eval/miou_1.0_class_8[0.229160205]

    eval/miou_1.0_class_2[8.26003941e-07] eval/miou_1.0_class_7[0.000108588596] eval/miou_1.0_class_4[0] eval/miou_1.0_class_19[0] eval/miou_1.0_class_18[0.00898866542] eval/23ou_class_7[0.000108588596] e-05] eval/miou_1.0_overall[0.0191962905] eval/miou_1.0_class_21[0] eval/miou_1.0_class_10[0.00145707454] eval/miou_1.0_class_9[4.08720407e-05] eval/miou_1.0_class_20[0.2788] .0_class_11[0.00659790076]

10,000回の反復をトレーニングして、それが修正されるかどうかを確認してみましたが、他のすべてのクラスにデータが入力されますが、チキンクラス (class_21) はまだ 0 miou のままです。ここで何が間違っていますか?!?

追加のメモ: 基本的なパスカル クラスに固執すれば、すべてが正しく機能します。問題は、新しいクラスを導入しようとしたときにのみ表示されます。

「research\object_detection\data」の「pascal_label_map」を置き換えるために別の操作を行う必要があるのか​​、それとも不要なのかはわかりません。

0 投票する
1 に答える
579 参照

tensorflow - frozen_interference_graph.pb を使用して Keras モデルを作成する方法は?

事前にトレーニングされたモデルを使用し、その最後にセグメンテーション ヘッドを追加したいのですが、問題は「frozen_inference_graph.pb」しかないことです。これらは私がモデルから持っているファイルです:

ここに画像の説明を入力

私はいくつかの方法を試しました:

1. 事前トレーニング済みのモデルを Keras モデルにロードする: 私が持っているファイルでは不可能のようです。モデルの代わりに AutoTrackable オブジェクトが表示されるだけです。

2. 凍結モデルの Tensor オブジェクトにアクセスし、テンソルを使用してモデルを作成する: テンソル にアクセスする方法はわかりましたが、Tensor オブジェクトを使用して Keras モデルを作成できませんでした。

ここでテンソルを取得できますが、モデルでテンソルを使用することはできません:

この凍結されたグラフを Keras モデルに変換する方法はありますか? または、モデルをトレーニングできる別のアプローチがあれば、喜んでお知らせします。

PS 事前トレーニング済みのモデルは「ssd_mobilenet_v3_small_coco_2020_01_14」で、こちらにあります

0 投票する
0 に答える
262 参照

machine-learning - クラスを予測しない Deeplabv3

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. 最後に、次のコマンドでトレーニングを開始しました。

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

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

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