2017-06-13 12 views
0

私はテンソルフロー0.11を使用しており、いくつかのイメージセグメンテーションテストを行っています。画像セグメンテーションでは、通常、IoUを計算します。テンソルフローのtf.contrib.metrics.streaming_mean_iouをどのように利用できますか?誰かがtensorflowのtf.contrib.metrics.streaming_mean_iouがどのように動作するかの例を挙げられますか?

mIoU, confusionMatrix = tf.contrib.metrics.streaming_mean_iou(pred_labels_vec,gt_labels_vec,NUM_CLASS) 
 

 
init = tf.initialize_local_variables() 
 

 
sess.run(init) 
 

 
for i in range(1000): 
 
    iou, _ = sess.run([mIoU, confusionMatrix]) 
 
    print(iou) 
 
    
 

答えて

1

あなたのコードでは、平均IOUを計算することが正しいです。

各クラスのIoUを計算する場合は、this questionを参照してください。あなたは混乱行列を使ってそれらを計算することができます。 streaming_mean_iouを実行すると、tensorflowはすでにtotal_confusion_matrix(tf 0.11と同じ)というローカル変数を作成しています。次に、tf.local_variables()、またはget_tensor_by_nameを呼び出して、この行列を得ることができます。

+0

ありがとう@セブン。はるかに明確です! :) –

+0

負の値を持つことは可能ですか?なぜ私は決して価値がないのか分かりません。 –

+0

私はどちらかというと分かりませんが、おそらくこれらはあなたを助けることができます:(1)述語とラベルに同じ範囲のnum_classesがあるかどうかを確認します。 (2)混同行列のチェック値が正常である。 (3)mIuUを計算する際に「ウェイト」または「マスク」を使用したかどうか、それらの値をチェックします。 – Seven

関連する問題