gpt4 book ai didi

keras - Matterport Mask-R-CNN 的损失究竟是什么?

转载 作者:行者123 更新时间:2023-12-04 04:24:37 28 4
gpt4 key购买 nike

我使用 Mask-R-CNN 来训练我的数据。当我使用 TensorBoard 查看结果时,我有 损失, mrcnn_bbox_loss , mrcnn_class_loss , mrcnn_mask_loss , rpn_bbox_loss , rpn_class_loss 和验证的所有相同的 6 损失:值(value)损失, val_mrcnn_bbox_loss 等等。

我想知道每个损失究竟是什么。

另外我想知道前6个损失是火车损失还是什么?如果他们不是火车损失,我怎么能看到火车损失?

我的猜测是:

亏损 :总结起来就是所有的 5 个损失(但我不知道 TensorBoard 是如何总结的)。

mrcnn_bbox_loss : 边界框的大小是否正确?

mrcnn_class_loss : 类(class)正确吗?像素是否正确分配给类?

mrcnn_mask_loss : 实例的形状是否正确?像素是否正确分配给实例?

rpn_bbox_loss : bbox 的大小是否正确?

rpn_class_loss : bbox 的类是否正确?

但我很确定这是不对的......

如果我只有 1 个类(class),一些损失是否无关紧要?例如只有背景和 1 个其他类?

我的数据只有背景和其他 1 个类,这是我在 TensorBoard 上的结果:

Result 1: Result 2: Result 3: Result :4

我的预测没问题,但我不知道为什么我的验证的一些损失在最后会上下波动......我认为它必须首先下降,然后过度拟合才上升。
我使用的预测是 TensorBoard 上具有最多 epochs 的绿线。我不确定我的网络是否过度拟合,因此我想知道为什么验证中的一些损失看起来如何......

这是我的预测:
Example of my Trainset:
This is the Ground Truth of my Testset example:
This is the prediction from the Testset example:

最佳答案

code commentsdocumentation在 Python Package Index 中,这些损失被定义为:

  • rpn_class_loss = RPN anchor 分类器损失
  • rpn_bbox_loss = RPN 边界框损失图
  • mrcnn_class_loss = Mask R-CNN 分类器头的损失
  • mrcnn_bbox_loss = Mask R-CNN 边界框改进的损失
  • mrcnn_mask_loss = 掩码头的掩码二元交叉熵损失

  • 这些损失指标中的每一个都是为每个感兴趣区域单独计算的所有损失值的总和。将军 亏损日志中给出的指标是 Mask R-CNN 的作者定义的其他五个损失的总和(您可以通过总结它们来检查它)。

    根据 original paper 如何计算这些损失,它们可以描述如下(注意,为了更直观的解释,定义非常粗略):
  • 分类损失值基本上取决于真实类别的置信度分数,因此 分类损失反射(reflect)模型在预测类别标签时的可信度,或者换句话说,模型与预测正确类别的接近程度 .在mrcnn_class_loss的情况下,所有的对象类别都被覆盖,而在rpn_class_loss的情况下,唯一完成的分类是将 anchor 框标记为前景或背景(这就是为什么这种损失往往具有较低值的原因,从概念上来说只有“两类”可以预测)。
  • 边界框损失值反射(reflect)了真实框参数之间的距离 - 即框位置的 (x,y) 坐标、其宽度和高度 - 和预测的 .它本质上是一种回归损失,它惩罚较大的绝对差异(对于较小的差异以近似指数的方式进行惩罚,对于较大的差异以线性方式进行惩罚 - 请参阅 Smooth L1 loss 函数以获得更多信息)。因此,它最终显示 该模型在定位对象方面的表现如何在图像中,在 rpn_bbox_loss 的情况下;以及模型有多好 在精确预测区域 (s) 在图像中 对应不同的对象在 mrcnn_bbox_loss 的情况下存在。
  • 口罩损失 ,类似于分类损失,惩罚错误的每像素二元分类(前景/背景 ,相对于真正的类标签)。对于每个感兴趣的区域,它的计算方式不同:Mask R-CNN 为每个 RoI 的每个类别编码一个二进制掩码,并且特定 RoI 的掩码损失仅根据与其真实类别对应的掩码计算,即防止蒙版损失受到类别预测的影响。

  • 正如您已经说过的,这些损失指标确实是训练损失,而带有 val_ 前缀的是验证损失。验证损失的波动可能有多种不同的原因,仅根据您的图表很难第一眼猜测。它们可能是由于学习率太高(在试图找到最小值时使随机梯度下降过冲)或验证集太小(这会产生不可靠的损失值,因为输出的微小变化可能会产生损失值变化大)。

    关于keras - Matterport Mask-R-CNN 的损失究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360262/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com