语义分割任务中如何处理label为255的标签

编程入门 行业动态 更新时间:2024-10-25 02:25:30

<a href=https://www.elefans.com/category/jswz/34/1769519.html style=语义分割任务中如何处理label为255的标签"/>

语义分割任务中如何处理label为255的标签

语义分割常用数据集Cityscapes中会将不需要用到的像素标签设置为255,但初学者可能会遇到困惑,我们在训练或者评估的时候遇到255的标签该怎么办呢?我们需要做的是忽略。

训练计算loss时的处理

import torch
from torch import nnclass CrossEntropy2d(nn.Module):def __init__(self, ignore_label=255):super().__init__()self.ignore_label = ignore_labeldef forward(self, predict, target):""":param predict: [batch, num_class, height, width]:param target: [batch, height, width]:return: entropy loss"""target_mask = target != self.ignore_label  # [batch, height, width]筛选出所有需要训练的像素点标签target = target[target_mask]  # [num_pixels]batch, num_class, height, width = predict.size()predict = predict.permute(0, 2, 3, 1)  # [batch, height, width, num_class]predict = predict[target_mask.unsqueeze(-1).repeat(1, 1, 1, num_class)].view(-1, num_class)loss = F.cross_entropy(predict, target)return loss	

上面代码的核心就是通过索引将需要训练的像素点拿出来进行交叉熵损失的计算

评估计算Pixel accuracy 和Mean IoU

def eval_metrics(predict, target, ignore_label=255):# 预处理 将ignore label对应的像素点筛除target_mask = (target != ignore_label)  # [batch, height, width]筛选出所有需要训练的像素点标签target = target[target_mask]  # [num_pixels]batch, num_class, height, width = predict.size()predict = predict.permute(0, 2, 3, 1)  # [batch, height, width, num_class]# 计算pixel accuracypredict = predict[target_mask.unsqueeze(-1).repeat(1, 1, 1, num_class)].view(-1, num_class)predict = predict.argmax(dim=1)num_pixels = target.numel()correct = (predict == target).sum()pixel_acc = correct / num_pixels# 计算所有类别的mIoUpredict = predict + 1target = target + 1intersection = predict * (predict == target).long()area_inter = torch.histc(intersection.float(), bins=num_class, max=num_class, min=1)area_pred = torch.histc(predict.float(), bins=num_class, max=num_class, min=1)area_label = torch.histc(target.float(), bins=num_class, max=num_class, min=1)mIoU = area_inter.mean() / (area_pred + area_label - area_inter).mean()return pixel_acc, mIoU

更多推荐

语义分割任务中如何处理label为255的标签

本文发布于:2023-07-28 18:48:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1278889.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语义   如何处理   标签   label

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!