找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5236

积分

0

好友

722

主题
发表于 3 小时前 | 查看: 2| 回复: 0

明明是精心拍摄的照片,回看却发现被烦人的明暗条纹毁了?这种在人造光源下常见的“频闪”伪影,现在终于有了更彻底的解决方案。

论文: It Takes Two: A Duet of Periodicity and Directionality for Burst Flicker Removal

核心创新点

  1. 提出 Flickerformer 框架,首次将频闪的 物理先验(周期性与方向性)融入 Transformer,实现高质量去频闪,同时避免引入鬼影。
  2. 设计 周期性建模 二重奏:相位融合模块 (PFM) 利用帧间相位相关性对齐并融合特征;自相关前馈网络 (AFFN) 则增强帧内的重复结构。
  3. 首创 方向性建模 利器:小波方向注意力 (WDAM),巧妙借助小波高频分量指导低频区域的修复,精准定位并消除条纹伪影。
  4. 实现 SOTA 性能,在公开基准测试中,PSNR 指标超越第二名 0.58 dB,且模型参数量仅为其 19.7%

自相关前馈网络模块技术合集,展示了多个即插即用模块的论文、亮点、适用场景与核心思路,如 Autocorrelation Token Mixer、周期分解模块等。

方法详解

整体结构概述

Flickerformer 的整体流程非常清晰。它接收一个包含三帧(一张基础帧,两张参考帧)的连拍序列作为输入。首先,相位融合模块 (PFM) 在频域中对齐并融合这三帧的特征。接着,融合后的特征被送入一个 U 型的编解码器主干网络。在编码阶段,自相关前馈网络 (AFFN) 负责提炼和增强特征中的周期性规律。在解码阶段,小波方向注意力模块 (WDAM) 则利用频闪的方向性特征,精准地修复受影响的区域。最终,网络预测出一个残差图,与原始基础帧相加,得到最终的无频闪图像。

Flickerformer 整体架构流程图,包含 Flicker Images 输入、Conv、PFM、AFFN、WDAM 等模块,以及下采样和上采样路径,展示了数据从输入到输出的流向。

Figure 2 - Flickerformer 整体架构图

步骤分解

  1. 相位融合模块 (Phase-based Fusion Module, PFM) - 解决帧间对齐

    • 功能说明: 传统的图像对齐方法在处理动态场景时容易产生鬼影。PFM 创新地利用了频闪伪影在傅里叶变换后的“相位”中编码了其空间分布这一物理特性。通过计算帧与帧之间的 相位相关性,PFM 能够生成一个可靠性权重图,指导网络在融合多帧信息时,优先关注内容一致、频闪互补的区域,从而有效避免鬼影。
    • 关键公式: 通过计算参考帧与基础帧的相位谱相似度 $S_t(k)$,生成一个频域权重图 $W_t$,用于加权融合特征。
    • 代码片段:
      # PFM 核心逻辑示意
      # 1. 对特征进行傅里叶变换
      fft_feat_ref = torch.fft.fft2(feat_ref)
      fft_feat_base = torch.fft.fft2(feat_base)
      # 2. 计算相位相关性,生成权重
      phase_similarity = torch.abs(torch.exp(1j * fft_feat_ref.angle()) * torch.exp(-1j * fft_feat_base.angle()))
      weight_map = self.conv(phase_similarity).sigmoid()
      # 3. 在频域加权,并反变换回空间域
      enhanced_feat_ref = torch.fft.ifft2(fft_feat_ref * weight_map)
  2. 自相关前馈网络 (Autocorrelation Feed-Forward Network, AFFN) - 增强帧内周期性

    • 功能说明: 在多帧信息融合后,单张特征图内依然存在频闪留下的周期性条纹。AFFN 通过计算特征图的 自相关性 来放大这种重复出现的空间结构。这使得网络能够更清晰地“看到”并理解频闪的模式,为后续的去除步骤打下坚实基础。
    • 关键公式: 利用维纳-辛钦定理,通过计算特征 $F_l$ 的功率谱(幅度的平方)的傅里叶逆变换,高效地得到其自相关性 $R_l$
    • 代码片段:
      # AFFN 核心逻辑示意
      # 1. 计算功率谱
      fft_feat = torch.fft.fft2(feature)
      power_spectrum = torch.abs(fft_feat)**2
      # 2. 计算自相关性
      autocorrelation = torch.fft.ifft2(power_spectrum).real
      # 3. 结合原始特征和自相关性进行增强
      enhanced_feature = self.beta * autocorrelation + feature
  3. 小波方向注意力 (Wavelet-based Directional Attention Module, WDAM) - 精准定位方向性条纹

    • 功能说明: 频闪条纹通常是水平或垂直的,具有强烈的方向性。WDAM 巧妙地利用了 哈尔小波变换,将特征图分解为低频(内容)和高频(细节、边缘)部分。其中,高频部分(特别是水平和垂直分量)能天然地捕捉到频闪条纹。WDAM 利用这些高频信息生成一个“方向性权重”,指导注意力机制更关注低频图中受频闪影响的暗带区域,实现精准打击。
    • 关键公式: 将水平($F_{LH}$)和垂直($F_{HL}$)高频分量融合,生成方向性权重图 $M$,并用它来调制注意力机制中的 Value 矩阵。
    • 代码片段:
      # WDAM 核心逻辑示意
      from pytorch_wavelets import DWTForward
      dwt = DWTForward(J=1, wave='haar', mode='zero')
      # 1. 小波分解
      F_LL, (F_LH, F_HL, F_HH) = dwt(feature)
      # 2. 从高频分量生成方向性权重
      directional_weight = self.conv(torch.cat([F_LH, F_HL], dim=1)).sigmoid()
      # 3. 将权重应用到注意力计算中
      attention_output = attention(query, key, value * directional_weight)

