YimianDai / open-aff

code and trained models for "Attentional Feature Fusion"
720 stars 95 forks source link

AFF-FPN #25

Open lab-gpu opened 3 years ago

lab-gpu commented 3 years ago

作者你好,请问一下,根据论文里面的说明,构建AFF-FPN,最后通道数输出就很大啊,看图吧,以resnet18为例吧 微信图片_20210601111510

YimianDai commented 3 years ago

因为语义分割的实验我就做了 二分类,所以输出的 channel 我是递减的,从 512 -> 256 -> 128 -> 64

lab-gpu commented 3 years ago

根据论文里面的说明,蓝线表示通道扩张,红线表示上采样,那按照您的通道递减,那红线就改为通道缩减以及上采样,蓝线就表示逐点卷积,然后再使用AFF进行特征融合,请问这样可以吗 微信图片_20210601112220

YimianDai commented 3 years ago

一般论文类别数多的话都是采用比如固定一个维数(FPN 的原始做法,256 维)的,这是主流的做法,毕竟通道信息丰富,有助于分类准确。

image

我觉得还是要看具体的任务,我做实验的时候只做了二分类(我主要的任务是二分类),所以我试了一下发现效果差不多,就采用降采样了。代码需要选一下 fuse_order,看是按照哪种来

            if fuse_order == 'reverse':
                self.fuse12 = self._fuse_layer(fuse_mode, channels=channels[2])  # channels[2]
                self.fuse23 = self._fuse_layer(fuse_mode, channels=channels[3])  # channels[3]
                self.fuse34 = self._fuse_layer(fuse_mode, channels=channels[4])  # channels[4]
            elif fuse_order == 'normal':
            self.fuse34 = self._fuse_layer(fuse_mode, channels=channels[4])  # channels[4]
            self.fuse23 = self._fuse_layer(fuse_mode, channels=channels[4])  # channels[4]
            self.fuse12 = self._fuse_layer(fuse_mode, channels=channels[4])  # channels[4]