YunYang1994 / tensorflow-yolov3

🔥 TensorFlow Code for technical report: "YOLOv3: An Incremental Improvement"
https://yunyang1994.gitee.io/2018/12/28/YOLOv3-算法的一点理解/
MIT License
3.63k stars 1.36k forks source link

focal loss的问题 #558

Open thom063 opened 4 years ago

thom063 commented 4 years ago

根据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)

起不到平衡正负样本作用

echochoc commented 4 years ago

根据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 我也发现这个问题了

Jhc-china commented 4 years ago

根据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)

lwihtittlee commented 4 years ago

这里α取多少比较好呢

daigang896 commented 4 years ago

0.25