weixin_43821936 2021-05-25 20:32 采纳率: 100%
浏览 311
已采纳

计算语义分割结果IoU的函数,有几行不太理解,求解释

Github上的代码,作用是求语义分割结果的IoU,和IoU计算公式对比着看了实在不懂,请逐行解释开始结束注释之间的语句,谢谢

def intersectionAndUnion(imPred, imLab, numClass):
    imPred = np.asarray(imPred).copy()
    imLab = np.asarray(imLab).copy()

# 开始
    imPred = imPred * (imLab > 0)

    intersection = imPred * (imPred == imLab)

    (area_intersection, _) = np.histogram(intersection, bins=numClass, range=(1, numClass))
    (area_pred, _) = np.histogram(imPred, bins=numClass, range=(1, numClass))
    (area_lab, _) = np.histogram(imLab, bins=numClass, range=(1, numClass))
# 结束

    area_union = area_pred + area_lab - area_intersection
    return (area_intersection, area_union)
  • 写回答

3条回答 默认 最新

  • CSDN专家-ProfSnail 2021-05-28 10:20
    关注

    你好,逐行解释一下是干什么的。

    def intersectionAndUnion(imPred, imLab, numClass):

    定义一个计算交集和并集的函数,这里的交集和并集是针对每个类别而言的。

    imPred = np.asarray(imPred).copy()

    复制一个预测值的拷贝副本。

    imLab = np.asarray(imLab).copy()

    复制一个真实值的拷贝副本。

     

    # 开始

     

    imPred = imPred * (imLab > 0)

    imLab>0返回一个bool类型的矩阵变量,然后与imPred进行逐个元素乘积的运算。
    由于是逐个元素进行的乘积运算,bool值为真的地方,Pred的数值被保留;为假的地方,Pred位置被置零。
    也就是说,只保留imPred中,与imLab>0处于同一位置的元素。

    intersection = imPred * (imPred == imLab)

    imPred==imLab同样也是返回bool类型的矩阵变量,然后做逐元素的乘法运算。
    这里intersection是保留了imPred预测值中,那些预测值与真实值相同的矩阵,对应位置的元素。
     

    (area_intersection, _) = np.histogram(intersection, bins=numClass, range=(1, numClass))

    直方图运算,注意bins=numClass,将数据分为了class类别,实际上就是对每个类别元素进行了一个统计,计算每一个类别的元素,被正确分类的有多少个。

    area_intersection是一个行向量,长度与类别的数目相等,每个元素的数值是对应类别被正确分类的个数。

    (area_pred, _) = np.histogram(imPred, bins=numClass, range=(1, numClass))

    同理,直方图运算,统计的是每个类别,被预测得到的数目。

    (area_lab, _) = np.histogram(imLab, bins=numClass, range=(1, numClass))

    直方图运算,统计的是每个类别,真实值所对应的数目。

    # 结束



     

    area_union = area_pred + area_lab - area_intersection

    这里就是一个并集运算了,A并B=A+B-A交B。

    return (area_intersection, area_union)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图