论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)

论文原文    部分代码实现

一种端到端的、无监督学习实现的图像协同分割。

主要由两个CNNs模块组成:特征提取器、协同注意力生成器。

设计一个协同注意力损失函数,这个函数通过增强一组图像间协同目标的相似性并且增大单幅图像中前景与背景差异性来实现。

论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)_第1张图片

弱监督语义分割与协同分割的区别:(没看明白这一段想表达什么)

弱监督语义分割旨在减少分割中的标注代价,弱监督语义分割通常使用图像级(image-level)的标签而非像素级(pixel-level)的标签数据来训练模型。弱监督语义分割(WSS)和系统分割主要有两点区别:1)WSS分为训练和测试两阶段,它使用弱标注训练数据训练模型,再将训练得到的模型应用于测试数据。协同分割是通过在同一阶段发现多幅图像中公共的目标来实现的。2)WSS使用多个已知类别的训练图像,并要求测试图像的类别被训练图像的类别所覆盖。相反,协同分割通常适用于单一、未知类别的多幅图像。

论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)_第2张图片

网络结构主要由两个CNN模块组成,分别是协同注意力生成器 g 和特征提取器 f ,以及两个损失函数:协同注意力损失 l_{c} 和mask损失 l_{m}

协同注意力生成器 g :在VGG-16的基础上,将最后的softmax层换为sigmoid激活函数,经sigmoid得到的输出结果就是co-attention map。

特征提取器 f:ResNet-50结构,初始参数为ImageNet预训练的参数导入。

分两阶段进行训练:1)损失函数只用 l_{c} ,训练20代,得到较为稳定的co-attention maps,这一阶段是无监督的学习过程,通过降低损失函数 l_{c} 来指导网络学习。

2)加入 l_{m} 损失项,再训练40代。这一阶段是有监督的训练。

 

共同注意损失 l_{c} 参照提取器 f 计算出的目标和背景特征来指导生成器 g 的训练。

通过公式2得到I_{n}^{o}I_{n}^{b} ,即预测的前景掩码和背景掩码。

l_{c}函数公式:该损失是基于非监督目标协同分割的两种准则设计的,即图像间的目标相似性和图像内的前景-背景差异高。

论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)_第3张图片

N张图中,对每张图片I_{n},计算其与另外N-1张图像的log(p_{ij})值并求和。d_{ij}^{+}指两图间前景目标距离,d_{ij}^{-}则为两图前景与背景距离之和。

通过在训练中降低 l_{c},生成器g将生成一组协同注意力图,使得该组注意力图中各图间前景目标距离相近而每张图内前景与背景目标距离远。(low inter-image object distances and high intra-image figure-ground discrepancies)

单独使用共同注意力损失l_{c}可能会导致两个问题。首先,共同注意图倾向于只突出区分对象的部分,而不是整个对象。这并不奇怪,因为只分割有区别的部分会导致更低的共同注意损失。第二,在共同注意地图中存在一些干扰,如噪声、误判。为此加入l_{m}损失项。 l_{m}损失项是针对单张图像的损失项。

论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)_第4张图片

这个公式没看完,下次再看。。。

 

论文中提到其测试评估数据为iCoseg、subInternet和Pascal-VOC。

论文阅读:Co-attention CNNs for Unsupervised Object Co-segmentation(IJCAI-18)_第5张图片

从实验效果数据上来看,效果比该论文发表之前的非监督学习方法好,甚至比一些监督学习方法(如DCRF)效果好,不过当然比不上现在(2021年)的很多方法,但从论文中给出的分割结果图(Figure4)上看,第一组和第二组效果好的让我惊讶,很多有监督学习的方法整体效果都比这篇论文好,但是在这两组上表现很差,经常会把人和马分割出来而忽视金字塔和石块,这是怎么做到的,是协同注意力损失真的在这方面产生的作用力吗?

iCoseg数据集上效果从结果图上看起来不错,但是Internet上实验效果不是很好。如金字塔那一组能把金字塔很好的分割出来,这是它的方法产生了效果还是和数据集的使用有关呢?论文中没有提到其训练数据用的是什么数据,如果使用的是与测试数据一致的数据集,那么我看不出来 l_{c} 是否真的那么有效。

有人复现了这篇论文,github链接,复现的训练数据使用了Internet Dataset。

你可能感兴趣的:(论文笔记,深度学习,计算机视觉,机器学习)