Deep Residual Network with Enhanced Upscaling Module for Super-Resolution 文章的解读

本文提出了一种基于深度残差网络的超分辨率方法,通过增强的上采样模块提高图像重建质量。网络分为特征提取与尺寸放大重建两部分,采用残差块进行多层次特征学习,并利用PixelShuffle技术放大图像尺寸,实现多尺度图像重建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Deep Residual Network with Enhanced Upscaling Module for Super-Resolution

文章地址: https://arxiv.org/pdf/1707.02921.pdf

网络结构

(i) 文章的主要新意在红色的圆角矩形内,网络结构分成了两个部分,一是特征提取部分,二是放大尺寸的重建部分。

(ii) 特征提取部分是一层的浅层特征提取,再加上残差块。

(iii) 残差块中又包含若干个局部残差块,局部残差块的内部结构是两层卷积再加上两者中间的一个ReLU激活函数。

(iv) 前面的部分是很普通的特征提取块,可以再加上密集,循环之类的操作。

(v) 后边的部分中的红色圆角矩形中使用ESPCN的PixelShuffle(像素重组),来放大图片的尺寸,在pytorch里面有特定的操作。

(vi) 上面的后半部分的网络结构不是本文的,接下来介绍本文的。

我们可以很清楚的看到,上面的PixelShuffle操作的输入有了很大的不同,之前部分的输入仅仅是灰色部分经过卷积的输出,但是下边部分是希望每经过一次残差块的输出都能够作为PS 的输入,这样就能够充分利用不同深度的特征图。能够使用不同的东西要比只是用一种东西要好,我们的想法是这样,但是我觉得里面存在一些问题,每个部分的特征图的数量是一样的,我觉得这里可以使尝试着改进一下,就是可以让通道数不一样,这样我们就能够知道,深层和浅层特征图对重建图像的贡献。

网络结构使用的是EDSR的升级版MDSR,能够实现多尺度图像的重建效果。

重建的PSNR效果还行,但是还是比不上EDSR。我觉得文章只是提出了一个新的方法在构造重建部分。

 

 

### NeXtSRGAN 超分辨率 GAN 的实现 NeXtSRGAN 是一种基于 Super-Resolution GAN 的改进模型,其核心在于利用 ConvNeXt 构建判别器网络以提升图像细节的表现力和生成质量。以下是有关其实现的关键部分: #### 判别器设计 ConvNeXt 结构被引入到判别器的设计中,通过分层特征提取来增强对高分辨率图像真实性的判断能力。ConvNeXt 使用深度可分离卷积以及残差连接机制,在保持计算效率的同时提升了性能[^1]。 ```python import tensorflow as tf from tensorflow.keras import layers def convnext_block(input_tensor, filters, kernel_size=7): x = layers.DepthwiseConv2D(kernel_size=kernel_size, padding='same')(input_tensor) x = layers.LayerNormalization(epsilon=1e-6)(x) x = layers.Dense(filters * 4)(x) x = layers.Activation('gelu')(x) x = layers.Dense(filters)(x) return layers.Add()([input_tensor, x]) def build_discriminator(img_shape=(128, 128, 3), num_blocks=3): input_img = layers.Input(shape=img_shape) x = layers.Conv2D(64, kernel_size=3, strides=2, padding="same")(input_img) x = layers.LeakyReLU(alpha=0.2)(x) current_filters = 64 for _ in range(num_blocks): x = convnext_block(x, current_filters) current_filters *= 2 if current_filters > img_shape[-1]: break x = layers.Conv2D(current_filters, kernel_size=3, strides=2, padding="same")(x) x = layers.LeakyReLU(alpha=0.2)(x) x = layers.Flatten()(x) output = layers.Dense(1, activation='sigmoid')(x) model = tf.keras.Model(inputs=input_img, outputs=output, name="convnext_discriminator") return model ``` 上述代码展示了如何构建一个基于 ConvNeXt 的判别器架构。它采用逐步下采样的方式减少空间维度并增加通道数,从而捕获更深层次的语义信息[^2]。 #### 生成器设计 对于生成器而言,可以借鉴已有的超分辨率技术如 EDSR 或 RCAN 来搭建基础框架,并调整参数适配具体应用场景需求[^3]。 ```python def res_block(input_tensor, filters): shortcut = input_tensor x = layers.Conv2D(filters, kernel_size=3, padding='same', use_bias=False)(input_tensor) x = layers.ReLU()(x) x = layers.Conv2D(filters, kernel_size=3, padding='same', use_bias=False)(x) return layers.Add()([shortcut, x]) def upscale_ps(input_tensor, factor=2): return layers.UpSampling2D(size=factor, interpolation='bilinear')(input_tensor) def build_generator(lr_shape=(32, 32, 3)): inputs = layers.Input(shape=lr_shape) x = layers.Conv2D(64, kernel_size=9, padding='same')(inputs) x = layers.ReLU()(x) residual = x for _ in range(16): x = res_block(x, 64) x = layers.Conv2D(64, kernel_size=3, padding='same')(x) x = layers.BatchNormalization()(x) x = layers.Add()([residual, x]) x = upscale_ps(x, factor=4) out = layers.Conv2D(3, kernel_size=9, padding='same', activation='tanh')(x) generator_model = tf.keras.models.Model(inputs=[inputs], outputs=out, name="generator") return generator_model ``` 此段脚本定义了一个典型的残差块堆叠型生成器结构,适用于大多数 SISR(Single Image Super Resolution)任务中的低频重建阶段。 #### 训练过程概述 训练过程中需注意平衡生成器与判别器之间的对抗关系,通常会设置不同的损失函数组合来优化整体表现效果。例如 LSGAN 提倡使用的最小二乘误差替代传统交叉熵作为目标函数之一;而针对特定数据集特性还可能加入感知损失(perceptual loss),风格迁移项(style transfer term)等辅助约束条件进一步改善视觉体验品质。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值