MengyuWang826 / SegRefiner

SegRefiner: Towards Model-Agnostic Segmentation Refinement with Discrete Diffusion Process
Apache License 2.0
137 stars 8 forks source link

核心问题 #6

Closed nyjshinibaba closed 5 months ago

nyjshinibaba commented 5 months ago

作者你好,请问这个模型是为了细化打好的标签得到更精确的标签,在使用这个细化好的标签去做下游任务么?

MengyuWang826 commented 5 months ago

作者你好,请问这个模型是为了细化打好的标签得到更精确的标签,在使用这个细化好的标签去做下游任务么?

感谢您对于这篇工作的关注。在我看来,“细化已有模型的不准确预测”和“细化已有数据集的不准确标注”本质上是一致的,所以如您所说,确实可以尝试使用 SegRefiner 来细化打好的标签。

nyjshinibaba commented 5 months ago

所以如果是“细化已有模型的不准确预测”,那么前向过程是什么样的呢,能否再详细说一下么

MengyuWang826 commented 5 months ago

所以如果是“细化已有模型的不准确预测”,那么前向过程是什么样的呢,能否再详细说一下么

前向过程是从精细的mask到粗糙mask的渐变过程,这里精细的mask就是数据集标注的gt,粗糙mask是对gt做了一些随机扰动得到的,这一部分在paper里的4.1节有说明。

nyjshinibaba commented 5 months ago

所以这个模型从输入输出的角度看,就是输入gt,输出更细化的掩码分割。可是我的分割模型需要输入的是rgb图像,并非一个标注好的gt,这是如何去实现的呢,也即我的分割模型的输入哪里来的?我看论文中还有测试分割精度的表格,这个分割过程是使用扩散模型先得到细化的掩码,再用这个细化的掩码和对应的rgb图片组成图像-标签训练分割模型么?

MengyuWang826 commented 5 months ago

所以这个模型从输入输出的角度看,就是输入gt,输出更细化的掩码分割。可是我的分割模型需要输入的是rgb图像,并非一个标注好的gt,这是如何去实现的呢,也即我的分割模型的输入哪里来的?我看论文中还有测试分割精度的表格,这个分割过程是使用扩散模型先得到细化的掩码,再用这个细化的掩码和对应的rgb图片组成图像-标签训练分割模型么?

这里可能对于“前向过程”存在一些误解,它是一个用于在训练时产生模型输入的过程。对于图像生成中的diffusion模型,前向过程是向rgb图像中加噪,然后将带有不同程度噪声的图像输入模型,训练模型去噪;而对于SegRefiner,前向过程是向gt中“加噪”,获得不同粗糙程度的mask,然后和原始图像concat在一起输入模型,训练其预测精细mask。 所以对于模型,在训练/测试时,它的输入都是原始图像和粗糙mask的concat,输出是更精细的mask。而paper里给到的定量指标的实验,都是在已有分割模型(比如Mask R-CNN,FCN)的结果上做细化,并测试细化之后的分割精度。

nyjshinibaba commented 5 months ago

已有分割模型(比如Mask R-CNN,FCN)这个所指的是concat之后要输入的模型,也就是结构图里那个unet么?

MengyuWang826 commented 5 months ago

已有分割模型(比如Mask R-CNN,FCN)这个所指的是concat之后要输入的模型,也就是结构图里那个unet么?

不是的,这些模型是用来产生粗糙mask的,是把他们的预测结果和原图concat起来作为我们模型的输入。

nyjshinibaba commented 5 months ago

也就是说模型结构图整个部分做的事情是gt到细化掩码?然后这个细化掩码拿去做训练?

nyjshinibaba commented 5 months ago

还是没太理解输入rgb到输出预测mask的这个过程在哪

MengyuWang826 commented 5 months ago

还是没太理解输入rgb到输出预测mask的这个过程在哪

可能解释一下背景能够帮助您更好地理解这篇工作在做的事情: (1)对于Refinement这个任务,它的目标是在已经有一个粗糙分割结果的基础上,获得一个更精细,更准确的预测。而反映到SegRefiner的框架上,就是我们的模型的输入是concat起来的原始图片和粗糙mask,在二者的信息下预测出一个精细的mask。 (2)在这样的框架下,预测时的输入就是原图和已有模型的预测,比如上面提到的FCN,Mask R-CNN等,也就是认为这些模型的预测是粗糙的,想要精细化他们的预测结果。 (3)为了在预测时达成上述的目标,训练时就需要配对的精细和粗糙mask。这里可以同样采用已有模型的预测作为粗糙mask,但是为了泛化性,避免拟合到固定模型的bias,我们选择用随机扰动来模拟出粗糙mask。 (4)由于SegRefiner是一个基于diffusion的方法,所以它有着前向和反向两个迭代过程。其中前向过程将精细mask渐变为粗糙mask,并且将这些不同粗糙程度的mask作为输入来训练模型预测对应的精细mask;而反向过程作用于预测时,即初始输入是一个完全粗糙的mask,SegRefiner通过和前向过程相反的迭代,逐渐使输入的粗糙mask变得精细。

nyjshinibaba commented 5 months ago

终于懂了,感谢