CVPR2020丨UDVD:用于可变退化的统一动态卷积超分辨率网络

简介: 近些年,基于CNN的方法在图像超分辨率问题上表现出出色的性能。然而大多数方法基于一种退化或者是多种退化的组合,甚至去训练特定的模型以适应特定的退化过程。因此更加实际的方法是训练单独的模型以适用多样可变的退化。

CVPR2020论文:Unified Dynamic Convolutional Network for Super-Resolution with Variational Degradations


640.png



近些年,基于CNN的方法在图像超分辨率问题上表现出出色的性能。然而大多数方法基于一种退化或者是多种退化的组合,甚至去训练特定的模型以适应特定的退化过程。因此更加实际的方法是训练单独的模型以适用多样可变的退化。


因此为了实现这个目标,论文提出了一个统一网络去适应图像间(跨图像变化)和像内(空间变化)的变化。


如何实现呢?论文首先提出了动态卷积,进而基于动态卷积提出了用于可变退化的统一可变卷积网络(UDVD)。从 图1 可以看到UDVD 针对不同退化,都能够生成良好的结果,而 RCAN、ZSSR 则无法很好地应对多种退化过程。


640.jpg

                                                  图1. UDVD 与RCAN ZSSR 生成图像细节对比


退化LR图像生成


为了训练模型,首先需要对HR 图像处理,生成退化的LR 图像。退化过程可以由如下公式定义:


image.png


k表示模糊核,s 表示下采样过程,n表示噪声, ILR,IHR分别为低分辨率图像和原始高分辨率图像。论文选取了各向同性高斯模糊核以及加性高斯白噪声(AWGN),并使用 Bicubic 作为下采样过程。


假设模糊核尺寸为P×P ,AWGN 噪声水平为image.png 。首先对 HR 图像进行模糊核操作后下采样图像,最后将图像与 AWGN 相加,生成退化LR图像。


UDVD 输入


与 SRMD 相似,UDVD 网络需要额外的退化特征图作为输入,其处理方式与 SRMD 相同。因此会对模糊核通过 PCA 降维至 t 维。具体的实现方法,可以参考SRMD 源码。


PCA 变换矩阵生成的代码如下:


def get_pca_matrix(x, dim_pca=15):
    """
    Args:
        x: 225x10000 matrix
        dim_pca: 15
    Returns:
        pca_matrix: 15x225
    """
    C = np.dot(x, x.T)
    w, v = scipy.linalg.eigh(C)
    pca_matrix = v[:, -dim_pca:].T
    return pca_matrix
def cal_pca_matrix(path='PCA_matrix.mat', ksize=15, l_max=12.0, dim_pca=15, num_samples=500):
    kernels = np.zeros([ksize*ksize, num_samples], dtype=np.float32)
    for i in range(num_samples):
        theta = np.pi*np.random.rand(1)
        l1    = 0.1+l_max*np.random.rand(1)
        l2    = 0.1+(l1-0.1)*np.random.rand(1)
        k = anisotropic_Gaussian(ksize=ksize, theta=theta[0], l1=l1[0], l2=l2[0])
        # util.imshow(k)
        kernels[:, i] = np.reshape(k, (-1), order="F")  # k.flatten(order='F')
    # io.savemat('k.mat', {'k': kernels})
    pca_matrix = get_pca_matrix(kernels, dim_pca=dim_pca)
    io.savemat(path, {'p': pca_matrix})
    return pca_matrix


通过变换矩阵将模糊核降维之后,生成t 维向量,然后加入噪声水平image.png向量后,(t+1) 维进行空间拓展,生成与输入 LR 图像空间尺寸相同,维度为(t+1)×H×W 的退化特征图。最后与输入LR 图像并联,生成维度为(C+1+t)×H×W 的UDVD 输入,其中t=15,C=3 。


UDVD 网络结构


然后再来看看 UDVD 的网络结构,如图 2 所示。可以看到 UDVD 大体上可以分为两个部分:


  • Feature Extraction Network(FRN)
  • Refinement Network(RN)


