解释一下:文章当中的复值就是复数域的意思
摘要
我们提出了一种用于无线图像传输的联合源和信道编码(JSCC)技术,该技术不依赖于显式码进行压缩或错误矫正,它直接将图像像素映射到复数信道输入符号。我们通过两个CNN得到编码器和解码器的表示函数,二者可以看做一个自动编码器,进行联合训练。中间有一个不可训练的层,表示有噪声的通信信道。实验结果表明,在存在加性高斯白噪声(AWGN)的情况下,基于低信噪比的Deep-JSCC方案优于JPEG和JPEG2000。此外,Deep-JSCC不受“悬崖效应”的影响,当信道 SNR 随训练时假设的 SNR 值变化时,它的性能会优雅地下降。在慢速瑞利衰落信道的情况下,Deep-JSCC 可学习抗噪编码表示,并在所有信噪比和信道带宽值上显著优于基于分离的数字通信。
关键词:联合源-信道编码,深度神经网络,图像通信
原文链接:Deep Joint Source-Channel Coding for Wireless Image Transmission
代码链接(GitHub):Pytorch、Tensorflow和keras
Ⅰ、INTRODUCTION
现代通信系统采用两步编码过程来传输图像/视频数据(插图见图1(a)):(i)首先使用源编码算法压缩图像/视频数据,以消除固有的冗余,并减少传输的信息量;(ii)首先对压缩的比特流用纠错码进行编码,使弹性传输能够防止错误,然后进行调制。
香农分离定理证明了这两步在无限长源和信道块的渐近极限下(不懂),在理论上是最优的,然而在实际应用中例如物联网、自动驾驶、触觉互联网等,都需要在极端延迟、带宽和/或能量限制下传输图像/视频数据,不能采用需要长时间处理的编码方法,在这些情况下联合信源信道编码优于单独的模块优化。
我们提出了一种无线图像传输的JSCC技术,它直接将图像像素映射到复值信道。我们利用自动编码器架构设计了一个端到端的通信系统,编码器和解码器由两个卷积神经网络组成,通信信道被纳入神经网络(NN)结构,作为不可训练层,因此得名Deep-JSCC。本文考虑了加性高斯白噪声(AWGN)信道和慢瑞利衰落信道两种信道模型,因为它们在表示现实信道条件方面的广泛采用。所提出的解决方案很容易扩展到其他信道模型,只要它们可以表示为具有可微传递函数的不可训练信道层。
与传统的压缩算法相比,基于DL的有损压缩方法具有深度的体系结构,能够从训练数据中提取复杂的特征,而且它们的模型参数可以通过反向传播在大数据集上进行有效的训练。虽然常见的压缩算法,如JPEG,将相同的处理管道应用于所有类型的图像(例如,JPEG中的DCT变换、量化和熵编码),但基于dl的图像压缩算法从一个大型训练数据集学习统计特征,并相应地优化压缩算法,而不明确指定变换或代码。
与此同时,研究人员还利用 DL 的潜力,设计出新型高效的通信编码和调制技术。 特别是自动编码器架构与数字通信系统之间的相似性,促使人们在利用自动编码器架构建立端到端通信系统模型的方向上开展了大量研究工作。 此类设计的一些实例包括现有信道编码的解码器设计 、盲信道均衡 、SISO 和 MIMO系统的物理层信号表示学习、OFDM 系统 、文本信息的 JSCC 和模拟存储的 MNIST 图像的 JSCC 。
在这项工作中,我们利用DL方法提出了一种新的JSCC算法,在无线信道上进行图像传输。我们考虑了不随时间变化和衰落的AWGN信道,并将我们的算法的性能与最先进的压缩算法(特别是JPEG和JPEG2000)与容量实现信道码的结合进行了比较。我们通过实验表明,我们的解决方案在低信噪比(SNR)条件下和有限的信道带宽下,在不随时间变化的AWGN信道上取得了优越的性能,即使分离方案被假定在信道容量下运行,尽管块长度较短。虽然我们主要关注峰值信噪比(PSNR)作为性能度量,但我们表明,根据结构相似性指数(SSIM)的测量,Deep-JSCC可以提供更好的结果,更好地捕捉重建图像的感知视觉质量。我们证明了我们的方法对信道条件的变化具有弹性,并不会出现突然地质量下降。事实上,我们所提出的深度JSCC方案通过学习对信道质量波动具有鲁棒性的编码表示,在慢瑞利衰落信道上取得了显著的性能,即使在高信噪比和大信道带宽的情况下,也优于基于分离的数字传输方案。
虽然Deep-JSCC算法的训练可能相当耗时,但训练好后编解码任务执行就会变得非常快,我们认为这可能是实现许多低延迟程序的关键,这些应用程序需要在无线边缘传输高数据速率内容,例如自动驾驶汽车或无人机的图像/视频传输,或新兴的AR/VR技术。随着专门为CNNs 优化的硬件加速器的快速发展,我们相信深度JSCC很快就可以直接部署在移动无线设备上。
文章的结构如下:
- 第二节:系统模型,一些关于传统无线图像传输系统及其局限性的背景;
- 第三节:Deep-JSCC的架构
- 第四节:评估所提出的Deep-JSCC方案的性能,并于传统的单独JSCC方案在固定和衰落AWGN信道上进行比较
- 第五节:总结
Ⅱ、BACKGROUND AND PROBLEM FORMULATION
主要考虑点对点无线通信信道上的图像传输。
发射机将输入图像
x
∈
R
n
x∈\mathbb R^n
x∈Rn映射到一个复值信道输入符号
z
∈
C
k
z∈\mathbb C^k
z∈Ck的向量。根据JSCC文献,我们将图像维数
n
n
n 称为源带宽,信道维数
k
k
k 称为信道带宽。我们通常有
k
<
n
k<n
k<n,这被称为带宽压缩。我们将把k/n的比率称为带宽压缩比。由于实际通信系统中的实际考虑,例如,有限的能量、干扰等,发射机的输出可能需要满足一定的功率约束,如峰值和/或平均功率约束。然后,输出信号
z
z
z 通过信道进行传输,这由于噪声、衰落、干扰或其他信道损伤而降低了信号质量。通信信道
z
^
∈
C
k
\widehat z∈\mathbb C^k
z
∈Ck的损坏输出被输入到接收机,从而产生原始输入图像的近似重建
x
^
∈
R
n
\widehat x∈\mathbb R^n
x
∈Rn。
在常规的图像传输系统中,如图(a)所示,发射机连续执行三个独立的步骤,以产生通过信道传输的信号z,首先使用源编码器
f
s
f_s
fs去除源冗余(例如JPEG、JPEG2000、WebP)。然后将
f
c
f_c
fc(例如LDPC、Turbo码)应用于压缩比特流,以保护其面授由通信信道引入的损害。最后用调制方案
f
m
f_m
fm(例如BPSK、16-QAM)对编码的比特流进行调制,该调制方案将比特映射到复值样本,然后,调制的符号由IQ数字信号组件通过通信链路传输。
解码器以相反的顺序进行这些操作,它首先使用与调制器
f
m
f_m
fm相匹配的解调方案
g
m
g_m
gm将复值信道输出样本解调并映射到一个比特序列(或对数似然比)。然后用信道解码算法
g
c
g_c
gc对信道码进行解码,最后通过应用适当的解码算法
g
s
g_s
gs,从(可能损坏的)压缩位流中提供传输图像的近似重建。
上述编码方式在图像传输系统中被广泛应用,但当信道条件与已优化的系统不同时,其性能可能会受到严重影响。虽然源码和信道码可以单独设计,但它们的速率共同针对特定信道质量选择,即,假设可以使用容量实现信道码,则选择压缩率以恰好产生能够通过信道可靠传输的数据量。但是,当信道条件比所选择码率的信道条件差时,错误概率迅速增加,接收方无法以高概率接收到正确的信道码字。这也导致了源解码器的故障,从而导致了重建质量的显著降低。同样,单独的设计也不能从改进的信道条件中获益;也就是说,一旦源码率和信道编码率固定,无论信道有多好,只要信道容量高于目标速率,重构质量就会保持不变。这两个特征被称为“悬崖效应”。
在本文中,我们采用了一种完全不同的方法,并利用非编码传输的特性,直接将真实像素值映射到通过通信信道传输的复值样本上。我们的目标是设计一个JSCC方案直接将像素值映射到通道输入。
Ⅲ、DL-BASED JSCC
我们采取的是自动编码器架构,设计端到端的通信系统。
我们提出的Deep-JSCC方案如上图所示,该编码器通过函数
f
θ
:
R
n
→
C
k
f_\theta : \mathbb R^n \rightarrow \mathbb C^k
fθ:Rn→Ck将
n
n
n维输入图像
x
x
x映射到
k
k
k长的输入样本
z
z
z上(
z
z
z是复数域样本),该向量满足平均功率约束
1
k
E
[
z
∗
z
]
⩽
P
\frac{1}{k} \mathbb E[z^*z] \leqslant P
k1E[z∗z]⩽P
编码器CNN包括一系列卷积层,参数是参数ReLU(PReLU)激活函数和一个归一化层。卷积层提取图像特征,并结合形成通道输入样本,而非线性激活函数允许学习从源信号空间到编码信号空间的非线性映射。编码器最后一个卷积层的输出
z
~
∈
C
k
\widetilde z \in \mathbb C^k
z
∈Ck的归一化如下:
z
=
k
P
z
~
z
~
∗
z
~
z = \sqrt{kP}\frac{\widetilde z}{\sqrt{\widetilde z^* \widetilde z}}
z=kPz
∗z
z
z
~
∗
\widetilde z^*
z
∗是
z
~
\widetilde z
z
的共轭转置,是的信道输入
z
z
z满足平均发射功率约束
P
P
P,归一层的代码如下:(以keras中的代码为例)
class NormalizationNoise(Layer):
def __init__(self, snr_db_def = 20, P_def=1, name='NormalizationNoise', **kwargs):
self.snr_db = K.variable(snr_db_def, name='SNR_db')
self.P = K.variable(P_def, name='Power')
self.name = name
super(NormalizationNoise, self).__init__(**kwargs)
def call(self, z_tilta):
with tf.name_scope('Normalization_Layer'):
z_tilta = tf.dtypes.cast(z_tilta, dtype='complex128', name='ComplexCasting')+1j
#将 z_tilta 转换为复数类型 complex128。1j 是复数单位,表示添加一个虚部。
#这意味着 z_tilta 的每个元素现在都是一个复数,适用于处理信号或特征的频域表示。
lst = z_tilta.get_shape().as_list()
#这行代码获取 z_tilta 的形状,并将其转化为一个列表 lst。
#这个列表包含了张量在每个维度上的大小。
lst.pop(0)
#pop(0) 将移除列表中的第一个元素(batch_size)
k = np.prod(lst, dtype='float32')
#计算列表中所有维度的乘积。这个乘积表示信道的总体维度k,通常被视为信号的带宽或特征空间的维度。
#calculating conjugate transpose of z_tilta
z_conjugateT = tf.math.conj(tf.transpose(z_tilta, perm=[0,2,1,3], name='transpose'), name='z_ConjugateTrans')
#Square root of k and P
sqrt1 = tf.dtypes.cast(tf.math.sqrt(k*self.P, name='NormSqrt1'), dtype='complex128',name='ComplexCastingNorm')
sqrt2 = tf.math.sqrt(z_conjugateT*z_tilta, name='NormSqrt2')#Square root of z_tilta* and z_tilta.
div = tf.math.divide(z_tilta,sqrt2, name='NormDivision')
#calculating channel input
z = tf.math.multiply(sqrt1,div, name='Z')
编码操作之后,通过数字信号的IQ分量直接传输信道输入样本 z z z的实部和虚部, z z z通过通信信道发送,该通道对传输的符号引入随机损坏,用 η : C k → C k \eta : \mathbb C^k \rightarrow \mathbb C^k η:Ck→Ck表示。为了能够以端到端的方式优化整个神经网络体系,我们将通信系统建模为一系列不可训练的层,它们由传递函数 z ^ = η ( z ) \widehat z = \eta(z) z =η(z)表示。
我们考虑两种广泛使用的信道模型:(i)AWGN信道,和(ii)慢衰落信道。
高斯信道的传输函数为
η
n
(
z
)
=
z
+
n
\eta_n(z) = z+n
ηn(z)=z+n其中
n
∈
C
k
n\in \mathbb C^k
n∈Ck来自输入样本的独立同分布,即
n
∼
C
N
(
0
,
σ
2
I
k
)
n\thicksim \mathcal C\mathcal N(0 , \sigma^2\mathcal I_k)
n∼CN(0,σ2Ik),
σ
2
\sigma^2
σ2是平均噪声功率。对于慢衰落信道,我们采用了常用的瑞利慢衰落模型,传输函数用
η
h
(
z
)
=
h
z
\eta_h(z) = hz
ηh(z)=hz其中
h
∼
C
N
(
0
,
H
c
)
h\thicksim \mathcal C\mathcal N(0 , H_c)
h∼CN(0,Hc)是一个复杂的正规随机变量。信道衰落和高斯噪声的联合效应可以用传递函数来表示:
η
(
z
)
=
η
n
(
η
h
(
z
)
)
=
h
z
+
n
\eta(z) = \eta_n(\eta_h(z)) = hz+n
η(z)=ηn(ηh(z))=hz+n其他信道模型可以以类似的方式合并到端到端系统中,只要求信道传递函数是可微的,以便允许梯度计算和误差反向传播。添加加性高斯噪声的代码如下:
with tf.name_scope('AWGN_Layer'):
k=k.astype('float64')
#Converting SNR from db scale to linear scale
snr = 10**(self.snr_db/10.0)
snr = tf.dtypes.cast(snr, dtype='float64', name='Float32_64Cast')
########### Calculating signal power ###########
#calculate absolute value of input
abs_val = tf.math.abs(Z, name='abs_val')
#Compute Square of all values and after that perform summation
summation = tf.math.reduce_sum(tf.math.square(abs_val, name='sq_awgn'), name='Summation')
#Computing signal power, dividing summantion by total number of values/symbols in a signal.
sig_pwr = tf.math.divide(summation,k, name='Signal_Pwr')
#Computing Noise power by dividing signal power by SNR.
noise_pwr = tf.math.divide(sig_pwr,snr, name='Noise_Pwr')
#Computing sigma for noise by taking sqrt of noise power and divide by two because our system is complex.
noise_sigma = tf.math.sqrt(noise_pwr/2, name='Noise_Sigma')
#creating the complex normal distribution.
z_img = tf.math.imag(Z, name = 'Z_imag')
z_real = tf.math.real(Z, name = 'Z_real')
rand_dist = tf.random.normal(tf.shape(z_real), dtype=tf.dtypes.float64, name='RandNormalDist')
#Compute product of sigma and complex normal distribution
noise = tf.math.multiply(noise_sigma, rand_dist, name='Noise')
#adding the awgn noise to the signal, noisy signal: ẑ
z_cap_Imag = tf.math.add(z_img, noise, name='z_cap_Imag')
z_cap_Imag = tf.dtypes.cast(z_cap_Imag, dtype='float32', name='NoisySignal_Imag')
z_cap_Real = tf.math.add(z_real, noise, name='z_cap_Real')
z_cap_Real = tf.dtypes.cast(z_cap_Real, dtype='float32', name='NoisySignal_Real')
return z_cap_Real
该接收机包括一个联合的源-信道解码器。解码器使用函数
g
ϕ
:
C
k
→
R
n
g_\phi : \mathbb C^k \rightarrow \mathbb R^n
gϕ:Ck→Rn将损坏的复值信号
z
^
=
η
(
z
)
∈
C
k
\widehat z = \eta(z) \in \mathbb C^k
z
=η(z)∈Ck映射到原始输入
x
^
∈
R
n
\widehat x\in\mathbb R^n
x
∈Rn的估计,与编码器类似,解码器通过一系列转置卷积(具有非线性激活函数)来转换编码器执行的操作,以便将图像特征映射到原始传输图像的估计
x
^
\widehat x
x
。
输入图像和解码器产生的重构图像之间的平均失真为
(
θ
∗
,
ϕ
∗
)
=
arg
min
θ
,
ϕ
E
p
(
x
,
x
^
)
[
d
(
x
,
x
^
)
]
(\theta^*,\phi^*)=\arg \min_{\theta,\phi} \mathbb E_{p(x,\widehat x})[d(x,\widehat x)]
(θ∗,ϕ∗)=argθ,ϕminEp(x,x
)[d(x,x
)]其中
d
(
x
,
x
^
)
d(x,\widehat x)
d(x,x
)是一个给定的失真测试度量,
p
(
x
,
x
^
)
p(x,\widehat x)
p(x,x
)是原始图像和重建图像的联合概率分布,由于输入数据
p
(
x
)
p (x)
p(x)的真实分布通常是未知的,因此是等式中的预期失真也是未知的。因此,我们通过从一个可用的数据集进行采样来估计预期的失真。
Ⅳ、EVALUATION
如上图所示,我们使用编码器解码器的神经网络架构。在编码器上,归一化层之后是五个卷积层。由于输入数据的统计量在解码器处通常不知道,因此输入图像被最大像素值255归一化,产生在[0,1]范围内的像素值。我们实验中使用的超参数
F
、
K
F、K
F、K和
S
S
S的值如上图所示。PReLU激活函数应用于所有卷积层的输出。最后一个卷积层的输出,由
2
k
2k
2k个单位组成,然后是另一层标准化层,强制执行等式中指定的平均功率约束 。将归一化层的输出组合成
k
k
k个复值信道输入样本,形成编码的信号表示,并通过该信道进行传输。
解码器将
k
k
k个复值噪声信道输出样本的实部和虚部组合成
2
k
2k
2k个值,并输入转置卷积层,随后逐步将损坏的图像特征转换为对原始输入图像的估计,同时其上采样到正确的分辨率。解码器层的超参数与编码器层的相应值相一致。除最后一个外,解码器的所有转置卷积层的输出都通过一个PReLU激活函数,而最后一个转置卷积层的输出则采用一个s型非线性,以产生[0,1]范围内的值。最后,去化层将输出值乘以255,以生成[0 , 255]范围内的像素值。
实现代码如下:
############################### Buliding Encoder ##############################
''' Correspondance of different arguments w.r.t to literature: filters = K, kernel_size = FxF, strides = S'''
input_images = Input(shape=(32,32,3))
#P = Input(shape=(), name='Power')
#snr_db = Input(shape=(), name='SNR_DB')
#1st convolutional layer
conv1 = Conv2D(filters=16, kernel_size=(5,5), strides=2, padding='valid', kernel_initializer='he_normal')(input_images)
prelu1 = PReLU()(conv1)
#2nd convolutional layer
conv2 = Conv2D(filters=80, kernel_size=(5,5), strides=2, padding='valid', kernel_initializer='he_normal')(prelu1)
prelu2 = PReLU()(conv2)
#3rd convolutional layer
conv3 = Conv2D(filters=50, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(prelu2)
prelu3 = PReLU()(conv3)
#4th convolutional layer
conv4 = Conv2D(filters=40, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(prelu3)
prelu4 = PReLU()(conv4)
#5th convolutional layer
conv5 = Conv2D(filters=c, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(prelu4)
encoder = PReLU()(conv5)
real_prod = NormalizationNoise()(encoder)
############################### Building Decoder ##############################
#1st Deconvolutional layer
decoder = Conv2DTranspose(filters=40, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(real_prod )
decoder = PReLU()(decoder)
#2nd Deconvolutional layer
decoder = Conv2DTranspose(filters=50, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(decoder)
decoder = PReLU()(decoder)
#3rd Deconvolutional layer
decoder = Conv2DTranspose(filters=80, kernel_size=(5,5), strides=1, padding='same', kernel_initializer='he_normal')(decoder)
decoder = PReLU()(decoder)
#4th Deconvolutional layer
decoder = Conv2DTranspose(filters=16, kernel_size=(5,5), strides=2, padding='valid', kernel_initializer='he_normal')(decoder)
decoder = PReLU()(decoder)
#decoder_up = UpSampling2D((2,2))(decoder)
#5th Deconvolutional layer
decoder = Conv2DTranspose(filters=3, kernel_size=(5,5), strides=2, padding='valid', kernel_initializer='he_normal', activation ='sigmoid')(decoder)
#decoder = PReLU()(decoder)
decoder_up = UpSampling2D((2,2))(decoder)
decoder = Cropping2D(cropping=((13,13),(13,13)))(decoder_up)
我们使用Adam优化框架,我们的损失函数是原始解码器输出图像 x x x和重建图像 x ^ \widehat x x 之间的均方误差(MSE),具体公式如下: L = 1 N ∑ 1 = 1 N d ( x i , x ^ i ) \mathcal L=\frac{1}{N} \sum_{1=1}^N d(x_i,\widehat x_i) L=N11=1∑Nd(xi,x i)其中 d ( x i , x ^ i ) = 1 n ∥ x − x ^ ∥ 2 d(x_i,\widehat x_i)=\frac{1}{n}\parallel x-\widehat x\parallel^2 d(xi,x i)=n1∥x−x ∥2, N N N为样本数。为了实现不同的带宽压缩比 k / n k/n k/n,我们改变了编码器的最后一个卷积层中滤波器的数量 k k k。由于我们的架构是完全卷积的,所以它可以在任何分辨率的输入图像上进行训练和部署。
autoencoder = Model(input_images, decoder)
K.set_value(autoencoder.get_layer('normalization_noise').snr_db, snr)
autoencoder.compile(optimizer= Adam(learning_rate=0.0001), loss='mse', metrics=['accuracy'])
autoencoder.summary()
history = autoencoder.fit(x=x_train, y=x_train, batch_size=batch_size, epochs=nb_epoch, callbacks=[tb, checkpoint, ckpt], validation_data=(x_test,x_test))
深度JSCC算法的性能以及所有基准方案的性能都用PSNR进行量化。PSNR度量测量信号的最大可能功率与破坏信号的噪声功率之间的比率。PSNR的定义如下:
P
S
N
R
=
10
log
10
M
A
X
2
M
S
E
(
d
B
)
PSNR=10\log_{10}\frac{MAX^2}{MSE}(dB)
PSNR=10log10MSEMAX2(dB)其中
M
S
E
=
d
(
x
,
x
^
)
MSE=d(x,\widehat x)
MSE=d(x,x
)为参考图像和重建图像之间的均方误差,
M
A
X
MAX
MAX是图像像素的最大可能值。我们所有的实验都是在24位深度的RGB图像上进行的(每个颜色通道每像素8位),因此
M
A
X
=
2
8
−
1
=
255
MAX = 2^8−1 = 255
MAX=28−1=255。
信道信噪比定义为:
S
N
R
=
10
log
10
P
σ
2
(
d
B
)
SNR=10\log_{10}\frac{P}{\sigma ^2}(dB)
SNR=10log10σ2P(dB)表示编码信号的平均功率与平均噪声功率的比值,在不失一般性的情况下,我们将所有实验的平均信号功率设为P = 1。
A、CIFAR-10数据集评价
首先在CIFAR-10图像数据集上评估我们的Deep-JSCC方案,训练数据由50000张32×32的训练图像和所考虑的信道的随机实现组成。在来自CIFAR-10数据集的10000张测试图像上测试了该JSCC方案的性能,这些图像与用于训练的图像不同。我们首先将学习速率设置为
1
0
−
3
10^{-3}
10−3,经过500k次迭代后将其降低至
1
0
−
4
10^{-4}
10−4。我们使用64个样本的小批量大小,并训练我们的模型,直到测试集上的性能没有进一步提高。然而,我们想强调的是,我们不使用测试集图像来优化网络超参数。在性能评估期间,我们将每幅图像传输10次,以减轻通信信道引入的随机性的影响。
我们首先研究了在AWGN设置下的性能,即信道传递函数是
η
=
η
n
\eta=\eta_n
η=ηn,我们通过改变噪声方差
σ
2
\sigma^2
σ2来改变信噪比,并将所提出的深度JSCC算法与任何数字传输方案的上界进行了比较,该方案采用JPEG或JPEG2000进行源压缩。上界的计算是基于香农分离定理,该定理证明了在信道容量为C的离散无记忆信道上可靠通信的必要和必要条件是:
n
R
⩽
k
C
nR\leqslant kC
nR⩽kC上面的表达式定义了最大速率:
R
m
a
x
=
k
n
C
R_{max}=\frac{k}{n}C
Rmax=nkC对于容量为C的信道,其源可以以任意小的误差概率进行压缩和传输。因此,为了计算上界,我们首先使用等式计算每个源样本
R
m
a
x
R_{max}
Rmax,其中
C
=
log
2
(
1
+
S
N
R
)
C=\log_2(1+SNR)
C=log2(1+SNR)这是保证通过信道进行可靠传输的源压缩的最大速率。由于JPEG和JPEG2000不能以任意低比特率压缩图像数据,我们还计算最小比特率值Rmin,超过该值压缩会导致信息完全丢失,无法重建原始图像。如果对于给定的
n
,
k
n, k
n,k和
C
C
C,最小速率
R
m
i
n
R_{min}
Rmin超过最大允许速率
R
m
a
x
R_{max}
Rmax,我们假设图像不能可靠传输,每个颜色通道被重建为该通道所有像素的平均值。当
R
m
i
n
<
R
m
a
x
R_{min}<R_{max}
Rmin<Rmax,压缩图像的最大速率
R
R
R满足
R
≤
R
m
a
x
R \leq R_{max}
R≤Rmax,同样,JPEG 或 JPEG2000 压缩软件并不总能达到任意的目标比特率 Rmax,并测量参考图像和压缩图像之间的失真度,假设压缩后的比特流可以无差错传输。
需要注意的是,我们在计算边界时没有使用任何显式的实际信道编码和调制方案。以
R
m
a
x
R_{max}
Rmax速率压缩源,并假设以此速率无错误传输,隐含地表明需要使用信道码和调制方案的容量实现组合来实现可靠的传输。因此,任何采用实际信道编码方案和调制以及JPEG/JPEG2000压缩的数字传输方案的性能都将低于这个上限。
图3显示了所提出的Deep-JSCC算法在不同信噪比条件下的带宽压缩比
k
/
n
k/n
k/n的性能。将此性能与使用JPEG/JPEG2000进行压缩的任何数字方案的性能上限进行了比较。我们注意到,图中上界的阈值行为并不是由于“悬崖效应”。这些曲线最初的平坦部分是由于 JPEG 和 JPEG2000 在这一区域完全崩溃,即最大传输速率
R
m
a
x
R_{max}
Rmax 低于以最差质量压缩图像并在解码器上获得有意义的重构所需的最小每像素比特数
R
m
i
n
R_{min}
Rmin。
- 在非常糟糕的信道条件下(如 S N R = 0 d B SNR=0 dB SNR=0dB),采用 JPEG 或 JPEG2000 的数字方案会崩溃,而采用所提出的深层 JSCC 方案则能以相当好的性能进行传输。
- 在中高信噪比和有限信道带宽条件下,即 k / n ∈ [ 0.04 , 0.2 ] k/n ∈ [0.04, 0.2] k/n∈[0.04,0.2],即使假定信道带宽为 0dB,Deep-JSCC 方案的性能也大大高于 JPEG 和 JPEG2000 所能达到的性能。
- 在信道带宽变得更少的限制时,即对于 k / n > 0.3 k/n>0.3 k/n>0.3深度JSCC方案的性能仍然与JPEG/JPEG2000对应方案具有竞争力。
提出的饱和深JSCC方案在大通道带宽制度可能是由于特定的自动编码器架构的有限能力使用,这可能会改进,例如,通过使用一个不同的激活函数比PReLU,或通过增量训练。
接下来我们研究了Deep-JSCC对信道条件变化的鲁棒性,如图4(a)和4(b)说明了在两种不同的带宽压缩比,
k
/
n
k/n
k/n值下,重建图像的平均PSNR相对于AWGN信道的信噪比。图中的每条曲线。4(a)和4(b)是通过训练我们的端到端系统的特定的信道信噪比值,记为
S
N
R
t
r
a
i
n
SNR_{train}
SNRtrain,然后评估学习到的编码器/解码器参数在测试图像上的性能,记为
S
N
R
t
e
s
t
SNR_{test}
SNRtest。换句话说,每条曲线都代表了优化信道信噪比的JSCC方案的性能,并在不同信道条件下部署信噪比。这些结果为信道条件与端到端系统优化不同时的性能提供了见解,并证明了所提出的JSCC对信道质量变化的鲁棒性。我们可以观察到,对于
S
N
R
t
e
s
t
<
S
N
R
t
r
a
i
n
SNR_{test} < SNR_{train}
SNRtest<SNRtrain,即当信道条件比编码器/解码器已经优化的条件差时,我们的Deep-JSCC算法不存在在数字系统中观察到的“悬崖效应”。与数字系统不同的是,当SNRtest低于临界阈值时,解码信号的质量急剧下降,而Deep-JSCC方案对信道质量波动更具鲁棒性,并且随着信道的恶化,性能逐渐下降。自动编码器能够将相似的图像/特征映射到信道输入信号空间中附近的点;因此,随着信噪比的降低,解码器仍然可以获得原始图像的重建。
另一方面,当
S
N
R
t
e
s
t
SNR_{test}
SNRtest逐渐高于
S
N
R
t
r
a
i
n
SNR_{train}
SNRtrain时,图像重建质量逐渐提高,当
S
N
R
SNR
SNR逐渐提高到一定值时性能趋向于饱和,饱和区域的性能完全由目标值
S
N
R
t
r
a
i
n
SNR_{train}
SNRtrain在训练阶段隐式决定的压缩量所驱动的。性能饱和并不像数字图像、视频传输系统那样发生在
S
N
R
t
e
s
t
=
S
N
R
t
r
a
i
n
SNR_{test} = SNR_{train}
SNRtest=SNRtrain,而是发生在
S
N
R
t
e
s
t
>
S
N
R
t
r
a
i
n
SNR_{test} > SNR_{train}
SNRtest>SNRtrain。 这一行为表明,所提出的 JSCC 方案决定了错误保护量和压缩量之间的隐含权衡,当系统工作在
S
N
R
t
e
s
t
=
S
N
R
t
r
a
i
n
SNR_{test} = SNR_{train}
SNRtest=SNRtrain时,并不一定以无差错传输为目标。我们还注意到,当编码器/解码器针对极高的
S
N
R
t
r
a
i
n
SNR_{train}
SNRtrain进行优化,且
S
N
R
t
e
s
t
>
S
N
R
t
r
a
i
n
SNR_{test} > SNR_{train}
SNRtest>SNRtrain 时,系统将简化为普通的自动编码器,其性能完全受限于带宽压缩比
k
/
n
k/n
k/n 的自由度,即自动编码器瓶颈层的维度。
接下来,我们将研究在带 AWGN 的慢瑞利衰落信道假设下,Deep-JSCC 方案的性能。在这种情况下,信道传递函数为
η
(
z
)
=
h
z
+
n
\eta(z) = hz+n
η(z)=hz+n其中
h
∼
C
N
(
0
,
H
c
)
h\thicksim \mathcal C\mathcal N(0 , H_c)
h∼CN(0,Hc),
n
∼
C
N
(
0
,
σ
2
I
k
)
n\thicksim \mathcal C\mathcal N(0 , \sigma^2\mathcal I_k)
n∼CN(0,σ2Ik)。在本实验中,我们不假定接收器或发射器有信道状态信息,也不考虑先导信号的传输。由于我们假定信道缓慢衰减,因此信道增益
h
h
h将从复高斯分布
C
N
(
0
,
H
c
)
\mathcal C\mathcal N (0, H_c)
CN(0,Hc) 中随机采样,并保持不变。我们设置
H
c
H_c
Hc = 1,并改变噪声方差
σ
2
σ^2
σ2来模拟不同的平均信道信噪比。
我们绘制了所提出的Deep-JSCC 算法在不同平均信噪比值的慢速瑞利衰落信道上的性能与带宽压缩比
k
/
n
k/n
k/n 的函数关系。需要注意的是,由于缺乏信道状态信息,该信道在香农意义上的容量为零,因为在所有信道条件下,没有任何正速率可以保证可靠传输;也就是说,对于任何正传输速率,信道容量将以非零概率低于传输速率。因此,我们计算了为平均信噪比值设计的任何数字传输方案的上限,即
S
N
R
=
10
log
10
E
[
h
2
]
P
σ
2
SNR = 10\log_{10}\frac{\mathbb E [h_2]P}{\sigma^2}
SNR=10log10σ2E[h2]P该方案使用 JPEG/JPEG2000 进行压缩。与 AWGN 信道的情况类似,我们假设使用 JPEG/JPEG2000 对源图像进行压缩,压缩率等于平均信噪比值下复 AWGN 信道的容量。也就是说,我们计算了使用等式可以可靠地传输的最大比特数,其中信道容量按平均信噪比值计算。如果由于衰落导致信道容量低于这个值,就会发生中断,并使用平均像素值进行重建,即达到最大失真。如果信道容量高于传输速率,则可以可靠地解码所传输的码字。我们观察到,在所有信噪比和带宽压缩值下,Deep-JSCC都超过了数字传输方案的上限。这一结果强调了所提出的Deep-JSCC技术在一个时变信道上进行通信,或向多个具有不同信道状态的接收机进行多播通信时的好处。(这里不懂是什么意思)
我们在图中说明了所提出的Deep-JSCC方案对慢瑞利衰落信道中平均信道信噪比变化的鲁棒性。在6(a)和6(b)中我们观察到,虽然与静态AWGN信道相比,Deep-JSCC方案的性能下降了,尽管缺乏信道状态信息,但重建图像的质量仍然是合理的。这表明网络学会了估计信道状态,并相应地调整解码器;也就是说,所提出的Deep-JSCC 方案不仅将信源编码、信道编码和调制组合起来,而且还将信道估计结合到一个单一的组件中,其参数是通过训练学会的。
B、对kodak数据集的评估
我们还在更高分辨率的图像上评估了所提出的Deep-JSCC方案。我们在由120万张图像组成的图像集数据集上训练我们的神经网络架构。这些图像被随机裁剪成大小为128×128的补丁,并以32个样本的小批量输入网络。我们将学习速率设置为
1
0
−
4
10^{-4}
10−4,并训练模型直到收敛。该评估是在由24张768×512图像组成的Kodak image dataset上进行的。每个图像被传输100次,因此性能可以在随机信道的多次实现上被平均。
我们通过改变噪声功率
σ
2
σ^2
σ2 来研究所提出的深度JSCC算法在AWGN信道上的性能。将所提出的深度JSCC算法与使用JPEG/JPEG2000进行图像压缩以及实际的信道编码和调制方案的数字传输方案进行了比较。我们使用(4096、8192)、(4096、6144)和(2048、6144)LDPC码(对应于1/2、2/3和1/3速率码)与BPSK、4-QAM、16-QAM和64-QAM数字调制方案的所有可能组合。为了便于阅读,我们只提供了性能最好的数字传输方案,而省略了那些执行类似的方案,或其在PSNR方面的性能低于15 dB的方案。
如上图所示分别显示了所提出的Deep-JSCC和数字传输方案在AWGN信道中的性能,带宽压缩比分别为
1
12
\frac{1}{12}
121和
1
6
\frac{1}{6}
61。结果表明,在低信道带宽和低信噪比条件下,我们的深度JSCC方案显著优于使用JPEG(最广泛使用的图像压缩算法)的基线数字传输方案,而在高带宽和高信噪比值条件下,它的性能与基准测试方案相当。最重要的是,我们的Deep-JSCC方案不受到数字传输方案中观察到的“悬崖效应”。后者的无效是由于一旦为目标信噪比值选择了信道码和调制方案,可供压缩的比特数是固定的,因此,重建图像的质量不会随着信噪比而提高。同时,当信道质量下降到目标信噪比值以下时,信道码无法处理不断增加的错误率,导致重建图像的质量显著下降。与数字传输方案相反,当信道质量下降到目标信噪比值以下时,我们的深度JSCC方案表现出优雅的性能下降,而当信道条件改善到超过目标信噪比时,性能不会立即饱和。
与使用JPEG2000进行源压缩的方案相比,我们的JSCC算法仅在极低信噪比和低信道带宽的AWGN信道中优于基准数字传输方案。然而,我们相信,通过使用更深层次的神经网络架构,以及通过使用更复杂的激活和损失函数,可以进一步提高深度JSCC算法的性能。
接下来,我们评估了我们的深度JSCC算法在Kodak图像数据集上的时变通道的性能。
上图描述了在带宽压缩比
k
n
=
1
6
\frac{k}{n}=\frac{1}{6}
nk=61的慢瑞利衰落信道下,Deep-JSCC和基准数字传输方案的性能,我们将平均信道增益设为
H
c
=
1
H_c=1
Hc=1,并通过改变
σ
2
\sigma^2
σ2来改变平均信噪比。在这些模拟中,我们假定在所提出的方案和基线数字传输方案中,衰落信道引入的相移在接收器处都是已知的,这使得模型等同于具有双倍带宽的真实衰减信道,因为在每个图像传输期间,只有信道增益发生随机变化。为了便于阅读,我们只保留所有可能的 LDPC 码和 BPSK、4-QAM、16-QAM 和 64-QAM 调制方案组合中性能最好的数字传输方案。我们可以看到,由于数字传输方案对信道信噪比变化导致的信道误码率变化的敏感性,使用 JPEG/JPEG2000 对信源进行单独压缩,然后进行信道编码和调制的数字方案的性能不如所提出的Deep-JSCC。虽然数字传输方案仅在经过优化的信道条件下表现良好,但我们的深度JSCC方案对信道质量波动更具鲁棒性。尽管经过了针对特定的平均信道质量的训练,Deep JSCC还是能够学习到能够适应信道质量波动的图像的鲁棒编码表示。后者在通过时间间隔信道或向具有不同信道质量的多个接收器传输时具有极大的优势。
最后,对两种方式的重建图像进行了可视化比较,如下图所示。从顶部的低信噪比(1 dB)开始,再发展到底部的高信噪比(19 dB)。对于每一次重建,我们展示了PSNR和SSIM 。有趣的是,尽管与使用JPEG2000的单独方案相比,深度JSCC在PSNR方面的表现更差,但其SSIM值始终更高,表明更优越的感知视觉质量。
图11显示了一个例子,对于高信噪比值,数字传输方案在PSNR度量中优于Deep-JSCC,但与使用JPEG的方案相比,Dee-JSCC仍然可以实现类似的SSIM值。我们可以看到,JPEG产生可见的阻塞伪影,特别是在低信噪比的信道中,而这在用Deep-JSCC传输的图像中是不存在的。由于将源值直接映射到软通道输入值,由Deep-JSCC引入的噪声似乎比JPEG的噪声更平滑。请注意,Deep-JSCC也可以用SSIM作为损失函数进行训练,这可以进一步提高其在SSIM度量方面的性能。
C、计算复杂度
在编码器解码器网络中,计算成本最高的操作时二维卷积/转置卷积,因为它们涉及到乘法和加法,单个卷积层的计算代价为
F
×
F
×
D
×
K
×
W
×
H
F\times F\times D\times K\times W\times H
F×F×D×K×W×H,其中
F
F
F是滤波器的大小,
K
K
K是滤波器的数量,
D
D
D是输入通道的数量,
W
×
K
W\times K
W×K是特征图的大小,因此其计算复杂度为
O
(
I
w
,
I
H
)
\mathcal O(I_w,I_H)
O(Iw,IH),这意味着编解码器的计算复杂度在输入图像上是线性的,因为只有特征图的宽度和高度依赖于图像的尺寸,而所有其他因素都是恒定的,与图像的大小无关。JPEG的编码/解码在像素上也是线性的,采用JPEG压缩和LDPC编码的单独联合源通道编码方案的计算复杂度与输入图像大小之间也是线性关系。
平均运行时间是指使用所提出的深度JSCC架构对一个图像进行编码和解码所需的平均时间。我们的GPU实现实现的平均运行时间是每幅图像18 ms,而CPU上的平均运行时间是387 ms。作为比较,上述图像的JPEG编码和解码所需的平均时间从30 ms到390 ms,而JPEG2000算法对这些图像的平均编码和解码时间更高(例如,430-590 ms)。这个时间必须进一步增加,增加用通道码编码/解码压缩位流所需的时间。以上证明了我们的方法不仅在质量方面,而且在计算复杂度方面都与基线分离源和信道编码方法具有竞争力。
Ⅴ、结论及未来工作
结论:我们提出了一种新的Deep-JSCC无线信道图像传输架构。在这种体系结构中,编码器将输入的图像直接映射到信道输入端。编码器和解码器的函数被建模为互补的CNN,并在数据集上联合训练,以最小化重建图像的平均MSE。我们比较了这种深度JSCC方案与传统的基于分离的数字传输方案的性能,后者采用了广泛使用的图像压缩算法,然后是实现容量的信道码。我们通过大量的数值模拟表明,Deep-JSCC优于基于分离的方案,特别是在有限的信道带宽和低信噪比的情况下。更重要的是,深度JSCC可以显著降低信道信噪比的重建质量。在慢衰落信道上通信时,该观察结果受益于该方案;Deep-JSCC在所有平均信噪比值下都表现良好,并且在任何信道带宽值下都优于所提出的基于分离的传输方案。
在基于DL的JSCC中编码器和解码器网络不仅学习通过信道可靠地通信,而且还学习有效地压缩图像。对于无噪声的完美信道,如果源带宽大于信道带宽,即
n
>
k
n > k
n>k,编码-解码器NN对等价于一个不完全的自动编码器,它有效地学习了训练数据集的最显著的特征。然而,在有噪声信道的情况下,仅仅学习一个良好的输入的低维表示是不够的。该网络还应该学会将显著特征映射到附近的表示形式上,以便在存在噪声的情况下也可以重建相似的图像。我们还注意到,对信道噪声的弹性可以作为自动编码器的一种正则化器。例如,当没有信道噪声时,如果信道带宽大于源带宽,即
n
<
k
n < k
n<k,我们得到一个过完全的自动编码器,它可以简单地学习复制图像。当存在信道噪声时,即使是一个过完全的自动编码器也会学习到一个对信道噪声具有弹性的非平凡映射,类似于去噪自动编码器。
未来工作:提高Deep-JSCC方案性能的下一步是在自动编码器中利用更先进的神经网络架构,这些架构已被证明可以提高压缩性能。我们还将探讨该系统对非高斯信道以及带有内存的信道的性能,因为我们没有容量接近的信道码。我们期望拟议的NN-based JSCC方案的好处将在这些非理想的设置中更加明显。
- 终于写完了
- 勘误或交流可发送邮箱:2546863956@qq.com