USRNet端到端深度学习网络实现图片视频的超分辨率与清晰度

USRNet

上期文章我们分享了基于OpenCV的超分辨率的代码实现,哪里主要使用到了EDSR、ESPCN、FSRCNN、LapSRN等模型,虽然使用OpenCV能够实现超分辨率,但是图片的清晰图并没有增加,当有一张稍微模糊的图片时,增加分辨率的同时,我们也更希望提高图片的清晰图,如上图的图片,本期文章,我们介绍一下USRNet模型结构

USRNet网络

USRNet提出了一种端到端的可训练展开网络,该网络同时利用了基于学习的方法和基于模型的方法。USRNet会通过继承flexibility of model-based methods来针对不同比例因子超分辨模糊,嘈杂的图像a single model,同时保持advantages of learning-based methods。

USRNet网络

建议的USRNet的总体体系结构具有8个迭代。USRNet通过a single model将LR图像,比例因子,模糊内核和噪声水平作为输入,可以灵活地处理经典降级。具体而言,USRNet包括三个主要模块,包括数据模块d,使HR估计更加清楚,现有模块P10,使HR估计清洁器,和超参数模块H中,其控制的输出d和P。

  1. 数据模块D: 数据项的封闭式解决方案;不含可训练的参数
  2. 先前模块P: 先前术语的ResUNet去噪器
  3. 超参数模块H: MLP为超参数;充当滑动条以控制D和P的输出

其代码作者已经共享,我们可以直接访问github下载源码,本源码基于PyTorch 1.4.0,需要提前安装PyTorch ,下载解压后的结构如下图:

其中
main_test_realapplication.py文件主要来进行图片的超分辨率的实现,关于其他2个脚本文件,可自行尝试。

当下载完源代码后,需要下载提供的预训练模型,一共包括4个模型文件,USRNet以及USRGAN与tiny模型,我们主要下载USRNet以及USRGAN即可,当然若想提高运行速度,也可以下载tiny模型

USRNet网络

模型下载完成后,需要把模型放置在model_zoo文件夹下

USRNet

然后打开
main_test_realapplication.py源码,查看主函数部分

def main():
  model_name = 'usrnet' # 'usrgan' | 'usrnet' | 'usrgan_tiny' | 'usrnet_tiny'
  testset_name = 'set_real' # test set, 'set_real'
  test_image = 'chip.png' # 'chip.png', 'comic.png'
  #test_image = 'comic.png'
  sf = 4 # scale factor, only from {1, 2, 3, 4}
  show_img = False # default: False
  save_E = True # save estimated image
  save_LE = True # save zoomed LR, Estimated images
  if 'chip' in test_image:
    noise_level_img = 15 # noise level for LR image, 15 for chip
    kernel_width_default_x1234 = [0.6, 0.9, 1.7, 2.2] # Gaussian kernel widths for x1, x2, x3, x4
  else:
    noise_level_img = 2 # noise level for LR image, 0.5~3 for clean images
    kernel_width_default_x1234 = [0.4, 0.7, 1.5, 2.0] # default Gaussian kernel widths of clean/sharp images for x1, x2, x3, x4

代码截图

我们这里需要修改的参数主要是:

  1. Model_name:这里可以选择的参数’usrgan’ | ‘usrnet’ | ‘usrgan_tiny’ | ‘usrnet_tiny’
  2. testset_name:这里主要是test的图片文件夹路径,我们可以把需要测试的图片放置在USRNet-master\testsets\set_real文件夹下
  3. test_image:testsets\set_real文件夹下的需要测试的图片文件名称
  4. sf:这里设置超分辨的放大倍数,可以设置为1/2/3/4

当然我们的图片若是比较清晰,可以选择noise_level_img = 2低底噪的内核参数

以上设置完成后,便可以运行代码进行图片的超分辨率的实现,代码运行完成后,会在results文件夹下生产超分辨的图片

除了USRNet模型外,也可以修改代码中的model为USRGAN,来实现图片的超分辨对比

从图片的结果可以看出,使用USRNet模型的图片超分辨的实现,不仅在分辨率上有增加,其图片的清晰度也有了明显的改善,当然,若只是想提高图片的清晰图,不需要提高分辨率,可以直接设置SF参数为1,模型会自动进行图片的清晰图的提高

这里,你也可以修改一下源代码,进行视频的实时超分辨的提高,或者模糊视频的实时处理等操作。

https://m.toutiao.com/is/iLjn9d26/ 人工智能研究所: 视频动画详解Transformer模型–Attention is all you need.