欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 如何图像去噪?(二)

如何图像去噪?(二)

2025/3/24 16:27:52 来源:https://blog.csdn.net/aqfcca/article/details/146436275  浏览:    关键词:如何图像去噪?(二)

第七章 自监督学习与无监督去噪

喜欢可以在我的主页订阅专栏哟,至少更新6年~~,更到我上大学也可能会继续更~~

7.1 自监督去噪的核心思想

自监督学习通过设计无需干净图像的训练任务,从噪声数据中直接学习去噪映射。其核心优势在于摆脱对成对数据(噪声-干净图像)的依赖,适用于真实场景。

关键技术路线

  1. 盲点学习:通过屏蔽部分输入像素,强制网络学习上下文信息
  2. 噪声建模:假设噪声统计特性(如零均值、独立性)构建损失函数
  3. 多帧融合:利用视频或多曝光图像中的时间冗余

7.2 经典自监督去噪方法

7.2.1 Noise2Noise

  • 基本假设:噪声图像对 ( I_{\text{noisy}}^{(1)}, I_{\text{noisy}}^{(2)} ) 的期望值等于干净图像
  • 损失函数
    [ \mathcal{L} = \mathbb{E}\left[ | f_{\theta}(I_{\text{noisy}}^{(1)}) - I_{\text{noisy}}^{(2)} |^2 \right] ]
  • 代码实现
    class Noise2Noise(nn.Module):def __init__(self):super().__init__()self.unet = UNet()def forward(self, noisy1, noisy2):denoised = self.unet(noisy1)loss = nn.MSELoss()(denoised, noisy2)return loss
    

7.2.2 Noise2Void

  • 盲点策略:随机屏蔽输入像素,强制网络从周围像素推断
  • 掩码生成函数
    def generate_mask(shape, p=0.2):mask = torch.ones(shape)mask[torch.rand(shape) < p] = 0  # 随机置零return mask
    
  • 损失函数:仅计算被屏蔽位置的预测误差

7.3 无监督去噪方法

7.3.1 基于生成对抗网络(GAN)的无监督学习

  • CycleGAN架构
    • 生成器 ( G ): 噪声图像 → 干净图像
    • 判别器 ( D ): 区分生成图像与真实图像分布
  • 循环一致性损失
    [ \mathcal{L}{\text{cycle}} = \mathbb{E} \left[ | G^{-1}(G(I{\text{noisy}})) - I_{\text{noisy}} |_1 \right] ]

7.3.2 深度图像先验(DIP)

  • 核心思想:神经网络结构本身隐式编码图像先验
  • 优化目标
    [ \hat{\theta} = \arg\min_{\theta} | f_{\theta}(z) - I_{\text{noisy}} |^2 ]
    • ( z ): 随机噪声输入
    • 早期停止策略防止过拟合噪声

7.4 基于对比学习的去噪方法

7.4.1 对比损失设计

  • 正样本:同一图像的不同噪声实例
  • 负样本:其他噪声图像
  • 损失函数
    [ \mathcal{L} = -\log \frac{e{s_p/\tau}}{e{s_p/\tau} + \sum e^{s_n/\tau}} ]
    • ( s_p ): 正样本相似度
    • ( s_n ): 负样本相似度
    • ( \tau ): 温度系数

7.4.2 代码实现(SimCLR框架)

class ContrastiveDenoiser(nn.Module):def __init__(self):super().__init__()self.encoder = ResNet50()self.projection = nn.Linear(2048, 128)  # 投影头def forward(self, x1, x2):h1 = self.encoder(x1)h2 = self.encoder(x2)z1 = self.projection(h1)z2 = self.projection(h2)return F.normalize(z1, dim=1), F.normalize(z2, dim=1)# 对比损失计算
def contrastive_loss(z1, z2, temperature=0.5):logits = torch.mm(z1, z2.T) / temperaturelabels = torch.arange(z1.size(0)).to(z1.device)return F.cross_entropy(logits, labels)

7.5 实验设计与结果分析

7.5.1 数据集设置

  • 合成数据:SIDD合成噪声数据集
  • 真实数据:DND真实噪声数据集
  • 评价协议
    • PSNR/SSIM(有参考)
    • NIQE/MANIQA(无参考)

7.5.2 对比方法

  1. Noise2Noise
  2. Noise2Void
  3. DIP
  4. Contrastive-Denoiser

7.5.3 实验结果

方法SIDD-PSNRDND-NIQE训练时间 (h)
Noise2Noise38.24.112
Noise2Void37.84.315
DIP36.54.58 (单图优化)
Contrastive-Denoiser39.13.820

关键结论

  • 对比学习框架在真实噪声数据上表现最优
  • DIP无需训练但计算效率低

第八章 多模态图像去噪与跨域迁移


8.1 多模态图像去噪的核心挑战

