Shuaizhang7 / AttentionGAN-for-Cloud-removal

This is the official code of the paper "Cloud removal using SAR and optical images via attention mechanism-based GAN"
9 stars 1 forks source link

关于测试阶段使用的real_B #4

Closed ChenYong1993 closed 1 week ago

ChenYong1993 commented 3 weeks ago

我发现测试阶段传递了GT图像,下面是cycle_attn_gan_model_sar.py文件中的test函数:

    def test(self):
        self.real_A = Variable(self.input_A, volatile=True)
        self.real_B = Variable(self.input_B, volatile=True)
        self.real_C = Variable(self.input_C, volatile=True)

        fake_B = self.netG_A.forward(torch.cat([self.real_A,self.real_C],dim = 1))
        self.attn_real_A = self.netA_A.forward(self.real_A)

        self.fake_B = self.mask_layer(fake_B, self.real_A, self.attn_real_A)
        rec_A = self.netG_B.forward(self.fake_B)
        self.attn_fake_B = self.netA_B.forward(self.fake_B)
        self.rec_A = self.mask_layer(rec_A, self.fake_B, self.attn_fake_B)

        fake_A = self.netG_B.forward(self.real_B)
        self.attn_real_B = self.netA_B.forward(self.real_B)
        self.fake_A = self.mask_layer(fake_A, self.real_B, self.attn_real_B)

        rec_B = self.netG_A.forward(torch.cat([self.fake_B,self.real_C],dim = 1))
        self.attn_fake_A = self.netA_A.forward(self.fake_A)
        self.rec_B = self.mask_layer(rec_B, self.fake_A, self.attn_fake_A)

这里,real_A、B、C应该分别对应有云图像、干净的GT图像和SAR图像,但是这是测试阶段,为什么也要用到real_B呢?

Shuaizhang7 commented 3 weeks ago

请选择pix2pix_attn模型,这个是我们论文提出的方法。CycleGAN是双向的转换,要将A转换成B,B也要输入转为A,所以会用到real_B。pix2pix是单向的模型,test函数里只是读取了real_B,并没有传到网络中去。