当前位置: 首页 > news >正文

U-Net 的输入与输出:通用场景与扩散模型场景解析

U-Net 是一种 “编码器 - 解码器 + 跳跃连接” 的对称网络结构,最初为医学图像分割设计,后来因擅长 “精准捕捉空间细节” 被扩散模型(如 Stable Diffusion)选为核心的 “噪声预测网络”。其输入输出并非固定,而是随任务场景变化,核心差异体现在 “通用任务” 与 “扩散模型任务” 中。

一、通用场景下的 U-Net(以图像分割为例)

通用 U-Net 的核心目标是 “对输入图像做像素级预测”,典型场景如医学图像分割(CT/MRI 图像的器官分割)、自然图像语义分割。

1. 输入:待处理的图像张量

输入是单模态或多模态的图像数据,形状通常表示为 [B, C, H, W],各维度含义:

  • B:批量大小(Batch Size),即一次输入的图像数量(如训练时 B=16,推理时 B=1);

  • C:通道数(Channels),对应图像的模态或色彩维度:

    • 灰度图像(如 CT):C=1;

    • 彩色图像(RGB):C=3;

    • 多模态医学图像(如 CT+MRI 融合):C=2 或更多;

  • H/W:图像的高度和宽度(需为 2 的整数次幂,如 256×256、512×512,因 U-Net 编码器需多次下采样)。

示例:输入一张 512×512 的脑部 MRI 灰度图像,输入张量形状为 [1, 1, 512, 512](B=1,C=1,H=512,W=512)。

2. 输出:与输入同尺寸的 “像素级预测图”

输出是与输入图像尺寸完全一致的张量,形状为 [B, K, H, W],核心是对每个像素做 “类别归属” 预测:

  • K:预测的类别数(如分割 “脑灰质、脑白质、脑脊液”3 类,K=3);

  • 每个像素的输出值:通过 Softmax 激活后,对应 “该像素属于某一类” 的概率(如某像素输出为 [0.02, 0.95, 0.03],表示 95% 概率属于 “脑白质”)。

示例:对上述 MRI 图像做 3 类分割,输出张量形状为 [1, 3, 512, 512],每个 512×512 的特征图对应一类的概率分布。

二、扩散模型场景下的 U-Net(核心:噪声预测)

扩散模型中的 U-Net 是 “定制化版本”,核心目标从 “分割” 变为 “预测带噪数据中的噪声”,因此输入输出与通用场景差异显著,且需结合扩散模型的 “时间步” 和 “条件信息”。

1. 输入:多组件融合的 “带噪数据 + 引导信息”

扩散模型的 U-Net 输入并非单一图像,而是 **“带噪数据 + 时间步嵌入 + 条件信息” 的融合组合 **,最终输入到编码器的是 “融合后的特征张量”,各组件细节如下:

(1)核心输入:带噪数据 xtx_txt
  • 本质:扩散模型正向过程中,第 t 步的带噪数据(如带噪图像),是 U-Net 的 “基础数据输入”;

  • 形状:与最终生成的目标数据一致,如生成 512×512 彩色图像时,xtx_txt 形状为 [B, 3, 512, 512](B = 批量,C=3=RGB 通道,H/W=512);

  • 作用:提供 “当前需要去噪的数据载体”,U-Net 需从其中提取噪声特征。

(2)必需输入:时间步嵌入(Time Embedding)
  • 本质:将 “当前去噪步数 t”(如从 1000 递减到 1 的整数)转化为 “可与图像特征融合的向量”;

  • 处理逻辑:

  1. 先将 t 通过 “正弦位置编码”(Sinusoidal Embedding)转化为高维向量(如维度 256);

  2. 再通过 2 层全连接层映射到 “与 U-Net 编码器第一层输出特征同维度” 的向量(如特征图维度为 128,则映射为 128 维);

  3. 最后通过 “广播机制” 将向量扩展为与特征图同形状(如 [B, 128, 512, 512]),与图像特征相加融合;

  • 作用:让模型知道 “当前处于去噪的哪一步”—— 早期步(t 大)需去除大量噪声(优化轮廓),后期步(t 小)需精细去噪(优化纹理)。
(3)可选但关键:条件信息嵌入(Conditional Embedding)
  • 本质:引导生成方向的 “指令载体”,对应前文提到的 “文本提示、类别标签、图像特征” 等;

  • 常见类型与处理:

    • 文本提示:通过 CLIP 模型将文本转化为 768 维的 “文本嵌入向量”,再通过全连接层映射到与时间步嵌入同维度(如 128 维),与特征图相加 / 拼接;

    • 类别标签:通过 “独热编码 + 全连接层” 转化为同维度向量,再融合;

    • 图像特征(如图像修复):直接提取参考图像的特征图,与xtx_txt的特征图拼接;

  • 作用:让模型在预测噪声时 “带上约束”(如 “预测的噪声要能引导生成‘猫’的特征”),实现可控生成。

最终输入融合示例

