IoU 损失

[源代码]

IoULoss

keras_cv.losses.IoULoss(bounding_box_format, mode="log", axis=-1, **kwargs)

实现 IoU 损失

IoU 损失常用于目标检测。此损失旨在直接优化真实框和预测框之间的 IoU 分数。最后一维的长度应为 4 以表示边界框。此损失根据框对使用 IoU,因此,y_true 和 y_pred 中的框数应相等,即批次中第 i 个 y_true 框将与第 i 个 y_pred 框进行比较。

参数

  • bounding_box_format: 一个不区分大小写的字符串(例如,“xyxy”)。每个边界框由这 4 个值定义。有关支持格式的详细信息,请参阅 KerasCV 边界框文档
  • mode: 必须为以下之一
    • "linear". 损失将计算为 1 - iou
    • "quadratic". 损失将计算为 1 - iou2
    • "log". 损失将计算为 -ln(iou)。默认为“log”。
  • axis: 计算 IoU 平均值的轴,默认为 -1。

参考文献

示例

y_true = np.random.uniform(size=(5, 10, 5), low=10, high=10)
y_pred = np.random.uniform(size=(5, 10, 5), low=10, high=10)
loss = IoULoss(bounding_box_format = "xyWH")
loss(y_true, y_pred)

compile() API 一起使用

model.compile(optimizer='adam', loss=keras_cv.losses.IoULoss())