Accuracy 图像分割评测代码
时间: 2023-07-23 17:22:43 浏览: 135
以下是一个简单的图像分割评测代码,可以计算预测结果与真实标签之间的准确率和其他指标:
```python
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
def evaluate_segmentation(y_true, y_pred):
# 计算准确率
accuracy = accuracy_score(y_true.ravel(), y_pred.ravel())
# 计算精确率
precision = precision_score(y_true.ravel(), y_pred.ravel())
# 计算召回率
recall = recall_score(y_true.ravel(), y_pred.ravel())
# 计算 F1 分数
f1 = f1_score(y_true.ravel(), y_pred.ravel())
# 计算混淆矩阵
confusion = confusion_matrix(y_true.ravel(), y_pred.ravel())
# 返回评估指标
return {'accuracy': accuracy, 'precision': precision, 'recall': recall, 'f1': f1, 'confusion': confusion}
```
其中,`y_true` 是真实标签,`y_pred` 是预测结果,两者都是二维数组(或矩阵),每个元素表示一个像素的标签。可以使用类似以下代码读取图像和标签:
```python
from PIL import Image
# 读取图像和标签
image = np.array(Image.open('image.png'))
label = np.array(Image.open('label.png'))
```
其中,`image.png` 是待分割的图像,`label.png` 是对应的真实标签。可以使用类似以下代码进行预测:
```python
# 进行图像分割
predicted_label = model.predict(image)
```
其中,`model` 是已经训练好的图像分割模型,可以是任何支持图像分割的模型,例如 U-Net、SegNet、DeepLab 等。`predicted_label` 是预测的标签,与 `y_true` 和 `y_pred` 的格式相同。最后,可以使用 `evaluate_segmentation` 函数计算评估指标:
```python
# 计算评估指标
metrics = evaluate_segmentation(label, predicted_label)
# 输出评估结果
print('Accuracy:', metrics['accuracy'])
print('Precision:', metrics['precision'])
print('Recall:', metrics['recall'])
print('F1 score:', metrics['f1'])
print('Confusion matrix:')
print(metrics['confusion'])
```
其中,`metrics` 是一个字典,包含准确率、精确率、召回率、F1 分数和混淆矩阵等评估指标。可以根据需要选择输出哪些指标。
阅读全文