問題タブ [semantic-segmentation]

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 投票する
1 に答える
113 参照

python - 入力を正規化しても binary_corssentropy 損失は負です

U-net を使用してセマンティック セグメンテーションの問題を解決しようとしています。マスク イメージはバイナリです。しかし、トレーニングをしていると、自分の損失がマイナスであることがわかりました。ここでの損失は、binary_crossentropy を使用します。これが私のコードです:

全部タイプがありますnp.float32

次に、imageDataGenerator を使用して画像を拡張します。コードは次のとおりです。

My net の最終層は次のように定義されます。

どうしてこうなったのか、とても気になります。「シグモイド」関数の出力は 0 と 1 の間にありますか?

何かお考えがありましたら、ご相談ください。どうもありがとう!

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

python - 1D データのロジットを使用した TensorFlow シグモイド クロス エントロピー

環境

すべての系列が固定長lである 1D データ (時系列など) があるとします。

そして、 n 個のクラスでセマンティック セグメンテーションを実行します。

次に、単一の例の出力は shape [n, l](つまり、data_formatis not "channels_last") を持ち、バッチ化された出力は shape[b, n, l]を持ちます。ここbで、 はバッチ内の例の数です。

これらのクラスは独立しているため、ソフトマックス クロス エントロピーではなく、損失としてシグモイドクロス エントロピーの使用がここで適用可能であることを理解しています。


質問

の予想される形式と使用に関して、関連するいくつかの小さな質問がありますtf.nn.sigmoid_cross_entropy_with_logits

  1. ネットワークはバッチ処理されたラベルと同じ形状のテンソルを出力するため、ロジットを出力するという仮定の下でネットワークをトレーニングする必要がありbinary_crossentropyますか?

  2. 1 次元セグメンテーションの問題を考えると、次のことを要求tf.nn.sigmoid_cross_entropy_with_logitsする必要があります。

    • data_format='channels_first'(上記のように)、または
    • data_format='channels_last' (例.T)

    チャネルごとに個別にラベルを割り当てるには?

  3. オプティマイザーに渡される損失操作は次のようになります。

    • tf.nn.sigmoid_cross_entropy_with_logits(labels, logits)
    • tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels, logits))、 また
    • tf.losses.sigmoid_cross_entropy?

コード

このColabは、私の混乱を強調data_formatし、実際に問題があることを示しています...しかし、ドキュメントには、どちらが期待されるかが明示されていません。

ダミーデータ

損失

tf.nn

tf.reduced_mean(tf.nn)

tf.losses

テストの同等性

data_format の同等性

tf.reduce_mean と tf.losses の等価性

0 投票する
2 に答える
1463 参照

android - Tensorflow-lite - 量子化されたモデル出力からビットマップを取得する

tensorflow-lite を使用して、Android でセマンティック セグメンテーション アプリケーションに取り組んでいます。モデルを実行し、tflite.run メソッドの助けを借りて ByteBuffer 形式で出力を取得できました。しかし、Java でこの出力から画像を抽出できませんでした。パスカル voc データセットでトレーニングされ、実際に変換されたモデルTF モデルからの tflite 形式: ' mobilenetv2_dm05_coco_voc_trainval ' 。

この問題は、次のスタックオーバーフローの質問に似ているようです: tensorflow-lite - using tflite Interpreter to get an image in the output

float データ型の変換を扱う同じ問題は、github の問題で修正されているようです: https://github.com/tensorflow/tensorflow/issues/23483

では、UINT8 モデルの出力からセグメンテーション マスクを適切に抽出するにはどうすればよいでしょうか。