python 对2d图片的Iou计算

import os
from PIL import Image
from sklearn import metrics, neighbors
import numpy as np
from operator import truediv
path = 'predict'
path2 = 'label'
all_iou = 0
all_acc=0
account=[]
i = 0;
for filename in os.listdir(r""+path):
    str1 = path+'/'+filename
    im = Image.open(str1)
    im = np.array(im)
    str2 = path2 + '/'+filename
    im2 = Image.open(str2)
    im2 = np.array(im2)
    cal_outputs = im.flatten()
    label = im2.flatten()
    c = metrics.confusion_matrix(cal_outputs, label)
    FP = c .sum(axis=0) - np.diag(c )
    FN = c .sum(axis=1) - np.diag(c )
    TP = np.diag(c )
    TN = c .sum() - (FP + FN + TP)
    print(FP)
    list_diag = np.diag(c)
    list_raw_sum = np.sum(c,axis=1)

    each_acc = np.nan_to_num(truediv(list_diag,list_raw_sum))
    print(each_acc)
    average = np.mean(each_acc)
    all_acc += average
    MIou =  ( TP / (TP + FP + FN) + TN / (TN + FN + FP) ) / 2
    print(MIou)
    mean_iou=np.mean(MIou)
    all_iou += mean_iou
    i+=1
    ai = np.sum(each_acc)
    print(ai)
all_acc *=100
all_acc /= i
all_iou *= 100
all_iou /= i
# average_acc = np.mean(each_acc)
print(all_iou)
print(all_acc)

 

我这个是对整个文件夹做的处理,所以使用时请确认好

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: FCN(全卷积神经网络)是一种深度学习模型,其中每一层都是卷积层。它被广泛用于图像分类和语义分割等任务。 要在 Python 中实现 FCN,你可以使用深度学习架如 TensorFlow 或 PyTorch。 例如,在 TensorFlow 中,你可以使用 `tf.keras.layers.Conv2D` 层来构建模型的卷积层,使用 `tf.keras.layers.MaxPool2D` 层来构建池化层,并使用 `tf.keras.layers.UpSampling2D` 层来构建上采样层。最后,你可以使用 `tf.keras.Model` 来构建整个模型。 示例代码: ``` import tensorflow as tf class FCN(tf.keras.Model): def __init__(self): super(FCN, self).__init__() self.conv1 = tf.keras.layers.Conv2D(32, 3, activation='relu', padding='same') self.pool1 = tf.keras.layers.MaxPool2D() self.conv2 = tf.keras.layers.Conv2D(64, 3, activation='relu', padding='same') self.pool2 = tf.keras.layers.MaxPool2D() self.conv3 = tf.keras.layers.Conv2D(128, 3, activation='relu', padding='same') self.pool3 = tf.keras.layers.MaxPool2D() self.conv4 = tf.keras.layers.Conv2D(256, 3, activation='relu', padding='same') self.pool4 = tf.keras.layers.MaxPool2D() self.up5 = tf.keras.layers.UpSampling2D() self.conv5 = tf.keras.layers.Conv2D(128, 3, activation='relu', padding='same') self.up6 = tf.keras.layers.UpSampling2D() self.conv6 = tf.keras.layers.Conv2D(64, 3, activation='relu', padding='same') self.up7 = tf.keras.layers.UpSampling2D() self ### 回答2: Python实现FCN(Fully Convolutional Networks)的步骤如下: 1. 导入所需的库,如PyTorch、NumPy等。 2. 定义FCN模型的网络结构。FCN是一种基于全卷积网络的图像语义分割模型。它的网络结构一般包含卷积层、池化层和上采样层。根据具体任务的需求可自行设计。 3. 定义损失函数。在图像语义分割任务中,常用的损失函数有交叉熵损失函数。根据模型输出的预测结果和标签数据,计算损失值用于优化模型。 4. 加载数据。根据任务的需求,加载训练集和测试集的图像数据及其对应的标签数据。可以使用PyTorch提供的数据加载工具,如DataLoader。 5. 进行训练。使用加载的数据对FCN模型进行训练。根据定义的损失函数和优化器,反向传播更新模型参数,从而达到训练的目的。 6. 进行推断。使用训练好的模型对新的图像进行语义分割推断。将待推断图像经过模型前向传播得到预测结果,可以通过调整阈值或后处理操作来得到最终的分割结果。 7. 评估模型性能。使用评价指标(如准确率、IoU等)来评估模型在测试集上的性能,从而对模型进行优化或进行模型选择。 值得注意的是,FCN模型的性能取决于很多因素,包括网络结构的设计、数据集的质量、超参数的选择等。因此,在实际应用中还需要对这些因素进行进一步的调试和优化。 ### 回答3: Python实现FCN(Fully Convolutional Networks)需要以下几个步骤: 1. 导入所需的库和模块:需要导入常见的机器学习和深度学习库,如NumPy、Pandas、Matplotlib和Keras等。 2. 准备数据:将训练数据和标签准备好,可以是图像数据集和相应的标签图像。可以使用Keras的ImageGenerator来加载和预处理数据。 3. 构建FCN模型:FCN模型由多个卷积层和转置卷积层组成,其中卷积层用于提取图像的特征,而转置卷积层则用于将特征映射还原为原始图像大小。可以使用Keras中提供的Conv2D和Conv2DTranspose来构建模型。 4. 编译模型:设置优化器、损失函数和评估指标,并对模型进行编译。可以使用Keras中的compile函数完成编译。 5. 训练模型:将准备好的数据输入模型进行训练,可以使用Keras中的fit函数来进行训练。在训练过程中,可以设置批次大小、训练周期数和验证集等。 6. 模型评估:使用测试集对模型进行评估,可以计算准确率、精确率、召回率和F1值等评估指标。 7. 预测应用:使用训练好的模型对新的图像进行预测,可以得到相应的分割结果。可以使用Keras中的predict函数实现。 以上就是使用Python实现FCN的基本步骤。在具体实现过程中,可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值