生成一张 512×512 彩色图像,文本提示为 “红色玫瑰”:

  • xtx_txt 形状:[1, 3, 512, 512]

  • 时间步嵌入:t=500 → 编码后映射为 128 维 → 扩展为 [1, 128, 512, 512]

  • 文本嵌入:“红色玫瑰”→ CLIP 编码(768 维)→ 映射为 128 维 → 扩展为 [1, 128, 512, 512]

  • 融合后特征:xtx_txt 先通过卷积层降维到 128 通道([1, 128, 512, 512]),再与时间步嵌入、文本嵌入相加,得到最终输入编码器的特征张量([1, 128, 512, 512])。

2. 输出:与带噪数据同尺寸的 “噪声预测图”

扩散模型 U-Net 的输出目标是 “预测带噪数据xtx_txt中包含的真实噪声ε\varepsilonε”,因此输出特征具有以下特点:

  • 形状:与输入的带噪数据xtx_txt完全一致,即 [B, C, H, W]

    • 示例:若xtx_txt[1, 3, 512, 512]的彩色带噪图像,输出也是[1, 3, 512, 512]的张量;
  • 含义:输出张量的每个元素,对应xtx_txt中 “同一位置、同一通道” 的噪声值(无需激活函数,直接输出实数,因噪声是连续值);

  • 与前文的关联:输出的噪声预测值ε^\hat{\varepsilon}ε^,正是反向扩散过程中 “计算xt−1x_{t-1}xt1” 的核心输入(对应公式 xt−1=1αt⋅(xt−1−αt1−αˉt⋅ε^)+σt⋅zx_{t-1} = \frac{1}{\sqrt{\alpha_t}} \cdot \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \cdot \hat{\varepsilon} \right) + \sigma_t \cdot zxt1=αt1(xt1αˉt1αtε^)+σtz)。

示例:对[1, 3, 512, 512]xtx_txt预测噪声,输出ε^\hat{\varepsilon}ε^的形状为[1, 3, 512, 512],每个元素对应xtx_txt中该像素的噪声大小(如某 RGB 像素的噪声预测为 [0.21, -0.15, 0.33])。

三、两类场景的核心差异对比

对比维度通用 U-Net(图像分割)扩散模型 U-Net(噪声预测)
输入组成单一图像张量带噪数据xtx_txt+ 时间步嵌入 + 条件嵌入
输入核心目的提供 “待分割的图像内容”提供 “待去噪的数据 + 去噪引导信息”
输出形状[B,K,H,W][B, K, H, W][B,K,H,W](K = 类别数)[B,C,H,W][B, C, H, W][B,C,H,W](与xtx_txt一致)
输出含义像素级类别概率分布像素级噪声预测值
激活函数输出层用 Softmax(概率归一化)无激活函数(直接输出连续噪声)

四、关键总结

  1. 通用 U-Net 是 “单输入 - 单输出” 的像素级预测网络,输入为图像,输出为分割图;

  2. 扩散模型 U-Net 是 “多输入 - 单输出” 的噪声预测网络,输入需融合 “带噪数据、时间步、条件信息”,输出为与带噪数据同尺寸的噪声图;

  3. 两者的核心差异源于任务目标:分割是 “归类像素”,而扩散模型是 “预测噪声”—— 这也解释了为何扩散模型要对 U-Net 做 “时间步嵌入、条件融合” 的定制化改造。

结合前文的扩散模型训练逻辑:正是因为 U-Net 能精准预测 “条件约束下的噪声”,反向去噪过程才能从纯噪声中生成符合指令的逼真内容(如图像、文本)。

http://www.dtcms.com/a/564653.html

相关文章:

  • 李宏毅机器学习笔记39
  • 【代码随想录算法训练营——Day57(Day56周日休息)】图论——53.寻宝
  • PPT+配音生成带旁白的PPT演示视频
  • abp vnext cli无法正常使用,卡在 Checking extensions..,cli修改abp版本及.net版本
  • 萤石摄像头使用NAS作为存储
  • 2025江西省职业院校技能大赛(中职组)移动应用与开发竞赛样题
  • 建站公司哪家好在哪里推广比较好
  • 在 iOS 18 的照片应用,如何批量隐藏截屏?
  • OK3568 Android11 实现 App 独占隔离 CPU 核心完整指
  • 湖南网站建设公司 都来磐石网络泰安营销型网站建设公司
  • Oracle 如何计算 AWR 报告中的 Sessions 数量
  • JavaScript 流程控制语句
  • 走向专精:我的NLP特化算子开发之旅
  • 如何写prompt?prompt收集
  • 打工人日报#20251103
  • 技术文章大纲:设备如何“开口说话”?
  • CH585 高速 USB模拟 CDC串口应用示例
  • 2024/07 JLPT听力原文 问题四
  • 【AAOS】【源码分析】Car Location服务(二)- NMEA 数据
  • 如何建立国外网站搜索引擎优化岗位
  • 怎么建立网站网址在线做网站需要什么
  • https 可以访问 8866端口吗
  • python excel转为jsonl 格式 和 jsonl格式转为excel
  • docker中使用SSL证书实现前后端Https
  • IDE/编码代理架构与 Cursor 相关研究(汇总)
  • Multi-Stride Predictive RNG:革命性的可控随机数生成算法
  • Let’s Encrypt 证书申请与多服务器 HTTPS 配置指南
  • 艺术名画网站怎么建设多姿wordpress
  • R 绘图 - 散点图
  • 使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错: