有关SegFormer中position encoding的想法,看完CPVT之后记录在此,自己的想法可能还不成熟,欢迎探讨。CPVT文章在此,SegFormer文章在此。
1、首先,要知道为什么需要位置编码?
因为在做NLP和检测、分类任务中,需要确定patchs之间的顺序关系,比如某个词在某句话中的位置的重要性,某个patch在某张图片中的位置重要性,这种顺序会直接影响预测结果。
2、其次,检测和分类任务是图像级别的CV任务,而语义分割是像素级别的任务。即语义分割中模型需要对每一个像素进行分类,所以输入patch的顺序对像素级的预测来说影响可以忽略。
3、还有,分类、检测任务和语义分割任务的区别之一就是平移不变性。简单理解平移不变性是指的在将图片旋转拉伸等操作之后不影响模型检测结果。
基于这三点和我们阅读SegFormer、CPVT文章,可以解释为什么SegFormer作者提出一句话“CPVT uses 3 × 3 Conv together with the PE to implement a data-driven PE. We argue that positional encoding is actually not necessary for semantic segmentation,Instead, we introduce Mix-FFN which considers the effect of zero padding to leak location information”。
CPVT提出的角度主要还是分类和检测等图像级别的任务,所以CPVT主要是对位置编码进行了讨论,探讨了目前遇到的问题以及现有的解决方法,并分析了弊端,最后提出一种基于动态的位置编码方式。SegFormer是针对语义分割的论文,因为特征提取用是VIT中的Transformer Encoder,其中正好含有绝对位置编码,这会对SegFormer模型带来绝对编码所有的负面影响,比如test序列长度不能大于train长度。所以SegFormer作者作者去掉了PE,认为位置编码不是非必要的对语义分割。
但是我还是没理解来作者在MiX-FFN中使用3*3卷积和零填充和位置缺失的关系(这句话:Instead, we introduce Mix-FFN which considers the effect of zero padding to leak location information),这有待看“How much position information do convolutional neural networks encode”这篇文章。