在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?
Posted
技术标签:
【中文标题】在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?【英文标题】:While training Mask RCNN using TensorFlow Object Detection API, what is the 'loss'?在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是什么? 【发布时间】:2019-06-17 21:15:29 【问题描述】:我正在 TensorFlow 对象检测 中使用 Mask RCNN 训练 自定义对象检测。因此,我要预测对象实例掩码以及边界框。
预训练模型:mask_rcnn_inception_v2_coco
以下是我的训练快照。
INFO:tensorflow:global step 4181: loss = 0.0031 (3.290 sec/step)
INFO:tensorflow:global step 4181: loss = 0.0031 (3.290 sec/step)
INFO:tensorflow:global step 4182: loss = 0.0030 (2.745 sec/step)
INFO:tensorflow:global step 4182: loss = 0.0030 (2.745 sec/step)
在这种情况下,你能告诉我这里的损失是什么吗?
我的问题与训练损失及其变化无关。步骤。
我只是不清楚在训练 Mask RCNN 时这种损失是什么意思?在一个Mask RCNN中,最后一层有3个平行头,
用于检测类 用于预测边界框 用于预测实例掩码在这种情况下,什么是损失?
【问题讨论】:
【参考方案1】:Mask R-CNN 论文的损失函数结合了 3 个损失的加权和(3 个输出):分类、定位和分割掩模:
分类和边界框(定位)损失与 Faster R-CNN 中的相同。
添加的是每个像素的 sigmoid + 掩码的二进制损失。 掩码分支为每个类生成一个掩码,类之间没有竞争(因此,如果您有 10 个类,掩码分支预测 10 个掩码)。使用的损失是每像素 sigmoid + 二元损失。
如果您想更深入地研究掩码损失,论文指出“多项式与独立掩码:掩码 R-CNN 将掩码和类别预测解耦:作为现有框 分支预测类标签,我们为每个生成一个掩码 类之间没有竞争的类(通过每像素 sigmoid 和二元损失)。在表 2b 中,我们将其与 使用每像素 softmax 和多项损失(如 FCN [30] 中常用的)。”
您可以在paper 第 6 页,表号 2.b(“多项式与独立掩码”)中看到它。
【讨论】:
以上是关于在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?的主要内容,如果未能解决你的问题,请参考以下文章
《R3Det:Refined Single-Stage Detector with Feature Refinement for Rotating Object》论文笔记
TensorFlow object detection API应用一
在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?
TensorFlow object_detection 使用