gluoncv.loss¶
自定义损失函数。损失函数是 gluon.loss.Loss 的子类,实际上是一个 HybridBlock。
用于不平衡分类的 Focal Loss。 |
|
单发多框目标检测损失函数。 |
API 参考¶
自定义损失函数。损失函数是 gluon.loss.Loss 的子类,实际上是一个 HybridBlock。
-
class
gluoncv.loss.
DistillationSoftmaxCrossEntropyLoss
(temperature=1, hard_weight=0.5, sparse_label=True, **kwargs)[源码]¶ 带有教师模型预测的 SoftmaxCrossEntrolyLoss
- 参数
-
class
gluoncv.loss.
FocalLoss
(axis=- 1, alpha=0.25, gamma=2, sparse_label=True, from_logits=False, batch_axis=0, weight=None, num_class=None, eps=1e-12, size_average=True, **kwargs)[源码]¶ 用于不平衡分类的 Focal Loss。Focal loss 在 https://arxiv.org/abs/1708.02002 中有描述。
- 参数
axis (int, 默认 -1) – 计算 softmax 和熵时求和的轴。
alpha (float, 默认 0.25) – 控制损失曲线的 alpha 参数。
gamma (float, 默认 2) – 控制损失曲线的 gamma 参数。
sparse_label (bool, 默认 True) – 标签是整数数组还是概率分布。
from_logits (bool, 默认 False) – 输入是否为对数概率(通常来自 log_softmax)。
batch_axis (int, 默认 0) – 表示 mini-batch 的轴。
num_class (int) – 分类别的数量。如果 sparse_label 为 True,则这是必需的。
eps (float) – 避免数值问题的 epsilon 值。
size_average (bool, 默认 True) – 如果为 True,则对除 batch_axis 外的每个轴上的输出损失取平均值。
输入 –
pred: 预测张量,其中 batch_axis 维度表示 batch size,axis 维度表示类别数。
label: 真值张量。当 sparse_label 为 True 时,label 的形状应与 pred 的形状相同,但移除了 axis 维度。例如,对于形状为 (1,2,3,4) 且 axis = 2 的 pred,label 的形状应为 (1,2,4),值应为 0 到 2 之间的整数。如果 sparse_label 为 False,label 的形状必须与 pred 相同,值应为 [0, 1] 范围内的浮点数。
sample_weight: 元素级权重张量。必须能够广播到与 label 相同的形状。例如,如果 label 的形状是 (64, 10),并且您想单独加权 batch 中的每个样本,则 sample_weight 的形状应为 (64, 1)。
输出 –
loss: 形状为 (batch_size,) 的损失张量。除 batch_axis 外的维度均已平均。
-
class
gluoncv.loss.
ICNetLoss
(weights=(0.4, 0.4, 1.0), height=None, width=None, crop_size=480, ignore_label=- 1, **kwargs)[源码]¶ 用于 ICNet 训练的加权 SoftmaxCrossEntropyLoss2D
-
class
gluoncv.loss.
MixSoftmaxCrossEntropyLoss
(aux=True, mixup=False, aux_weight=0.2, ignore_label=- 1, **kwargs)[源码]¶ 带有辅助损失的 SoftmaxCrossEntropyLoss2D
- 参数
-
class
gluoncv.loss.
MixSoftmaxCrossEntropyOHEMLoss
(aux=True, aux_weight=0.2, ignore_label=- 1, **kwargs)[源码]¶ 带有辅助损失的 SoftmaxCrossEntropyLoss2D
- 参数
-
class
gluoncv.loss.
SSDMultiBoxLoss
(negative_mining_ratio=3, rho=1.0, lambd=1.0, min_hard_negatives=0, **kwargs)[源码]¶ 单发多框目标检测损失函数。
注意
由于计算批次统计量需要跨设备同步,这与非同步版本相比略微次优。然而,我们发现这对收敛模型的性能更好。
- 参数
-
forward
(cls_pred, box_pred, cls_target, box_target)[源码]¶ 计算整个批次跨设备的损失。
- 参数
cls_pred (mxnet.nd.NDArray) –
classes. (Ground-truth) –
box_pred (mxnet.nd.NDArray) –
bounding-boxes. (Ground-truth) –
cls_target (mxnet.nd.NDArray) –
classes. –
box_target (mxnet.nd.NDArray) –
bounding-boxes. –
- 返回
- sum_losses包含分类预测和边界框回归损失总和的数组。
class prediction and bounding-box regression loss.
cls_losses : 类别预测损失数组。 box_losses : 边界框回归 L1 损失数组。
- 返回类型
NDArray 元组
-
class
gluoncv.loss.
SegmentationMultiLosses
(size_average=True, ignore_label=- 1, **kwargs)[源码]¶ 带有多损失的 2D 交叉熵损失
-
class
gluoncv.loss.
SiamRPNLoss
(batch_size=128, **kwargs)[源码]¶ 用于 SiamRPN 训练的加权 L1 损失和交叉熵损失
- 参数
batch_size (int, 默认 128) – 每个设备 (CPU/GPU) 的训练批次大小。
-
class
gluoncv.loss.
YOLOV3Loss
(batch_axis=0, weight=None, **kwargs)[源码]¶ YOLO v3 的损失函数。
-
hybrid_forward
(F, objness, box_centers, box_scales, cls_preds, objness_t, center_t, scale_t, weight_t, class_t, class_mask)[源码]¶ 计算 YOLOv3 损失。
- 参数
objness (mxnet.nd.NDArray) – 预测的目标存在性 (B, N),范围 (0, 1)。
box_centers (mxnet.nd.NDArray) – 预测的边界框中心点 (x, y) (B, N, 2),范围 (0, 1)。
box_scales (mxnet.nd.NDArray) – 预测的边界框尺度 (宽度, 高度) (B, N, 2)。
cls_preds (mxnet.nd.NDArray) – 预测的类别预测值 (B, N, num_class),范围 (0, 1)。
objness_t (mxnet.nd.NDArray) – 目标存在性目标,(B, N),负样本为 0,正样本为 1,忽略为 -1。
center_t (mxnet.nd.NDArray) – 中心点 (x, y) 目标 (B, N, 2)。
scale_t (mxnet.nd.NDArray) – 尺度 (宽度, 高度) 目标 (B, N, 2)。
weight_t (mxnet.nd.NDArray) – 中心点和尺度目标的损失乘数 (B, N, 2)。
class_t (mxnet.nd.NDArray) – 类别目标 (B, N, num_class)。它是松弛的独热向量,例如 (1, 0, 1, 0, 0)。它可以包含多个正类别。
class_mask (mxnet.nd.NDArray) – 用于掩盖忽略样本的 0 或 1 掩码数组 (B, N, num_class)。
- 返回
obj_loss: 目标存在性逻辑损失总和 center_loss: 边界框中心点逻辑回归损失总和 scale_loss: 边界框尺度 L1 损失总和 cls_loss: 每个类别的逻辑损失总和
- 返回类型
NDArray 元组
-