640.jpg

                                                              图 2. UDVD 网络结构


第一个部分FRN,其结构和 EDSR 网络结构一致,采用了2层卷积+1层 Relu 的残差块。第二部分RN 则是由级联的动态模块Dynamic Block( DB)组成。


640.jpg

                                                                      图3. 动态模块


动态模块


对于第m个动态模块, 将FRN输出特征 F和先前DB生成的中间图 Im-1作为输入,最终生成图像Im  。


动态卷积

其中最为重要的就是动态卷积 Dynamic Convolution。图3所Dynamic Kernels 通过一层卷积生成(k×k)×H×W 特征图作为逐像素动态卷积核,其中(k×k×r×r)×H×W 为核的大小。当需要进行特征放大时,则会生成维度为 逐像素动态卷积核。


640.jpg


得到卷积核之后,动态卷积过程可由如下公式表达:


image.png

640.jpg


带上采样的动态卷积 UD


为了实现上采样,动态卷积会成生成 r2个动态卷积核,对同一个图像块生成r ×r子图像块。

其过程可由如下形式表示:


image.png


这里需要注意的是:当使用了上采样之后,权重是跨通道共享,以避免维数灾难。


实现的方法,其实与RealSR论文中 LP-KPN 网络很相似。由于 LP-KPN 没有 Pytorch 版本,这里可以参考一下我自己的实现方法:RealSR。


Multistage-loss


论文采用了多阶损失 ,其表达形式如下:

image.png


为了获得高质量的合成图像,论文因此将每个动态块生成中间图与GT图之间的损失总和最小化。


实验 Experiment


为了充分说明论文提出方法的有效性,论文在非盲(non-blind) 设定下进行实验对比,也就是实际退化过程已知。非盲结果能够为估计退化的盲方法(blind method)提供了上限,在非盲设定下性能的改进也能够提高盲方法的性能上限。


退化参数设定


  1. 采用各向同性高斯核 ,核宽度image.png在[0.2,3.0] , 核尺寸固定为 。
  2. 使用加性高斯白噪声,噪声水平image.png  在 [0,75]。


UDVD不同设定对比


640.jpg


其中D 代表典型的动态卷积,U 代表带有上采样的动态卷积。DU、UD、UDD 表示着在动态模块中,不同组合的动态卷积。Baseline 只包括FRN 网络+次像素卷积层。因此表现最差。而 UDVD_UDD的性能最好,并且训练如果不引入multistage loss,会出现明显的性能下降,在 PSNR、SSIM数值上分别下降 0.09 和 0.025。这也说明了引入multistage loss对提升性能有明显作用。


于是论文使用 UDVD_UDD 用于×2,×3情况下,对于 ×4情况,则使用UDVD_UUDD。


可视化动态核


640.jpg

                                                                 图4 可视化动态核


UDVD 会生成动态核去适应图像内容和不同的退化。图(a)显示了UDVD 会生成不同的核以处理不同的图像内容。图(b)表明了生成核进一步适应了所应用的降级。图(c)则表明了UDVD的适应行为会根据不同的退化不同,且与图像内容的无关。这些观证实,考虑到内容和降级的空间差异,UDVD能够通过生成动态内核来处理空间变化。


多种退化


1.固定模糊核宽度和噪声水平,在 Set5、Set14、BSD100测试集上,UDVD 均取得了最好的性能表现。


640.jpg


2.在模糊核宽度可变时,UDVD 和 SRMD 进行对比,UDVD 在所有测试集上均优于 SRMD ,说明 UDVD 能够很好地适应空间可变的退化,从而取得良好的性能。图5也可以看到,尽管SRMD和UDVD都能够处理空间变化,但UDVD仍可产生更清晰清晰的重建图像。


640.jpg

640.jpg

                                                图5 可视化结果对比


无噪声退化


640.jpg


