威海住房和城乡建设局官方网站,肇庆seo,做网站的怎么挣钱、,品牌策划方案ppt图像分割是计算机视觉中的重要任务#xff0c;用于将图像中的不同区域分割成具有语义意义的区域。以下是几种常用的图像分割评价指标以及它们的代码实现示例#xff08;使用Python和常见的计算机视觉库#xff09;#xff1a;
1. IoU (Intersection over Union)
与目标检…图像分割是计算机视觉中的重要任务用于将图像中的不同区域分割成具有语义意义的区域。以下是几种常用的图像分割评价指标以及它们的代码实现示例使用Python和常见的计算机视觉库
1. IoU (Intersection over Union)
与目标检测中的IoU类似用于衡量预测分割区域与真实分割区域之间的重叠程度。
def calculate_iou(mask_true, mask_pred):intersection np.logical_and(mask_true, mask_pred)union np.logical_or(mask_true, mask_pred)iou np.sum(intersection) / np.sum(union)return iou#e.g.import cv2
import numpy as npmask_truecv2.imread(round_meter_421.png,0)
mask_predcv2.imread(round_meter_423.png,0)mask_truecv2.resize(mask_true,(512,512),interpolation cv2.INTER_LINEAR)
mask_predcv2.resize(mask_pred,(512,512),interpolation cv2.INTER_LINEAR)
def calculate_iou(mask_true, mask_pred):intersection np.logical_and(mask_true, mask_pred)union np.logical_or(mask_true, mask_pred)iou np.sum(intersection) / np.sum(union)return iouprint(calculate_iou(mask_true,mask_pred))
#结果0.6660
2. Dice Coefficient
用于衡量预测分割区域与真实分割区域的重叠程度。
def calculate_dice_coefficient(mask_true, mask_pred):intersection np.logical_and(mask_true, mask_pred)dice_coeff (2.0 * np.sum(intersection)) / (np.sum(mask_true) np.sum(mask_pred))return dice_coeff#e.g.import cv2
import numpy as npmask_truecv2.imread(round_meter_421.png,0)
mask_predcv2.imread(round_meter_423.png,0)mask_truecv2.resize(mask_true,(512,512),interpolation cv2.INTER_LINEAR)
mask_true np.where(mask_true ! 0, 1, mask_true)
mask_predcv2.resize(mask_pred,(512,512),interpolation cv2.INTER_LINEAR)
mask_pred np.where(mask_pred ! 0, 1, mask_pred)
def calculate_dice_coefficient(mask_true, mask_pred):intersection np.logical_and(mask_true, mask_pred)dice_coeff (2.0 * np.sum(intersection)) / (np.sum(mask_true) np.sum(mask_pred))return dice_coeffprint(calculate_dice_coefficient(mask_true,mask_pred))
#结果是 0.79953. Pixel Accuracy
计算正确预测的像素数量占总像素数量的比例。
def calculate_pixel_accuracy(mask_true, mask_pred):correct_pixels np.sum(mask_true mask_pred)total_pixels mask_true.sizepixel_accuracy correct_pixels / total_pixelsreturn pixel_accuracy#e.g.import cv2
import numpy as npmask_truecv2.imread(round_meter_421.png,0)
mask_predcv2.imread(round_meter_423.png,0)mask_truecv2.resize(mask_true,(512,512),interpolation cv2.INTER_LINEAR)
mask_true np.where(mask_true ! 0, 1, mask_true)
mask_predcv2.resize(mask_pred,(512,512),interpolation cv2.INTER_LINEAR)
mask_pred np.where(mask_pred ! 0, 1, mask_pred)
def calculate_pixel_accuracy(mask_true, mask_pred):correct_pixels np.sum(mask_true mask_pred)total_pixels mask_true.sizepixel_accuracy correct_pixels / total_pixelsreturn pixel_accuracyprint(calculate_pixel_accuracy(mask_true,mask_pred))
#结果是 0.9914
4. Mean Intersection over Union (mIoU)
计算在不同类别上的平均IoU值。
def calculate_miou(class_iou_list):return np.mean(class_iou_list)5. Boundary F1-score
用于衡量分割区域的边界的预测质量。
def calculate_boundary_f1(mask_true, mask_pred):# Calculate true positive, false positive, and false negative boundary pixelstrue_positive np.sum(np.logical_and(mask_true, mask_pred))false_positive np.sum(np.logical_and(np.logical_not(mask_true), mask_pred))false_negative np.sum(np.logical_and(mask_true, np.logical_not(mask_pred)))precision true_positive / (true_positive false_positive)recall true_positive / (true_positive false_negative)f1_score 2 * (precision * recall) / (precision recall)return f1_score#e.g.import cv2
import numpy as npmask_truecv2.imread(round_meter_421.png,0)
mask_predcv2.imread(round_meter_423.png,0)mask_truecv2.resize(mask_true,(512,512),interpolation cv2.INTER_LINEAR)
mask_true np.where(mask_true ! 0, 1, mask_true)
mask_predcv2.resize(mask_pred,(512,512),interpolation cv2.INTER_LINEAR)
mask_pred np.where(mask_pred ! 0, 1, mask_pred)
def calculate_boundary_f1(mask_true, mask_pred):# Calculate true positive, false positive, and false negative boundary pixelstrue_positive np.sum(np.logical_and(mask_true, mask_pred))false_positive np.sum(np.logical_and(np.logical_not(mask_true), mask_pred))false_negative np.sum(np.logical_and(mask_true, np.logical_not(mask_pred)))precision true_positive / (true_positive false_positive)recall true_positive / (true_positive false_negative)f1_score 2 * (precision * recall) / (precision recall)return f1_scoreprint(calculate_boundary_f1(mask_true,mask_pred))
#结果是 0.7995
这些代码示例提供了基本的评价指标计算方法实际应用中可能会涉及更多的细节和优化。使用深度学习框架如TensorFlow、PyTorch和计算机视觉库如OpenCV、Scikit-image可以更方便地计算这些评价指标因为它们提供了丰富的内置函数和工具来处理图像分割任务。