论文阅读笔记:COCO_LOSS: Rethinking Feature Discrimination and Polymerization for Large-scale Recognition

论文阅读笔记:COCO_LOSS: Rethinking Feature Discrimination and Polymerization for Large-scale Recognition


本文主要包含如下内容:

  论文地址
  代码地址
  参考博客
  pytorch 实现COCO_Loss/Center_Loss/SoftmaxLoss

  2017年NIPS的一篇文章,来自商汤科技。论文提出了一种新的LOSS–“COCO_LOSS”,其目的同样是拉近同样本的特征(类内方差小),拉远不同分类样本的特征(类间方差大)


主要思想


  在分类、识别任务的时候常见的loss是softmax,但softmax只有类间的监督,缺乏类内信息。因此,作者提出了一种新的LOSS–“COCO_LOSS”,其主要特征:使用cosine余弦距离;使用center思想;构造新的loss,使得distance具有softmax特性。


算法原理


  首先,论文提出了思想:即提高类间距离,减小类内距离。根据思想,论文先将输入特征与中心特征归一化:(其中, c 为目标的特征中心,是可以学习的,总共有 K 类。 f(i) 表示输入特征,i=1,…,N,即batch size为 N。 此外, α 是一个对性能有重要影响的可调节参数)

f ( i ) ^ = α f ( i ) | f ( i ) |

c ^ k = c k | c k |

  由于输入特征和中心特征已经做过归一化,因此其Cos距离可以简化为
d = c ^ k T f ( i ) ^

  最终,得到新的LOSS–“COCO_LOSS”:
L C O C O ( f ( i ) , c k ) = i B log e x p ( c ^ k T f ( i ) ^ ) m e x p ( c ^ m T f ( i ) ^ )

  其中,分子项表示输入特征 f(i) 与其对应的中心特征间的Cos距离;分母项表示输入特征到所有中心特征距离之和。通过取负对数,我们会发现该Loss的优化目标是分子越大越好(类内Cos相似度高),分母越小越好(类间Cos相似度低)。接下来,运用交叉熵就可以得到真正的loss函数。

  参数 α 的选择:针对不同的任务调整 loss 的范围,可以得到更好的效果。

α > 1 2 log K 1 e x p ( ϵ ) 1


总结


   是个很好的工作,结果也不错。用归一化的特征把cosine距离和center loss结合起来,除了只用中心点这个信息不够理想之外其他的都还好。


代码实现


  没有caffe代码实现,有pytorch代码。代码与Noem_Face类似,可以参考其代码。

猜你喜欢

转载自blog.csdn.net/u010579901/article/details/81030495