YOLOv3对类别预测的激活函数进行了修改,但是没有使用softmax。首先说明一下为什么不用softmax,原来分类网络中的softmax层都是假设一张图像或一个object只属于一个类别,但是在一些复杂场景下,一个object可能属于多个类,比如你的类别中woman和person这两个类,那么如果一张图像中有一个woman,那么你检测的结果中类别标签就要和woman和person两个类,这就是多标签分类。
所以YOLOv3用逻辑回归层来对每个类别做二分类。逻辑回归层主要用到sigmoid函数,该函数可以将输出约束在0到1的范围内,因此当一张图像经过特征提取后的某一类输出经过sigmoid函数约束后如果大于0.5,就代表属于该类,这样一个框就可以预测多个类别。代价函数用的是sigmoid的交叉熵。
softmax是多分类,把所有类别概率统一,求出一个最大的概率,也就是最后只有一个类别,无法多标签。
sigmoid把每个类别做二分类,大于某个阈值则是次类,每个输出的分类值不和其他比较,只确定自己是否是某个类别