tensorflow-yolov3 icon indicating copy to clipboard operation
tensorflow-yolov3 copied to clipboard

focal loss的问题

Open thom063 opened this issue 5 years ago • 4 comments

根据focalloss的原理 应该写成如下形式 focal_loss = tf.abs(target - alpha) * tf.pow(tf.abs(target - actual), gamma)

正样本时为 (1-alpha) * tf.pow(actual, gamma)

负样本时为 (alpha) * tf.pow((1-actual), gamma)

假如按照你的写法 focal_loss = alpha * tf.pow(tf.abs(target - actual), gamma) #正样本时为 (alpha) * tf.pow(actual, gamma) #负样本时为 (alpha) * tf.pow((1-actual), gamma) 起不到平衡正负样本作用

thom063 avatar Jul 14 '20 01:07 thom063

根据focalloss的原理 应该写成如下形式 focal_loss = tf.abs(target - alpha) * tf.pow(tf.abs(target - actual), gamma)

正样本时为 (1-alpha) * tf.pow(actual, gamma)

负样本时为 (alpha) * tf.pow((1-actual), gamma)

假如按照你的写法 focal_loss = alpha * tf.pow(tf.abs(target - actual), gamma) #正样本时为 (alpha) * tf.pow(actual, gamma) #负样本时为 (alpha) * tf.pow((1-actual), gamma) 起不到平衡正负样本作用

+1 我也发现这个问题了

echochoc avatar Jul 20 '20 15:07 echochoc

根据focalloss的原理 应该写成如下形式 focal_loss = tf.abs(target - alpha) * tf.pow(tf.abs(target - actual), gamma)

正样本时为 (1-alpha) * tf.pow(actual, gamma)

负样本时为 (alpha) * tf.pow((1-actual), gamma)

假如按照你的写法 focal_loss = alpha * tf.pow(tf.abs(target - actual), gamma) #正样本时为 (alpha) * tf.pow(actual, gamma) #负样本时为 (alpha) * tf.pow((1-actual), gamma) 起不到平衡正负样本作用

+1 我也发现这个问题了

作者这里用的应该是 image 平衡比例的alpha没有用到(func focal()里面alpha=1)

如果是用下式的话 image 我认为conf_focal = tf.abs(1.0 - target - alpha) * tf.pow(tf.abs(target - pred), gamma)

Jhc-china avatar Jul 22 '20 07:07 Jhc-china

这里α取多少比较好呢

lwihtittlee avatar Sep 02 '20 08:09 lwihtittlee

0.25

daigang896 avatar Sep 04 '20 07:09 daigang896