Semantic-supervised Infrared and Visible Image Fusion via a Dual-discriminator Generative Adversarial Network文章学习
模型框架
我们的生成器G的网络结构如图所示。我们在通道维度上连接红外和可见光图像,并使用它们作为G的输入。输出是最终的融合图像。gG由五个公共卷积层组成。对于每个卷积层,padding设置为相同,步长设置为1。因此,特征图的大小将不会改变。
我们的网络中有两个鉴别器Dr和Dv。它们具有相同的架构。它们都用作分类器,生成标量来估计输入图像来自真实数据而不是G的概率。
损失函数
生成器损失函数
生成器损耗LG包括监督损耗Lsup、对抗损耗Ladv、梯度损耗Lgrad和MSE损Lmse。
监督损耗Lsup
对抗损耗Ladv
梯度损耗Lgrad
第四个损失Lmse代表mse损失。我们应用MSE损失来约束融合图像以包含来自源图像的相当多的信息,其可以被定义为:
鉴别器损失函数
代码运行测试
问题一:tensorflow.python.framework.errors_impl.InvalidArgumentError
训练模型时报错,完整的为:tensorflow.python.framework.errors_impl.InvalidArgumentError Unsuccessful TensorSliceReader constructor: Failed to get matching files on ./checkpoint12/CGAN_120/CGAN.model-0: Not found: FindFirstFile failed for: ./checkpoint12/ CGAN_120 : ϵͳ\udcd5Ҳ\udcbb\udcb5\udcbdָ\udcb6\udca8\udcb5\udcc4·\udcbe\udcb6\udca1\udca3; No such process
解决尝试:在下载的文件中/CGAN_120这个文件夹只包含CGAN.model-36——CGAN.model-39的,所以我把原始代码由
num_epoch=0
while(num_epoch<42):
……
reader = tf.train.NewCheckpointReader('./checkpoint12/CGAN_120/CGAN.model-'+ str(num_epoch))
改成了这个
num_epoch=36
while(num_epoch<40):
……
reader = tf.train.NewCheckpointReader('./checkpoint12/CGAN_120/CGAN.model-'+ str(num_epoch))
就是把范围改了一下,不知道对全部程序有啥影响,反正先跑通再说。