加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。点击文末“阅读原文”立刻申请入群~
作者 | autocyz
来源 | https://zhuanlan.zhihu.com/p/65307842
已获作者授权,请勿二次转载
论文:https://arxiv.org/abs/1904.08739
代码:https://github.com/wuzhe71/CPD
上图(a)是目前比较流行的显著性检测方法的网络结构图,一般都是提取网络结构的浅层和深层feature,并对这些feature进行反卷积,并将反卷积得到的输出进行融合,得到最终的显著性图。
上图(b)是本文算法的流程。可以发现作者并没有使用前两个浅层的feature了,而是直接从第3个稍微深的feature开始使用。图中每个conv block之后,特征分辨率都会变小两倍。
1、提取第3、4、5个Conv block的feature,并通过一个解码器直接得到初步的显著性图
2、将此显著性图输入到一个Holistic attention module中,得到进一步的显著性图 。
3、将 与第三个Conv block的特征进行元素相加,再次传入到两个Conv block中进行进一步特征提取
4、仿照第一步将特征传入decoder,得到了最终的显著性结果
1、为何不适用浅层feature了
作者通过实验发现浅层的feature对于最终的显著性检测结果影响不大,但是运算消耗却很大。
例如下图(1)和图(2)。
图1 a是作者绘制的不同层的feature对最终的结果影响。发现第2和1层对结果的提升几乎没有影响。图1b 是运算时间,发现浅层feature的运算时间比较的大。
图2 是作者绘制的VGG16不同层输出的显著性结果。发现浅层显著性多集中于边缘信息,深层显著性才比较接近真正的显著性。
综上所述,作者没有使用前两层的feature,而直接从第三层feature开始使用。
2、loss计算
作者算法一共输出了两个显著性图 和 ,在最终计算loss的时候也将这两部分都用来做loss计算,每一部分都使用交叉熵作为loss函数。
3、Holistic Attention Module
这部分其实方法也非常的简单:
具体就是对于初步得到的显著性 ,使用一个高斯滤波器 对其进行滤波,再对滤波之后的结果进行min_max归一化,然后对显著图中的每个位置取归一化之后的结果和 中的最大值。
3、解码器(Decoder)
这部分实现也非常的简单,但是作者描述的有些复杂,建议看看代码,一下就懂了。主要操作就是使用不同大小的卷积和对每一层的特征进行进一步卷积,获得不同感受野。最后就是在不同层的feature之间进行有效的融合了。
可以看到与DSS相比,无论是分数还是性能都有提升。所以说又快又好。
*延伸阅读
点击左下角“阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~
觉得有用麻烦给个在看啦~