(CVPR 2015) DeepContour: A Deep Convolutional Feature Learned by Positive-sharing Loss for Contour Detection
这篇文章是结合了sketch token和CNN的方法来提取轮廓。
个人认为文章的两个主要贡献:
1)用CNN来学习token的分类。其实这个想法是比较straightforward的,如果看了sketch token的文章以后,第一直觉就是对图像patch提的那好几种feature靠谱吗?够用吗?为什么不让我们普适天下的CNN来直接提feature呢。
在设计网络的时候,作者适当的体征了一下网络大小,这主要是因为作者认为the contour is always represented by a local image patch with smaller size than generic objects.
2)另外一个贡献,也算是最大的贡献就是Positive-sharing loss function。通常在多分类的时候,我们希望各个样本尽可能的分到各自的类,但是在本文定义的问题中,除了定义的多类以外,还有更高一层的“contour”和“non-contour”的分类,作者认为后者的可分性更重要,因此需要对loss function做一个限制,在原来的J0上添加一个惩罚项:设p0为分为non-contour的概率,那么1-p0则是分为contour的概率,因此有:
J =J0 − (1/m)[ ∑λ(1(y = 0) log p0 + ∑1(y =j) log(1− p0)]
这样,如果contour各种分类之间错分了,并不影响惩罚项,而p0的错误则会影响很大,基于这个改动,适当的改动BP的gradient公式,然后就大功告成了。
不过,这样实际上是适当的降低了分类的难度,如果分类器本身能很好的进行多分类,那么做这个必要性并不大,除非是希望严格的加强对non-contour的判断,那么这个方法的作用就很大了。(事实上,实际应用中这个需求是很高的)