DiffJSCC
Diffusion-Aided Joint Source Channel Coding For High Realism Wireless Image Transmission(Yang, Liu, Wang, Kim)提出了 DiffJSCC:一个把 Deep JSCC 初始重建 和 Stable Diffusion 条件生成 结合起来的无线图像传输框架。
传统 DeepJSCC 能避免 JPEG/BPG + LDPC 等分离式系统在低 SNR 下的 cliff effect,但它通常用 MSE、SSIM、MS-SSIM 优化,低码率下容易输出模糊图像。DiffJSCC 的出发点是 perception-distortion trade-off:像素保真和感知真实度不是同一个目标。
论文链接:arXiv:2404.17736;代码:mingyuyng/DiffJSCC。
| 术语 | 含义 | 类比/例子 |
|---|---|---|
| JSCC(联合信源信道编码) | 把图像压缩和信道纠错合并成一个端到端系统 | 传统方式像先打包再贴快递单,JSCC 像直接在包裹上写地址 |
| Deep JSCC | 用神经网络实现 JSCC,编码器把图像直接映射为复数信道符号 | 编码器是一个“会抗噪的压缩器” |
| 复数信道符号 | 无线物理层的传输单位,每个符号是 I/Q 两路信号的数学表示 $y=a+jb$ | 就像在二维平面上发一个点 $(a,b)$,复数只是方便的写法 |
| CSI(信道状态信息) | 描述当前信道条件,包括 SNR $\gamma$ 和信道增益 $h$ | 就像知道当前路况(堵车程度),可以据此调整行驶策略 |
| SNR $\gamma$ | 信噪比,信号功率与噪声功率的比值 | SNR 高 = 安静房间说话;SNR 低 = 演唱会现场说话 |
| CBR $\rho$ | Channel Bandwidth Ratio,每个像素平均消耗多少信道符号 | $\rho$ 越小,压缩越激进,传输越快但重建越难 |
| Cliff Effect(悬崖效应) | 传统系统 SNR 低于阈值后,质量断崖式下降 | 就像考试 60 分及格,59 分和 1 分的效果一样差 |
| MSE / PSNR | 像素级失真/保真度指标 | PSNR 高 = 每个像素都接近原图,但可能整体看起来模糊 |
| LPIPS / FID | 感知质量指标,衡量“看起来真不真” | LPIPS 低 = 人眼觉得像;FID 低 = 生成图像分布接近真实分布 |
| Stable Diffusion | Latent Diffusion Model,在 VAE latent 空间中做扩散去噪的生成模型 | 就像一个“会画画的去噪器”:从纯噪声开始,逐步去噪出清晰图像 |
| ControlNet | 给预训练扩散 UNet 增加可训练控制分支的架构 | 就像给画家一个“参考图”,画家在参考图的约束下自由创作 |
| Intermediate Guidance(中间引导) | 在扩散去噪过程中,把中间估计拉向初始重建 | $\lambda$ 越大,画家越忠实于参考图;$\lambda=0$,画家完全自由发挥 |
传统无线图像传输一般是两段式:先用 JPEG/BPG 压缩,再用 LDPC/Polar 等信道编码纠错。它的问题是压缩码流对 bit error 极其敏感,一旦信道编码无法完全纠错,图像质量会断崖式下降。
DeepJSCC 用神经网络自编码器直接把图像映射到复数信道符号,把压缩和抗噪声合并成一个端到端学习问题。后续工作扩展出反馈、OFDM、MIMO、Swin Transformer、adaptive rate control 等方向。
但这些方法大多仍以 MSE/PSNR/MS-SSIM 为主目标。低码率下,MSE 最安全的输出常常是“平均化”的模糊图。GAN-JSCC 试图用 PatchGAN 改善纹理,但 GAN 在信道条件变化下训练不稳。Yilmaz et al. 的 zero-shot diffusion JSCC 用 DDNM 后处理 JSCC 初始重建,但条件单一,当初始重建严重失真时约束不足。
| 路线 | 生成先验 | 条件来源 | 优点 | 问题 |
|---|---|---|---|---|
| DeepJSCC | 无 | 接收符号 | 抗噪声,无 cliff effect | 低码率下模糊 |
| DeepJSCC-adv | GAN | 图像特征 | 纹理更锐 | 训练不稳,FID 改善有限 |
| Yilmaz et al. | DDNM diffusion | 初始重建 | zero-shot 简洁 | 条件单一 |
| DiffJSCC | Stable Diffusion | 空间 + 文本 + CSI | 真实感强,下游语义更好 | 推理重,可能 hallucinate |
DiffJSCC 的 pipeline 很清晰:
- 发送端用 JSCC encoder 把图像编码为复数信道符号。
- 符号经过 AWGN 或 Rayleigh fading 信道。
- 接收端用 JSCC decoder 得到初始重建图像 \(\hat{x}\)。
- 从 \(\hat{x}\) 提取空间特征 \(f_v\) 和文本特征 \(f_t\)。
- 把 \(f_v,f_t,h,\gamma\) 组成条件集合,控制 Stable Diffusion 去噪生成最终图像。
关键点:扩散模型不是直接处理接收符号,也不是从加噪原图恢复。推理时它从纯高斯 latent 噪声开始采样,JSCC 初始重建只是作为 ControlNet 的 spatial hint 和 optional guidance target。
输入图像为 \(x\in\mathbb{R}^{C\times H\times W}\),JSCC encoder \(E_c\) 生成 \(K\) 个复数信道符号。传输率定义为:
发送符号需要满足平均功率约束:
信道模型为:
其中 AWGN 下 \(h=1\),Rayleigh fading 下 \(h\) 是复数随机增益。SNR 为:
接收端先均衡:
然后解码:
第一阶段仍用 MSE 训练:
DiffJSCC 不只把初始图像作为条件,而是构造一个多模态条件集合:
空间条件来自 Stable Diffusion 的 VAE encoder:
它提供布局、低频结构和物体位置,是 fidelity anchor。
文本条件由 BLIP2 对初始重建生成 caption,再经 CLIP text encoder 编码:
即使 \(\hat{x}\) 模糊,caption 往往还能抓住 lighthouse、house、parrot 等关键词,帮助扩散模型恢复物体级语义。
信道条件包括 SNR \(\gamma\) 和 channel gain \(h\)。它们告诉 denoiser 当前初始重建有多可信。低 SNR 时,模型应更多依赖生成先验和文本语义;高 SNR 时,可以更相信 \(\hat{x}\) 的细节。
标准 latent diffusion 的前向加噪为:
标准 LDM 噪声预测损失是:
DiffJSCC 把条件 \(c\) 换成多模态信道条件 \(\bar{c}\):
实现上,论文冻结 Stable Diffusion 2.1-base 的主 UNet,训练一个 ControlNet 风格的控制模块。控制模块把当前 noisy latent \(z_t\) 和空间特征 \(f_v\) 拼接,把 SNR embedding 加到 diffusion time embedding 中,并把文本特征 \(f_t\) 作为 cross-attention 条件。
扩散模型可能生成“看起来真实但不是原图”的内容。为降低内容漂移,论文加入可选 intermediate guidance。先根据当前 \(z_t\) 估计 clean latent:
再把它向空间条件 \(f_v\) 拉近:
当 \(\lambda=0\) 时,模型自由生成,感知质量通常最好;当 \(\lambda\) 增大时,输出更贴近 JSCC 初始重建,PSNR/MS-SSIM 通常上升,但 LPIPS/FID 可能变差。CelebAHQ 实验显示,在存在 domain gap 时,适当增大 \(\lambda\) 可以抑制 artifact。
代码已下载到本地:~/Org/perturbed-transmission/repos/DiffJSCC。核心文件如下:
| 文件 | 对应模块 | 作用 |
|---|---|---|
model/deepjscc_cnn.py | JSCC encoder/decoder | CNN 版 JSCC,含复数信道、功率归一化、AWGN/Rayleigh |
model/deepjscc_swin.py | SwinJSCC | Swin 版初始重建模型 |
model/cldm.py | ControlLDM / ControlNet | 核心条件扩散实现 |
model/cond_fn.py | Intermediate guidance | MSEGuidance,采样时拉近初始重建 |
model/spaced_sampler.py | 采样器 | 把 1000-step diffusion 压缩到指定 steps |
inference_cldm.py | 推理入口 | 串联 JSCC → BLIP2 → diffusion → metric |
推理流程:输入图像先 resize 到 512 并 pad 到 64 的倍数;preprocess_model 固定 SNR 后执行 encode → channel simulation → decode 得到 img_init;BLIP2 从 img_init 生成 caption;CLIP 得到文本条件;SpacedSampler 从纯高斯 latent 开始采样;最后用 wavelet/adain 做颜色校正,再 crop/resize 回原图尺寸。
.cuda() 调用,CPU/MPS 复现需要改。| 用途 | 数据集 | 规模 | 尺寸 |
|---|---|---|---|
| 通用图像训练 | OpenImages | 约 300,000 张 | 随机 crop 256×256 |
| 通用图像测试 | Kodak | 24 张 | 768×512 |
| 语义分割测试 | ADE20K val | 2000 张 | 原文未统一说明 |
| 人脸训练 | CelebAHQ | 27,000 张 | 512×512 |
| 人脸测试 | CelebAHQ | 3,000 张 | 512×512 |
JSCC 第一阶段使用 Adam,初始学习率 \(10^{-3}\),余弦退火到 \(10^{-5}\),训练 100,000 iterations;通用图像 batch size 32,人脸 batch size 16。Control module 基于 Stable Diffusion 2.1-base,学习率 \(10^{-4}\),训练 25,000 iterations。论文称 control module batch size 16,但仓库 CLDM_OpenImage_train.yaml 中为 8,复现时需要核对。
通用图像 SNR 在 [0,14] dB 中采样;人脸场景论文描述为 [-5,5] dB。推理通常使用 50-step spaced DDPM 作为效率和质量的折中。
论文使用 PSNR、MS-SSIM 衡量失真,用 LPIPS、FID 衡量感知质量,用 mIoU 衡量语义分割下游任务。
| 场景 | 结果 | 含义 |
|---|---|---|
| Kodak, AWGN 1dB, ρ=1/384 | DiffJSCC FID=117.9;BPG+Capacity FID=165.4 且 ρ=0.0377 | 14× 更少符号,FID 仍好 28.7% |
| Kodak, ρ=0.0026 | FID 相比 DeepJSCC 提升 64.3%,相比 BPG+Capacity 提升 70.7% | 极低码率下生成先验优势明显 |
| AWGN, ρ=1/384 | LPIPS 提升 41.4%,FID 提升 56.7% | 相比标准 DeepJSCC |
| AWGN, ρ=1/96 | LPIPS 提升 43%,FID 提升 53.2% | 高一点码率仍有效 |
| ADE20K, ρ=1/384 | FID 降低 69.2%,mIoU 提升 52.5% | 不只是好看,下游语义也更好 |
| CelebAHQ, λ=50, ρ=1/768 | LPIPS 相比 InverseJSCC 提升 15.9% | 人脸极低码率有效 |
值得注意的是,DiffJSCC 不一定提升 PSNR/MS-SSIM。它的目标是更好的 perceptual quality 和 semantic utility,而非逐像素复原。
消融实验显示,仅用空间特征 \(f_v\) 效果有限。加入 SNR 信息后,平均 FID 改善约 2%,低 SNR 时更明显。再加入文本 prompt \(f_t\) 后,FID 额外改善 4.3%。如果 caption 来自无失真原图,提升更大,说明文本条件有较高上限。
采样步数方面,25 → 50 steps 提升明显,50 → 100 steps 收益下降。SNR=13dB 时,25 → 50 steps 带来 LPIPS 0.02、FID 6.5 的改善;50 → 100 steps 只带来 LPIPS 0.004、FID 2.5 的改善。
DiffJSCC 对电缆缺陷图像传输很有启发:工业现场常有低码率、强干扰、边缘设备能耗受限等问题,而 DiffJSCC 把复杂计算放在接收端,发送端几乎不增加负担。
但不能直接照搬。自然图像中“好看”的纹理补全,在电缆缺陷场景中可能是危险的。裂纹、腐蚀、放电痕迹往往是细小异常,Stable Diffusion 的自然图像先验可能把它们当噪声修掉,或者生成并不存在的伪缺陷。
对于电缆缺陷传输,核心目标不是“生成最自然的电缆图像”,而是“在强干扰信道下保留任务关键异常”。这正是 DiffJSCC 后续可拓展的研究空白。
DiffJSCC 的真正意义在于:它把无线图像传输的接收端定义为一个 posterior generative decoder。信道传来的不再是必须逐像素还原的压缩码流,而是约束大规模视觉先验的条件。接收端根据粗重建、文本语义和信道状态,从自然图像先验中采样一个语义一致、视觉真实的图像。
这代表了 Deep JSCC、语义通信、生成式压缩和扩散模型的一次汇合。它非常适合低码率、低 SNR、语义任务优先的场景;但在医学、工业缺陷、遥感异常等要求事实细节保真的任务中,需要额外的任务约束来防止 hallucination。