Sigmoid vs Softmax交叉熵在目标检测中的应用

时间:2018-12-10 17:22:31

标签: tensorflow deep-learning computer-vision object-detection

我目前正在使用MobileNetv1 + SSD进行对象检测,但是我很难理解要在分类部分使用哪种损失。

在Liu,Wei等人的SSD论文中。他们在多个类别置信度tf.nn.softmax_cross_entropy_with_logits上使用softmax损失。但是,使用来自Tensorflow pipeline tf.nn.sigmoid_cross_entropy_with_logits的S形损失,我得到了更好的结果。

我的问题是:

  • 检测物体的两种损失之间的主要区别是什么?我无法从心理上想象它。
  • 使用不同的损失导致这种结果差异的原因可能是什么?

1 个答案:

答案 0 :(得分:1)

如果只有一个类可以为“ true”,则将使用softmax交叉熵损失。您的任务中一个示例(例如一张图片)的基本事实可能看起来像[0,0,0,1,0,0]。例如,这6个值可以表示6个不同的类,例如['cat', 'dog', 'house', 'fish', 'shoe', 'boat']

网络的最终输出将是输出向量中每个标量的“概率”分数列表。概率总计为1,例如[0.05, 0.1, 0.15, 0.55, 0.15]

如果您要解决的问题涉及多个值为“ true”的可能性,例如,您将使用S型损失函数。基本事实可能是[0,1,0,1,0,0]