我目前正在使用MobileNetv1 + SSD进行对象检测,但是我很难理解要在分类部分使用哪种损失。
在Liu,Wei等人的SSD论文中。他们在多个类别置信度tf.nn.softmax_cross_entropy_with_logits
上使用softmax损失。但是,使用来自Tensorflow pipeline tf.nn.sigmoid_cross_entropy_with_logits
的S形损失,我得到了更好的结果。
我的问题是:
答案 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]
。