二值分割任务的Precision,Recall,Accuracy,F1-score,IoU的计算方式理解与代码实现

本文是作者作为深度学习初学者的第一篇笔记,主要解释和代码实现二值分割任务中的评估指标,包括Precision、Recall、Accuracy、F1-score和IoU。通过"套公式型"和"理解型"两种方法,阐述如何计算这些关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的第一篇深度学习相关文章

从我的其他博文可以看出,我以前是搞WebGIS开发的,研究生阶段开始接触深度学习,如今刚开始工作,从事的也是深度学习相关的工作。就在博客记录一下工作上遇到的问题做个笔记。

第一篇就来谈谈深度学习中的Precision,Recall,Accuracy,F1-score,IoU的计算吧,这几种指标容易混淆,他们的计算方式以及含义,这篇文章讲的非常清楚,过多的就不介绍了。

今天主要记录一下在学习这些指标计算的过程中,看到的一些代码的实现方式的理解,如果大家还不熟悉这几种指标的计算可以先看上面提到的文章。

看了一些这几个指标的代码实现,主要实现方式有两种,一种是套公式型,一种是理解型,接下来以语义分割中的二值分割来说明:

1、套公式型

套公式其实就是上面提到的文章,先计算TPFPFNTN,再通过这四个值根据以下公式分别计算出Precision,Recall,Accuracy,F1-score,IoU:
P r e c i s i o n = t p t p + f p Precision = \frac{tp}{tp+fp} Precision=tp+fptp
R e c a l l = t p t p + f n Recall= \frac{tp}{tp+fn} Recall=t

### MIoU、TP、TN、RecallF1 的定义计算 #### 定义 - **MIoU (Mean Intersection over Union)** 是一种衡量分割法性能的度量标准,尤其适用于图像中的对象检测和语义分割任务。它通过比较预测区域真实标注之间的重叠程度来评估模型的表现。 - **TP (True Positive)** 表示实际为正类且被正确识别出来的样本数量[^2]。 - **TN (True Negative)** 指的是实际上属于负类并且也被正确判断为不属于目标类别的实例数目[^4]。 - **Recall (召回率)** 描述了所有真实的正例中有多少比例被成功检出。其公式如下: \[ \text{Recall} = \frac{\text{TP}}{\text{TP + FN}} \] 其中 FP 代表 False Positives 即假阳性的数量;FN 则指代 False Negatives 或者说漏报的数量[^3]。 - **F1 Score** 结合了 PrecisionRecall 来提供更全面的评价视角。具体而言, \[ \text{F1-Score} = 2 * (\frac{\text{Precision}*\text{Recall}}{\text{Precision}+\text{Recall}}) \] 这里 Precision 可以理解成在所有预测为正的例子里面真正是正的比例: \[ \text{Precision}=\frac{\text{TP}}{\text{TP+FP}}\][^1] #### Python 实现代码片段 对于上述提到的各项指标,在Python中可以借助 `sklearn` 库轻松实现它们的计算过程。下面给出一段简单的示范程序用于说明如何操作这些功能。 ```python from sklearn.metrics import confusion_matrix, classification_report, jaccard_score def calculate_metrics(y_true, y_pred): cm = confusion_matrix(y_true, y_pred) tn, fp, fn, tp = cm.ravel() accuracy = (tp + tn)/(tn + fp + fn + tp) recall = tp / (tp + fn) precision = tp / (tp + fp) f1 = 2*(precision*recall)/(precision+recall) iou = jaccard_score(y_true, y_pred, average='binary') metrics_dict = { 'Accuracy': round(accuracy, 4), 'Recall': round(recall, 4), 'Precision': round(precision, 4), 'F1 Score': round(f1, 4), 'IoU': round(iou, 4)} return metrics_dict # 假设这是测试集的真实标签以及对应的预测结果 y_test = [0, 1, 0, 1, 1, 0, 0, 1] predictions = [0, 1, 0, 0, 1, 0, 1, 1] results = calculate_metrics(y_test, predictions) print(results) ``` 这段脚本不仅能够帮助获取混淆矩阵的信息,还能进一步得出 AccuracyRecallPrecisionF1 ScoreIoU 这些重要的评估参数
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值