8.1.1 多模态数据定义
多模态图像指通过不同传感器或成像技术获取的互补数据,例如:

  • RGB-D图像:彩色图像 + 深度信息
  • 多光谱图像:可见光、红外、紫外等波段
  • 医学影像:CT(结构) + PET(功能)

8.1.2 去噪难点

  1. 模态异构性:不同模态的噪声分布、分辨率差异大
  2. 信息对齐:时空非同步或几何未配准导致融合困难
  3. 计算效率:多模态联合处理增加计算复杂度

8.2 多模态融合策略

8.2.1 早期融合(Early Fusion)

  • 方法:在输入层直接拼接多模态数据
  • 网络结构
    class EarlyFusionNet(nn.Module):def __init__(self, modalities=2):super().__init__()self.conv1 = nn.Conv2d(modalities, 64, kernel_size=3, padding=1)self.unet = UNet(in_channels=64)def forward(self, x1, x2):x = torch.cat([x1, x2], dim=1)  # 通道维度拼接x = self.conv1(x)return self.unet(x)
    
  • 优点:简单高效
  • 缺点:忽略模态间非线性关系

8.2.2 晚期融合(Late Fusion)

  • 方法:各模态独立处理后再融合
  • 网络结构
    class LateFusionNet(nn.Module):def __init__(self):super().__init__()self.branch1 = UNet(in_channels=1)self.branch2 = UNet(in_channels=1)self.fusion = nn.Conv2d(128, 64, kernel_size=1)def forward(self, x1, x2):f1 = self.branch1(x1)f2 = self.branch2(x2)fused = torch.cat([f1, f2], dim=1)return self.fusion(fused)
    
  • 优点:保留模态特异性
  • 缺点:融合信息不充分

8.2.3 跨模态注意力融合(Cross-Modal Attention)

  • 方法:通过注意力机制动态加权多模态特征
  • 注意力公式
    [ \alpha_{i,j} = \text{softmax}\left(\frac{Q_i K_j^T}{\sqrt{d}}\right) ]
    其中 ( Q, K ) 为不同模态的特征映射

代码实现

