Python 绘制二分割预测结果的熵(不确定性)并可视化

这里直接给出代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

pred_path = "YOUR PRED PATH"
pred = cv2.imread(pred_path, 0)
pred = pred / 255	# 预测结果需要归一化到0~1的区间内
eps = 1e-8	
pred = np.clip(pred, eps, 1 - eps)	# 防止计算熵时log0出错
H = -pred * np.log2(pred) - (1 - pred) * np.log2(1 - pred)

fig, ax = plt.subplots()
im = ax.imshow(H, cmap='hot', interpolation='nearest')
ax.tick_params(axis='both', which='both', length=0, labelsize=0, labelcolor='w')
plt.colorbar(im, shrink=0.6)

plt.savefig('heatmap.png', bbox_inches='tight')
print("Entropy", H.sum() / pred.size)	# 整张图像的熵为所有像素熵的和除以像素数

三个例子如下。


预测结果1:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第1张图片

熵为0.7879。可视化热图:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第2张图片


预测结果2:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第3张图片

熵为0.2372。可视化热图:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第4张图片


预测结果3:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第5张图片

熵为0.0645。可视化热图:
Python 绘制二分割预测结果的熵(不确定性)并可视化_第6张图片

你可能感兴趣的:(划水)