BBDM(Brownian Bridge Diffusion Models)学习笔记

1. Prompt

是否可以请您参考PyTorch的文档格式和文档风格,使用Markdown格式为
`model/BrownianBridge/base/modules/encoders/modules.py` 文件编写
一段相应的文档说明呢?

2. Config

2.1 LBBDM: Latent BBDM [readme]

2.2 Attributes

1.2.1 runner: str

指定使用的Runner类的名称。
Runner功能:

  • 模型的构建与初始化
  • 数据集的加载与预处理
  • 优化器和学习率调度器的配置
  • 训练/验证/测试/采样循环逻辑
  • 日志记录与检查点保存
注册名称:@Registers.runners.register_with_name

可用的 Runner 包括:

  • BBDMRunner:用于 Brownian Bridge Diffusion Model(BBDM)及 Latent BBDM

3. Function

3.1 calculate_psnr

calculate_psnr(img1, img2, border=0)

计算两张图像之间的峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)。

该函数遵循通用实现:对于彩色图像,会先将其从RGB转换到YCbCr色彩空间,然后仅在亮度(Y)通道上计算PSNR。对于灰度图像,则直接进行计算。

PSNR 的计算公式如下:
PSNR = 20 ⋅ log ⁡ 10 ( MAX I MSE ) \text{PSNR} = 20 \cdot \log_{10} \left( \frac{\text{MAX}_I}{\sqrt{\text{MSE}}} \right) PSNR=20log10(MSE MAXI)

其中 MAX I \text{MAX}_I MAXI是图像数据类型的最大值(在此函数中为 255),MSE 是两张图像之间的均方误差(Mean Squared Error)。

参数(Parameters)

  • img1 (numpy.ndarray): 第一张输入图像。应为一个 H x W (灰度) 或 H x W x C (彩色) 的 NumPy 数组,数据类型为 uint8,数值范围在 [0, 255]
  • img2 (numpy.ndarray): 第二张输入图像。必须与 img1 具有相同的维度和数据类型。
  • border (int, 可选): 在计算 PSNR 之前,从图像四周裁剪掉的像素宽度。默认值为 0,即不裁剪。

返回(Returns)

  • float: 计算得到的 PSNR 值。如果两张图像完全相同(MSE为0),则返回 float('inf')

异常(Raises)

  • ValueError: 如果 img1img2 的尺寸不完全相同。

3.2 calculate_ssim

calculate_ssim(img1, img2, border=0)

计算两张图像之间的结构相似性指数(Structural Similarity Index Measure, SSIM)。

与逐像素比较差异的 PSNR 不同,SSIM 是一种更先进的、更符合人类视觉感知系统的图像质量评估指标。它从三个维度综合比较两张图像的相似度:

  • 亮度 (Luminance): 比较图像的平均亮度是否相似。
  • 对比度 (Contrast): 比较图像的对比度(或标准差)是否相似。
  • 结构 (Structure): 比较图像的结构信息(或协方差)是否相似。

对于彩色图像,该函数会先将其从RGB转换到YCbCr色彩空间,然后仅在亮度(Y)通道上计算 SSIM 值。

参数(Parameters)

  • img1 (numpy.ndarray): 第一张输入图像(通常被视为“真实”或“参考”图像)。应为一个 H x W (灰度) 或 H x W x C (彩色) 的 NumPy 数组,数据类型为 uint8,数值范围在 [0, 255]
  • img2 (numpy.ndarray): 第二张输入图像(通常被视为“预测”或“失真”图像)。必须与 img1 具有相同的维度和数据类型。
  • border (int, 可选): 在计算 SSIM 之前,从图像四周裁剪掉的像素宽度。这有助于忽略因卷积等操作产生的边缘效应。默认值为 0

返回(Returns)

  • float: 计算得到的 SSIM 值。这个值通常在 [0, 1] 的范围内。值越接近 1,表示两张图像越相似。如果两张图像完全相同,则返回 1.0

2. model/BrownianBridge/base/modules/encoders/modules.py

此文件提供 BrownianBridge 模型中常用的编码器组件,包括抽象编码器基类、类别嵌入、基于 Transformer 的文本嵌入、BERT 分词器/嵌入器,以及SpatialRescaler等;

类概览

  • AbstractEncoder – 编码器抽象基类
  • ClassEmbedder – 类标签嵌入器
  • TransformerEmbedder – 基于 Transformer 的嵌入器
  • BERTTokenizer – 使用预训练 BERT 分词器
  • BERTEmbedder – BERT + Transformer 嵌入器
  • SpatialRescaler – 空间维度重缩放器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值