这个实验中,训练 UDVD 用于无噪声的退化(仅有高斯退化),与其他方法进行比较。从表中可以看到,UDVD 取得了可观的性能表现,尤其是BSD100上,UVD 优于 SFTMD 和SRMDNF。需要注意的是,SFTMD受益于空间特征变换(SFT),它对降级信息应用了仿射变换,而不是将其与输入图像连接在一起。UDVD 也可以进一步采用 SFT,以实现进一步的改进。


固定退化


640.jpg


BI 对应的是 Bicubic 下采样,而 BN 则对应的是 Bicubic 下采样后加入噪声水平为30的加性高斯白噪声。UDVD 可在 BI 上取得不错的结果,并在 DN上取得最佳的性能。


真实图像生成结果


640.jpg

                                                     图6. 真实图像上生成效果


640.jpg

                                                 图7. 真实图像上生成效果


最后UDVD也在真实图像上做了实验,与其他方法对比,可以看到 UDVD 能够生成更加清晰和干净的图像。值得注意的是,由于需要对图像进行噪声估计,因此采用了与SRMD相似的方法,利用网格搜索的方法搜索最合适的退化参数。


总结


这篇论文的一个主要的创新点在于将动态卷积引入SR问题之中,并且对动态卷积做了进一步的拓展实现了图像上采样过程。可以预计在未来SR 问题的研究中,动态卷积会越来越多的被使用。同时论文在非盲设定下,与其他方法进行了大量的实验对比,在多种图像退化设置下,进行定量定性分析,有理有据,值得学习。其中,动态核可视化与分析,也值得去学习研究。这些实验也充分说明了 UDVD 的有效性。


一点疑惑


UDVD的动态模块中,如何将动态模块生成的image.png的中间图像,与特征提取网络生成的特征 F进行并联,文中没有做具体介绍,只提到利用次像素卷积层进行分辨率的对齐。因此如何在第 m个动态模块中,实现 image.png与 F进行通道维度并联?


因此猜想,是通过image.png 通过次像素卷积逆变换,实现分辨率降低,生成 image.png,再输入到网络中进行处理。对于第一个动态模块,直接以image.png ,即低分辨率 LR 输入图像作为输入。残差图像Rm 的生成,需要在Concat之前对 F进行处理,通过次像素卷积+卷积的方式,实现分辨率的提高,然后与LR图像特征进行并联。


参考文献


SRMD:Learning a Single Convolutional Super-Resolution Network for Multiple Degradations

相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
68 11
|
17天前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
162 7
|
4月前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于PSO(粒子群优化)改进TCN(时间卷积神经网络)的时间序列预测方法。使用Matlab2022a运行,完整程序无水印,附带核心代码中文注释及操作视频。TCN通过因果卷积层与残差连接处理序列数据,PSO优化其卷积核权重等参数以降低预测误差。算法中,粒子根据个体与全局最优位置更新速度和位置,逐步逼近最佳参数组合,提升预测性能。
|
3月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容包含时间序列预测算法的相关资料,涵盖以下几个方面:1. 算法运行效果预览(无水印);2. 运行环境为Matlab 2022a/2024b;3. 提供部分核心程序,完整版含中文注释及操作视频;4. 理论概述:结合时间卷积神经网络(TCN)与鲸鱼优化算法(WOA),优化TCN超参数以提升非线性时间序列预测性能。通过因果卷积层与残差连接构建TCN模型,并用WOA调整卷积核大小、层数等参数,实现精准预测。适用于金融、气象等领域决策支持。
|
3月前
|
机器学习/深度学习 数据采集 并行计算
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容涵盖基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测算法。完整程序运行效果无水印,适用于Matlab2022a版本。核心代码配有详细中文注释及操作视频。理论部分阐述了传统方法(如ARIMA)在非线性预测中的局限性,以及TCN结合PSO优化超参数的优势。模型由因果卷积层和残差连接组成,通过迭代训练与评估选择最优超参数,最终实现高精度预测,广泛应用于金融、气象等领域。

热门文章

最新文章