ST-CGAN 用GAN实现阴影检测和阴影去除

1. 总体介绍

        本文是2018年的一篇CVPR,虽然现在看起来非常简单,但是在当时还是非常突出的,将阴影检测和除去阴影联合起来训练。

        论文:https://arxiv.org/abs/1712.02478

        代码:https://github.com/IsHYuhi/ST-CGAN_Stacked_Conditional_Generative_Adversarial_Networks (非官方实现)

2. 主要思想

        作者提出的框架包含两个生成模型和两个判别模型,并且可以实现端到端的联合训练。

        第一个生成模型G1生成阴影的mask,mask和Input image堆叠成四通道作为第二个生成模型G2的输入,生成去除阴影后的图片。

        第一个判别模型D1的输入是一个四通道的图,四通道由输入图片和对应mask的堆叠;第二个判别模型D2的输入是一个7通道的图,分别是输入图片、mask和去除阴影后图片的堆叠。

        除了上图所示,明显的GAN_Loss, 对于生成的mask和去除阴影后的图片,使用BCE loss和L1_loss进行监督。即整个框架由四个Loss组成的,分别是两个GAN_loss、BCE loss和L1_loss,并且在每个loss前面配置的参数来平衡整体的损失函数。

       整体的损失函数如下图所示:

3. 文章分析

      (1)D1的输入为什么是用阴影图像+mask?

                  D1是干什么的?是为了判断网络输出的检测的mask是否为真。那么光有mask可以判断出mas是真的吗?当然不行,加上有阴影图像为什么就可以判断处真假?与有阴影图一对比就知道检测的mask是不是完整了!也就说得有参照。

     (2)D2的输入为什么要加上有阴影图像?

                有阴影图像是对比的基准,没有有阴影图,判别器仅靠无阴影图并不知道阴影去除的是否正确。仅能让output无阴影图与GT无阴影图特征上相近。如果GT无阴影图有一暗块在左上角,output无阴影图的一个暗块在右上角,判别器可能分不出来。

     (3)D2的输入为什么要加上mask?

                这是比较亮眼的地方,阴影检测的目的其实是为了阴影去除。检测的好坏影响去除的效果。那么额外加入mask作为输入,梯度回传让第二阶段的去除过程更好的指导mask的生成

4. 实验部分     

        下表的评价指标为RMSE,达到了当时最好的效果。

        最后的效果图如下:

博主点评:(1) 开源的代码写的很简洁,对于理解GAN Loss很有帮助,其他GAN Loss也都基本上是这样写的。

                      (2) 从现在的眼光看,作者另外的一个很大贡献就是开源了ISTD数据集,对于去阴影的研究很有帮助。

### 时间序列生成对抗网络(GAN)的研究综述 时间序列数据因其独特的顺序性依赖性,在金融预测、医疗监控以及物联网等多个领域具有重要价值。然而,由于其复杂的时间动态特性,传统方法难以有效捕捉并模拟这类数据的真实分布。 #### 1. Time Series GAN 的基本概念与发展历程 Time Series GAN 是一种专门针对时间序列设计的生成对抗网络架构。最早的尝试始于2017年提出的 TimeGAN 模型[^4]。此模型不仅能够生成逼真的单变量或多变量时间序列样本,还能够在保持原始数据统计特征的同时引入新的变化模式。随着时间推移,更多改进版本相继涌现,例如: - **MedGAN**: 针对医学记录开发的一种变体,特别适合处理不规则采样率的数据; - **C-RNN-GAN**: 结合循环神经网络(RNN),增强了对于长期依赖关系的学习能力; - **STCGAN & ESRGAN**: 这些模型专注于特定应用场景下的高质量图像合成任务,同时也被证明可用于高维时间序列的生成; #### 2. 关键技术挑战与解决方案 尽管取得了显著进步,但在构建高效的 time series GAN 方面仍面临诸多难题: - **稳定性问题**:训练过程中容易出现梯度消失或爆炸现象,影响收敛速度甚至导致失败。为此,研究者们提出了 Wasserstein 距离作为损失函数替代标准交叉熵,并采用谱归一化等技巧来稳定优化过程。 - **多样性不足**:即所谓的“mode collapse”,指的是生成器倾向于重复输出相似的结果而非探索整个可能空间。解决这一问题的方法之一是在判别器中加入额外约束项鼓励多样化输出,或是利用条件输入指导生成过程。 - **长短期记忆建模**:如何有效地表示传递历史信息成为另一个焦点话题。LSTM/GRU 单元的应用使得模型具备了一定程度的记忆功能,而注意力机制则进一步提升了远距离关联性的表达力。 ```python import torch.nn as nn class Generator(nn.Module): def __init__(self, input_dim=64, output_dim=1, seq_len=24): super(Generator, self).__init__() self.main = nn.Sequential( nn.Linear(input_dim, 128), nn.ReLU(True), nn.LSTMCell(128, hidden_size=seq_len*output_dim), # LSTM单元用于捕获时间序列中的长期依赖关系 ... ) ``` #### 3. 应用案例分析 目前,time series GAN 已经广泛应用于多个行业: - **金融市场仿真**:通过模拟股票价格走势帮助投资者评估风险收益比; - **电力负荷预测**:提高能源分配效率,减少浪费; - **疾病传播预警**:提前识别潜在疫情爆发趋势,辅助公共卫生决策制定。 上述成果表明,随着算法不断演进技术手段日益成熟,time series GAN 将在未来发挥更加重要的作用。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值