2017-06-13 129 views
0

我正在使用tensorflow 0.11並正在運行一些圖像分割測試。在圖像分割中,我們通常計算IoU。我如何使用tensorflow的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,請參見this question。你可以通過混淆矩陣來計算它們。運行streaming_mean_iou時,tensorflow已經創建了一個局部變量,稱爲total_confusion_matrix(對於tf 0.11也是如此)。然後,您可以致電tf.local_variables()或通過get_tensor_by_name獲取此矩陣。

+0

謝謝@Seven。有很多更清楚的! :) –

+0

你有可能有負值嗎?我不知道爲什麼我得到了真正的價值。 –

+0

我不確定......也許這些可以幫助你:(1)檢查預測和標籤是否具有相同的num_classes範圍; (2)檢查混淆矩陣的值是否正常; (3)計算mIoU時是否使用了「權重」或「掩碼」,並檢查它們的值。 – Seven

相關問題