ASGNet论文和代码解读

原文链接:论文
开源代码:-main
网络结构:
论文解读 摘要
原型学习广泛应用于小样本分割 。通常,通过平均全局对象信息从支持特征中获得单个原型 。然而,使用一个原型来表示所有信息可能会导致歧义 。在本文中,我们提出了两个新的模块,超像素引导聚类模块(SGC)和引导原型分配模块(GPA),用于多原型提取和分配 。具体而言,SGC是一种无参数、无训练的方法,它通过聚合相似的特征向量来提取更具代表性的原型,而GPA能够选择匹配的原型以提供更精确的指导 。通过将SGC和GPA集成在一起,我们提出了自适应超像素引导网络(),该网络是一种轻量级模型,适用于对象的规模和形状变化 。此外,我们的网络可以很容易地推广到k-shot分割,并且有很大的改进,并且没有额外的计算开销 。特别是,我们对COCO的评估表明,在5shot分割中超过了最先进的方法5% 。
1.
当前的小样本分割网络通常提取查询集图像特征和支持集图像特征,然后提出不同的特征匹配方法和从支持图像到查询图像的目标掩码转移方法 。这种特征匹配和掩码转移通常以两种方式之一执行:原型特征学习或相似性学习 。
我们做了如下贡献:
2.Work
小样本语义分割是小样本分类的扩展,它解决了一个更具挑战性的任务,即预测每个像素的标签,而不是预测整个图像的单个标签 。这个研究问题是由等人提出的,他提出了一个经典的双分支网络 。后来,PL[4]引入了使用原型的思想 。在这项工作中,每个预测都是通过测量查询图像中原型和像素之间的相似度来生成的 。
超像素:
超级像素是指具有相似特征(颜色、纹理、类别)的一组像素 。超像素在许多计算机视觉任务中都是有效的,并且被用作图像分割任务的基本单元 。超级像素携带的信息比像素多,可以为下游视觉任务提供更紧凑和方便的图像表示 。有关超像素的传统方法和现有方法的更多详细信息,请参阅[1,26] 。
我们的研究受到[12]和采样网络(SSN)[13]的启发 。将SLIC【1】调整为定义的兴趣区域(RoI),其主要贡献在于在RoI中放置种子点 。SSN【13】通过使SLIC算法可微,提出了第一个端到端可训练超像素算法 。受这两种技术的启发,我们提出了特征空间中的屏蔽超像素聚类,它可以将相似的特征聚集在一起并生成超像素质心作为原型 。超级像素不是表示整个对象的信息,而是表示具有相似特征的对象部分 。
3. 问题定义 4. 提出的方法 一、下载中预训练的 CNN,并将它们放入目录中
然后
二、.py !!(通道数变化【注意、2、3、4都是循环调用block[3, 4, 6, 3]次,但是只有第一次有下采样】:3-64-64-128、:128-64-64*4=256+(下采样128-256)、:256-128-128-1284=512(+下采样256-512)、:512-256-256-2564=1024(+下采样512-1024)、:1024-512-512-512*4=2048(+下采样1024-2048通道)) !!self.每次构造完layer都会通过self. =* block.扩大4倍 。2.1 函数
在train.py中调用model:, ,= model(s_x=, s_y=, x=input, y=, =)
在.py中函数:
def forward(self, x, s_x=torch.FloatTensor(1,1,3,473,473).cuda(), s_y=torch.FloatTensor(1,1,473,473).cuda(), s_seed=None, y=None):
函数中输入参数:
2.11 - 将查询集原图x输入定义好的:`self. = nn.(.conv1, .bn1, .relu1, .conv2, .bn2, .relu2,
.conv3, .bn3, .relu3, .);其中==.conv1==为.py中的self.conv1 = (3, 64, =2)`
函数如下:输入通道3,输出通道数64,步长2
def conv3x3(in_planes, out_planes, stride=1):"""3x3 convolution with padding"""return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,padding=1, bias=False)