实验验证

主实验结果

方法 PSNR (↑) SSIM (↑) LPIPS (↓) 参数量 (M)
Uformer 30.544 0.910 0.056 18.12
Restormer 30.630 0.917 0.055 26.10
AST 30.646 0.918 0.050 19.90
Flickerformer (Ours) 31.226 0.920 0.045 3.92

Table 1 - 在BurstDeflicker数据集上的量化对比

关键发现

  • 性能全面领先:Flickerformer 在所有三项关键指标(PSNR, SSIM, LPIPS)上均取得了最佳成绩。
  • 轻量高效:PSNR 值比当时最先进的 AST 模型高出 0.58 dB,但参数量仅有 3.92M,远低于其他动辄上千万参数的模型,展示了其卓越的效率。

消融实验

配置 CNN PFM FRFNN AFFN ASSA MDAM PSNR ↑ SSIM ↑
(a) 30.449 0.912
(b) 30.728 0.914
(c) 30.831 0.915
(d) 30.822 0.915
(e) 31.226 0.920

Table 4 - 核心模块消融实验结果

关键发现: 实验证明,PFM、AFFN 和 WDAM 三个创新模块都对最终性能有显著贡献。单独替换掉基线模型中的任何一个对应模块,都能带来 0.2 dB0.3 dB 以上的提升,证明了这种基于物理先验的设计的有效性。

即插即用模块作用

适用场景

  • 具体任务: 连拍图像去频闪、视频去频闪、高动态范围(HDR)成像中的伪影去除。
  • 行业场景: 智能手机摄影(尤其在室内、夜景等人工照明环境下)、专业影视制作安防监控自动驾驶(摄像头在 LED 交通灯下的数据清洗)。
  • 使用门槛: 作为一个完整的网络,可以直接用于端到端的去频闪任务。其核心模块设计思想也可被借鉴,用于改进其他图像/视频复原网络。

主要作用

  1. 更彻底的频闪去除: 通过对频闪物理特性的精准建模,Flickerformer 能够去除以往方法难以处理的顽固和微弱频闪,图像更干净。PSNR 达到 31.226 dB
  2. 动态场景无鬼影: PFM 模块的相位融合机制,确保了即使在物体运动的场景下,多帧融合也不会产生模糊或重影,细节保留完好。
  3. 轻量化与高效率: 模型参数仅 3.92M,计算量(128.76 GFLOPs)也远低于同类 SOTA 模型,更易于部署到手机等移动设备上。

接入示例(重要)

# 假设你已经有了预训练好的Flickerformer模型
import torch

# 初始化模型
model = Flickerformer()
model.load_state_dict(torch.load('flickerformer.pth'))
model.eval()

# 准备输入数据:一个包含三帧的burst,shape为(1, 3, 3, H, W)
# burst_images: [frame0, frame1, frame2], frame1是需要被修复的基础帧
input_tensor = preprocess(burst_images) 

# 推理
with torch.no_grad():
    output_tensor = model(input_tensor)

# 后处理得到无频闪图像
flicker_free_image = postprocess(output_tensor)

对于追求极致画质和高效计算的研究者而言,这种将物理先验融入 Transformer 架构的设计思路,无疑为低层视觉任务开辟了新的方向。




上一篇:马斯克断言Grok 5即为AGI:xAI一月内连发万亿参数模型,超算与多模态体系加速推进
下一篇:特朗普身后的硅谷权力网:PayPal黑帮与科技精英重塑美国政治
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-25 12:08 , Processed in 1.085276 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表