目标检测,负样本anchor不纳入损失计算。语义分割。背景处像素纳入损失计算。
比如,SSD损失计算相关代码
N = max(1, num_foreground)
return {
"bbox_regression": bbox_loss.sum() / N,
"classification": (cls_loss[foreground_idxs].sum() + cls_loss[background_idxs].sum()) / N
}
比如,deeplabv3损失计算相关代码
def criterion(inputs, target):
'''
cityscapes语义标注,255表示背景处像素
'''
target = torch.where(torch.ne(target, 255), target, 19) # 将255转换成19,纳入损失函数计算
losses = {}
for name, x in inputs.items():
losses[name] = nn.functional.cross_entropy(x, target)
if len(losses) == 1:
return losses["out"]
return losses["out"] + 0.5 * losses["aux"]