Matterport Mask-R-CNN 中的损失是什么?

14
我使用Mask-R-CNN对我的数据进行训练。当我使用TensorBoard查看结果时,我有损失mrcnn_bbox_lossmrcnn_class_lossmrcnn_mask_lossrpn_bbox_lossrpn_class_loss等6种相同的损失用于验证:val_lossval_mrcnn_bbox_loss等。
我想知道每个损失具体是什么。
此外,我想知道前6个损失是否为训练损失或它们是什么?如果它们不是训练损失,那么我该如何查看训练损失?
我的猜测是: 损失:这是摘要中的所有5个损失(但我不知道TensorBoard如何总结)。 mrcnn_bbox_loss:边界框大小是否正确? mrcnn_class_loss:类别是否正确?像素是否正确分配给类别? mrcnn_mask_loss:实例的形状是否正确?像素是否正确分配给实例? rpn_bbox_loss:bbox的大小是否正确? rpn_class_loss:bbox的类别是否正确?
但我很确定这不是正确的...
如果我只有1个类,一些损失是否无关紧要?例如只有背景和1个其他类?

我的数据只有背景和另一个类别,这是我在TensorBoard上的结果:

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

我的预测还可以,但我不知道为什么我的一些验证损失在最后上下波动... 我认为它必须先只下降,然后过度拟合才会上升。 我使用的预测是TensorBoard上最多epochs的绿线。我不确定我的网络是否过度拟合,因此我想知道为什么一些验证损失看起来像这样... 这是我的预测: 我的训练集示例: 这是我的测试集示例的真实情况: 这是测试集示例的预测结果:

你是怎么绘制这些显示参数的图形的?你能分享一下代码吗? - PolarBear10
1个回答

23
根据Python Package Index中的代码注释文档,这些损失定义如下:
- rpn_class_loss = RPN锚分类器损失 - rpn_bbox_loss = RPN边界框损失图 - mrcnn_class_loss = Mask R-CNN分类器头部损失 - mrcnn_bbox_loss = Mask R-CNN边界框细化损失 - mrcnn_mask_loss = 面具头部的掩膜二元交叉熵损失
每个损失指标都是针对每个感兴趣区域单独计算的所有损失值的总和。日志中给出的一般损失指标是Mask R-CNN作者定义的其他五个损失(可以通过将它们相加来检查)的总和。
就按照原始论文中描述的方式计算这些损失而言,它们可以描述如下(请注意,为了更直观的解释,定义相当粗略):
分类损失值基本上取决于真实类别的置信度得分,因此分类损失反映了模型在预测类别标签时的置信程度,或者换句话说,反映了模型预测正确类别的准确程度。在mrcnn_class_loss的情况下,所有物体类别都被覆盖,而在rpn_class_loss的情况下,唯一进行的分类是将锚框标记为前景或背景(这就是为什么这种损失往往具有较低的值,因为在概念上只有“两个类别”可以被预测)。
边界框损失值反映了真实框参数(即框位置的(x,y)坐标、宽度和高度)与预测框参数之间的距离。它本质上是一个回归损失,惩罚更大的绝对差异(对于较小的差异,以近似指数方式惩罚,对于较大的差异,则以线性方式惩罚-请参见Smooth L1 loss函数以获取更多见解)。因此,它最终显示了模型定位图像中对象的能力,在rpn_bbox_loss的情况下;以及模型精确预测相应于存在的不同对象的图像区域(s)的能力,在mrcnn_bbox_loss的情况下。
与分类损失类似,掩码损失惩罚错误的逐像素二进制分类(前景/背景),关于真实类别标签。对于每个感兴趣区域,它都是根据不同的方式计算的:Mask R-CNN为每个RoI编码了每个类别的二进制掩码,对于特定RoI的掩码损失仅基于其真实类别对应的掩码计算,这可以防止掩码损失受到类别预测的影响。
正如你所说,这些损失指标确实是训练损失,而具有val_前缀的指标则是验证损失。验证损失的波动可能由于多种原因引起,仅凭图表很难一眼看出。它们可能是由于学习率过高(使随机梯度下降在尝试找到最小值时超调),或者验证集过小(这会产生不可靠的损失值,因为输出的微小变化可能会导致大的损失值变化)等原因引起的。

谢谢您的回答!您知道我在哪里可以找到这5个损失函数的每一个?数学公式。在Mask RCNN中,我认为只有Lmask被解释了。没有通过方程式,而是通过说它是带有二元交叉熵的像素级Sigmoid。在Fast-RCNN和Faster-RCNN论文中也有损失,但我不知道哪一个实际上用于Mask R-CNN。我需要的是像这样的东西:Lmask = ... Lclass = ... Lbbox = ... RPNclass = ... RPNbbox = ... - Mob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接