【mmsegmentation】Loss模块详解(入门)以调用FocalLoss为例

1、mmdet中损失函数模块简介

1.1. Loss的注册器

先来看段代码:mmseg/models/builder.py


# mmseg/registry/registry.py
# mangage all kinds of modules inheriting `nn.Module`
# MODELS = Registry('model', parent=MMENGINE_MODELS, locations=['mmseg.models'])

from mmseg.registry import MODELS

BACKBONES = MODELS
NECKS = MODELS
HEADS = MODELS
LOSSES = MODELS # 损失
SEGMENTORS = MODELS

这里MODELS注册器同时赋予给了其他模块。
再看看mmseg\models_init_.py

from .assigners import *  # noqa: F401,F403
from .backbones import *  # noqa: F401,F403

from .data_preprocessor import SegDataPreProcessor
from .decode_heads import *  # noqa: F401,F403
from .losses import *  # noqa: F401,F403
from .necks import *  # noqa: F401,F403
from .segmentors import *  # noqa: F401,F403
from .text_encoder import *  # noqa: F401,F403


from .builder import (BACKBONES, HEADS, LOSSES, SEGMENTORS, build_backbone,
                      build_head, build_loss, build_segmentor)

__all__ = [
    'BACKBONES', 'HEADS', 'LOSSES', 'SEGMENTORS', 'build_backbone',
    'build_head', 'build_loss', 'build_segmentor', 'SegDataPreProcessor'
]

# build_mtl_SHUAI
1.2. 注册FocalLoss()

models\losses\focal_loss.py
在这里插入图片描述

上述初始化参数比较简单,就两个参数:init():部分主要关注gamma和alpha两个参数,forward()部分主要关注pred和target两个参数。
举个实际例子算一下:

import torch
from mmseg.models import build_loss

# 配置dict
loss_bbox = dict(type='FocalLoss',
                 use_sigmoid=True,
                 gamma=2.0,
                 alpha=0.5,
                 reduction='mean',
                 class_weight=None,
                 loss_weight=1.0,
                 loss_name='loss_focal')

# 从注册器中构建
focal_loss = build_loss(loss_bbox)

# 使用focal loss
pred = torch.Tensor([[0, 2, 3, 0], [0,2,3,0]])   # [2,4]
target = torch.Tensor([[1, 1, 1, 0], [1,1,1,1]]) # [2,4]
loss = focal_loss(pred, target)
print("loss:",loss)

在这里插入图片描述
在这里插入图片描述

1.3. 总结

基本上mmseg所有损失的计算流程就上述过程,在使用Focal Loss时,不必关心那么多超参,直接build loss然后传入pred和target即可,其余参数基本默认即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BILLY BILLY

你的奖励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值