Closed macaulishxcoo closed 4 months ago
您好。您可以在configs/
在验证时,对于PASCAL数据集,我们保持了原始图像大小,对于Cityscapes数据集,我们使用了sliding window的方法进行evaluation,您可以参考论文描述和evaluate.py获取更多细节。
macaulishxcoo @.***> 于 2024年7月5日周五 15:16写道:
谢谢您的回复!我理解了。还有另外一个问题想要请教,我在源码中没有找到图像的输入尺寸,这部分参数在源码中哪里?我需要用您的方法与一般的全标注数据训练做个对比实验,所以需要保证一些参数的一致性。
— Reply to this email directly, view it on GitHub https://github.com/BBBBchan/CorrMatch/issues/17#issuecomment-2210329528, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHWT7BRJNHU7ZEQCBYBZGRDZKZB3TAVCNFSM6AAAAABKMR3ZF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMJQGMZDSNJSHA . You are receiving this because you commented.Message ID: @.***>
代码中计算特征图之间的correlation map这段怎么理解?作者能不能大概讲述下流程,这段不是很理解。
CorrMatch在构建相关矩阵时,对每一个分支都分别计算相似度。我们对每一个分支的特征都计算了自己和自己之间的相似度矩阵,由于骨干网络本身具有的抽象语义的能力,以及我们对 correlation loss的计算,使其在进行softmax和之后,其每一行都可以表示单个像素对全图所有像素位置的相似性,这其中蕴含着丰富的形状信息(具有相同语义的像素位置相关性更强,在该issue里有一些更详尽的表述)。Pixel Propagation便是利用这种逐像素之间的相似性,鼓励模型对具有相同语义的像素给出相似的输出。在Region Propagation策略中,我们进一步将抽样出的形状信息进行归一化和二值化,直接利用其中的形状信息,对高置信度区域进行拓展。
计算correlation map时是针对每一个像素计算相似度吗,例如特征图向量为(4,3,321,321),这张特征图和自己或其他特征图计算相似度时是不是得到一个(321^2,321^2)的correlation map?每张图只会随机裁减出1个区域吗?然后针对这个区域作特征提取出一个fp?如果我有10张标注数据,20张未标注数据,最后我是不是得到200个321^2的orrelation map的2d矩阵,是只需要标注数据和未标注数据correlation map计算吗?包括后面给伪标签是针对每个像素进行分类吗? 问题比较多,希望得到您的回复!另外:要是源码关于训练的部分有一些注释就好了,因为涉及变量和计算比较多,确实理解起来优点复杂。
抱歉对您理解我们的方法造成了困扰,我们将分条回答您的问题:
P.S. 我们会考虑对训练部分的源码增加部分注释。
好的,十分感谢!通过对源码的阅读,已经差不多理解了。
CorrMatch在构建相关矩阵时,对每一个分支都分别计算相似度。我们对每一个分支的特征都计算了自己和自己之间的相似度矩阵,由于骨干网络本身具有的抽象语义的能力,以及我们对 correlation loss的计算,使其在进行softmax和之后,其每一行都可以表示单个像素对全图所有像素位置的相似性,这其中蕴含着丰富的形状信息(具有相同语义的像素位置相关性更强,在该issue里有一些更详尽的表述)。Pixel Propagation便是利用这种逐像素之间的相似性,鼓励模型对具有相同语义的像素给出相似的输出。在Region Propagation策略中,我们进一步将抽样出的形状信息进行归一化和二值化,直接利用其中的形状信息,对高置信度区域进行拓展。
既然是计算自己和自己之间的相似度,为什么要先通过两个线性层映射成不同的张量再相乘呢?
这是一个很好的问题。直观来讲,通过使用不同的线性变换矩阵,模型能够学习到更丰富的特征表示。具体来说,correlation map本身的计算是无参的,虽然其能够反应像素之间的相似性,但是两个独立的线性层可以帮助correlation map更加灵活地建模信息。
同时,在Pixel Propagation策略中,生成correlation map的分支有对应的label 和 unlabel损失函数进行监督,该监督信号本身就可以鼓励correlation map捕捉更加精确的形状信息。在该过程中,两个独立的线性层中的参数更新对correlation map的调整是有帮助的。
尽管这样有效果,但我想最直观且容易理解的方式还是直接计算或者使用同一个线性层。我想问这样的做法是不是启发于Transformer中的Q和K也采用了不同的映射矩阵?
感谢您的回复。正如您所说,构建correlation map的方式与Transformer中构建attention map的方式在形式上是相似的。事实上,针对一个可学习的分支,我们希望独立的线性层能够使得我们在构建correlation map时能够更准确地捕捉到特征位置之间的相关性。
谢谢!
请问作者,关于自定义数据集的制作有什么需要注意的点吗?是我们人为分配labeled.txt和unlabeled.txt数据吗?数据集下的train_aug.txt和val.txt这两个文件起什么作用,我们需要怎么分配数据? 十分期待您的回复,谢谢!!!