class CrossModalAttention(nn.Module):def __init__(self, channels):super().__init__()self.query = nn.Conv2d(channels, channels//8, 1)self.key = nn.Conv2d(channels, channels//8, 1)self.value = nn.Conv2d(channels, channels, 1)def forward(self, x1, x2):Q = self.query(x1)K = self.key(x2)V = self.value(x2)attn = torch.softmax((Q @ K.transpose(-2, -1)) / np.sqrt(Q.size(1)), dim=-1)return attn @ V

8.3 跨域迁移学习的关键技术

8.3.1 领域自适应(Domain Adaptation)

  • 目标:将源领域(如合成噪声)的知识迁移到目标领域(真实噪声)
  • 损失函数
    [ \mathcal{L} = \mathcal{L}{\text{task}} + \lambda \mathcal{L}{\text{domain}} ]
    其中 ( \mathcal{L}_{\text{domain}} ) 可为MMD损失或对抗损失

8.3.2 对抗域适应(Adversarial DA)

  • 网络结构
    • 特征提取器 ( F )
    • 去噪器 ( G )
    • 域判别器 ( D )
  • 优化目标
    [ \min_{F,G} \max_D \mathcal{L}_{\text{task}} + \lambda \mathbb{E}[\log D(F(x_s))] + \mathbb{E}[\log(1-D(F(x_t))] ]

代码实现

class DomainAdversarialNet(nn.Module):def __init__(self):super().__init__()self.feature_extractor = ResNet18()self.denoiser = UNet()self.domain_discriminator = nn.Sequential(nn.Linear(512, 128), nn.ReLU(), nn.Linear(128, 1))def forward(self, x):features = self.feature_extractor(x)denoised = self.denoiser(features)domain_logits = self.domain_discriminator(features)return denoised, domain_logits

8.4 实验设计与结果分析

8.4.1 多模态去噪实验

  • 数据集:NYU Depth V2(RGB-D)
  • 噪声设置
    • RGB:高斯噪声(σ=25)
    • Depth:稀疏噪声(5%椒盐噪声)
  • 对比方法
    1. 单模态去噪(仅RGB)
    2. 早期融合
    3. 跨模态注意力融合

实验结果

方法RGB-PSNRDepth-PSNR参数量(M)
单模态(RGB)32.5-2.1
早期融合33.140.24.3
跨模态注意力34.542.84.7

结论:跨模态注意力通过动态特征加权显著提升性能

8.4.2 跨域迁移实验

  • 源领域:合成噪声(Gaussian+Poisson)
  • 目标领域:SIDD真实噪声
  • 迁移方法
    1. 直接迁移(无适配)
    2. 对抗域适应(ADA)
    3. 渐进式微调

实验结果

方法SIDD-PSNR训练时间(h)
直接迁移35.20
ADA38.712
渐进式微调37.915

8.5 实际应用案例:自动驾驶多传感器去噪

8.5.1 问题描述
自动驾驶车辆融合摄像头、LiDAR、雷达数据,需解决:

  • 摄像头动态模糊
  • LiDAR点云稀疏噪声
  • 跨模态时空对齐

8.5.2 解决方案

  1. 时空对齐模块:通过光流估计对齐多模态序列
  2. 级联去噪网络
    • 第一阶段:单模态去噪
    • 第二阶段:跨模态特征融合
  3. 实时优化:TensorRT引擎部署,延迟 < 10ms

部署代码片段

# TensorRT引擎构建
import tensorrt as trtbuilder = trt.Builder(trt.Logger(trt.Logger.WARNING))
network = builder.create_network()
parser = trt.OnnxParser(network, logger)
with open("denoiser.onnx", "rb") as f:parser.parse(f.read())
config = builder.create_builder_config()
config.max_workspace_size = 1 << 30  # 1GB
engine = builder.build_engine(network, config)


第九章 量子图像去噪与生物启发算法


9.1 量子图像去噪的基本原理

9.1.1 量子比特与量子态表示
量子图像利用量子比特(Qubit)的叠加态编码像素信息。一个量子像素可表示为:
[ |I\rangle = \alpha|0\rangle + \beta|1\rangle ]
其中 ( |\alpha|^2 + |\beta|^2 = 1 ),对应像素的灰度值概率分布。

9.1.2 量子噪声模型
量子噪声主要来源于退相干(Decoherence)和门操作误差,数学上可用泡利信道描述:
[ \mathcal{E}(\rho) = (1-p)\rho + p \sum_{k=1}^3 \sigma_k \rho \sigma_k ]
其中 ( \sigma_k ) 为泡利矩阵,( p ) 为噪声强度。

请添加图片描述


9.2 量子去噪算法设计

9.2.1 量子变分去噪电路(QVDC)

  • 参数化量子电路
    from qiskit import QuantumCircuit
    from qiskit.circuit import Parametertheta = Parameter('θ')
    qc = QuantumCircuit(4)
    qc.h([0,1,2,3])                  # 叠加态初始化
    qc.barrier()
    qc.cx(0,1)                       # 纠缠门
    qc.ry(theta, 2)                  # 可旋转门
    qc.cx(2,3)
    qc.measure_all()                 # 测量
    
  • 优化目标:最小化测量结果与干净图像的KL散度

9.2.2 量子卷积去噪(QCD)
利用量子卷积核模拟经典卷积操作:
[ U_{\text{conv}} = e^{-iH \otimes \Delta t} ]
其中 ( H ) 为哈密顿量,编码邻域像素关系。

请添加图片描述


9.3 生物启发式去噪算法

9.3.1 脉冲神经网络(SNN)
SNN模拟生物神经元的脉冲传递特性,更适合处理动态噪声。

LIF神经元模型
[ \tau \frac{dV}{dt} = -V + I_{\text{input}} ]
当膜电位 ( V ) 超过阈值时触发脉冲并重置。

代码实现(PyTorch)

import torch
import torch.nn as nnclass LIFNeuron(nn.Module):def __init__(self, tau=10.0, threshold=1.0):super().__init__()self.tau = tauself.threshold = thresholdself.mem = Nonedef forward(self, x):if self.mem is None:self.mem = torch.zeros_like(x)self.mem += (-self.mem + x) / self.tauspike = (self.mem >= self.threshold).float()self.mem = self.mem * (1 - spike)  # 重置return spikeclass SNNDenoiser(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv2d(1, 16, 3, padding=1)self.lif1 = LIFNeuron()self.conv2 = nn.Conv2d(16, 1, 3, padding=1)def forward(self, x):x = self.conv1(x)x = self.lif1(x)return self.conv2(x)

9.3.2 蚁群优化去噪
模拟蚂蚁信息素标记机制,优先处理高梯度区域:

  1. 信息素更新规则
    [ \Delta \tau_{ij} = \frac{Q}{|I_i - I_j|} ]
    其中 ( Q ) 为信息素强度常数。
  2. 路径选择概率
    [ p_{ij} = \frac{\tau_{ij}^\alpha \eta_{ij}^\beta}{\sum \tau_{ik}^\alpha \eta_{ik}^\beta} ]
    ( \eta_{ij} ) 为启发式因子(如梯度差)。

请添加图片描述


9.4 实验对比与结果分析

9.4.1 量子去噪实验

  • 平台:IBM Quantum Lab(5量子比特处理器)
  • 数据集:量子态编码的4x4灰度图像
  • 结果
    方法保真度(%)运行时间(s)
    QVDC92.315.2
    经典VGG88.70.8

9.4.2 生物启发算法实验

  • 数据集:BSD68(添加动态高斯噪声)
  • 结果
    方法PSNR (dB)能耗(J)
    SNN33.50.12
    CNN34.10.25
    蚁群优化31.81.5

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词