1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 盲图像超分辨率重建 ( CVPR ) (Pytorch)(附代码)

盲图像超分辨率重建 ( CVPR ) (Pytorch)(附代码)

时间:2022-07-13 08:03:59

相关推荐

盲图像超分辨率重建 ( CVPR ) (Pytorch)(附代码)

🍊 这篇测评文章用心写了一个下午,个人觉得作为一个初学者入门教程,再合适不过了,敬请查阅

🍊 精选专栏,超分重建-代码环境搭建-知识总结

🍊 博主:墨理,硕士毕业,目前从事图像算法,AI工程化 相关工作

文章目录

📘 基本信息📘 下载代码📘 环境搭建我的服务器环境环境搭建,具体 命令 如下📘 Demo 测试运行1 The synthesized six blur kernels used in our paper can be obtained from here. They are generated by this manuscript.2 To test BSRDM under camera sensor noise, run this command:Evaluation on Real Data📕 真实数据集测试展示📕 可视化展示📘 训练📕 附源码+论文📕 这篇文章可以带给我们的思考📙 一起学 A I

📘 基本信息

Blind Image Super-resolution with Elaborate Degradation Modeling on Noise and Kernel基于噪声和核函数的精细退化盲图像超分辨率重建/zsyOAOA/BSRDM/pdf/2107.00986.pdf

📘 下载代码

摘要翻译(该论文所致力于解决的问题)

虽然基于模型的单幅盲图像超分辨率(SISR)研究取得了巨大的成功,但大多数都没有充分考虑图像退化问题。首先,他们总是假设图像噪声服从独立且同分布(i.i.d.)的高斯或拉普拉斯分布,这在很大程度上低估了真实噪声的复杂性。其次,以前常用的内核先验(例如,归一化、稀疏性)不足以保证合理的内核解决方案,从而降低了后续 SISR 任务的性能。针对上述问题,本文提出了一种概率框架下的基于模型的盲SISR方法,从噪声和模糊核的角度对图像退化进行了精细建模。具体来说,而不是传统的 i.i.d.噪声假设,基于补丁的非独立同分布。提出了噪声模型来处理复杂的真实噪声,期望增加模型对噪声表示的自由度。至于模糊核,我们新颖地构建了一个简洁而有效的核生成器,并将其作为显式核先验(EKP)插入到所提出的盲 SISR 方法中。为了解决所提出的模型,专门设计了一种具有理论基础的蒙特卡罗电磁算法。综合实验证明了我们的方法在合成和真实数据集上优于当前最先进的方法

主要贡献( the contributions of this work is three-fold)

论文核心设计,蒙特卡罗EM算法( Monte Carlo EM algorithm )

图像质量评价指标:有参:PSNR、SSIM、LPIPS。无参:NIQE、NRQM、PI;

🍊 超分重建 psnr 和 SSIM计算(pytorch实现)

Learned Perceptual Image Patch Similarity (LPIPS) metric

🍊 /p/206470186🍊 /richzhang/PerceptualSimilarity

📘 环境搭建

git clone /zsyOAOA/BSRDM.git## 或者 下载 zip 进行 解压unzip BSRDM-master.zip cd BSRDM-master/

我的服务器环境

ubuntu18给当前用户安装cuda11.2 图文教程 、 配置cuDNN8.1 ——【一文读懂】

## 服务器cat /etc/issueUbuntu 18.04.5 LTS \n \l## Cuda版本nvcc -VCuda compilation tools, release 11.2, V11.2.67Build cuda_11.2.r11.2/compiler.29373293_0# 显卡Quadro RTX 5000 16G x 4# 内存 128G

完全符合该代码运行要求

🍊 Ubuntu 18.04, cuda 11.0🍊 Python 3.8.11, Pytorch 1.7.1

服务器操作,解压之后、使用 Conda 来进行环境搭建

🍊 anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】🍊 conda 源设置比较好的话、10多分钟就完成这个环境搭建🍊 基础代码结构如下,该代码结构清晰,没有太多冗余

环境搭建,具体 命令 如下

conda env create -f environment.yml conda activate USRCN

📘 Demo 测试运行

1 The synthesized six blur kernels used in our paper can be obtained from here. They are generated by this manuscript.

2 To test BSRDM under camera sensor noise, run this command:

代码运行,GPU 编号设置(该代码其它地方类似,不再赘述)

代码主函数,结构如下

GPU 占用 3103MiB

python demo_synthetic.py --sf 2 --noise_type signal --noise_estimator niid

运行输出如下

python demo_synthetic.py --sf 2 --noise_type signal --noise_estimator niid /home/墨理学AI/anaconda3/envs/USRCN/lib/python3.8/site-packages/Cython/Compiler/Main.py:369: FutureWarning: ...## 可以看到 这里有一个 FutureWarning, 这种 Warning 一般是因为 代码版本影响,不影响我们的代码运行,通常不必在意gpu_id : 2rho : 0.2sf : 2noise_type: signalnoise_level : 2.55noise_estimator: niiddownsampler : directkernel_shift : leftgamma: 0.67internal_iter_M: 50window_variance: 15langevin_steps : 5delta: 1.0seed : 1000max_iters: 400log_dir : ./logslr_G : 0.002lr_K : 0.005disp : 1print_freq: 20max_grad_norm_G: 10input_chn: 8n_scales : 3down_chn_G: [96, 96, 96]up_chn_G : [96, 96, 96]skip_chn_G: 16use_bn_G : True-03-25 17:03:25.849277: I tensorflow/stream_executor/platform/default/:49] Successfully opened dynamic library libcudart.so.11.0Number of parameters in Generator: 766.21KInitiliazing the generator...Initiliazing the kernel...Iter:0020/0400, Loss:7.571/7.422/0.149, PSNR:28.11, SSIM:0.7661, normG:3.26e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0040/0400, Loss:5.043/4.883/0.161, PSNR:29.51, SSIM:0.8021, normG:1.65e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0060/0400, Loss:0.626/0.464/0.162, PSNR:30.14, SSIM:0.8156, normG:2.00e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0080/0400, Loss:0.557/0.399/0.159, PSNR:30.52, SSIM:0.8233, normG:6.41e-01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0100/0400, Loss:0.534/0.375/0.159, PSNR:30.63, SSIM:0.8254, normG:2.56e-01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0120/0400, Loss:0.935/0.774/0.161, PSNR:30.22, SSIM:0.8244, normG:1.52e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0140/0400, Loss:0.644/0.482/0.163, PSNR:30.66, SSIM:0.8254, normG:3.75e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0160/0400, Loss:0.758/0.592/0.166, PSNR:30.62, SSIM:0.8248, normG:1.41e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0180/0400, Loss:0.722/0.556/0.165, PSNR:30.61, SSIM:0.8246, normG:5.19e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0200/0400, Loss:0.606/0.440/0.167, PSNR:30.85, SSIM:0.8256, normG:1.28e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0220/0400, Loss:0.720/0.550/0.170, PSNR:30.76, SSIM:0.8239, normG:1.30e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0240/0400, Loss:0.682/0.511/0.171, PSNR:30.91, SSIM:0.8244, normG:1.10e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0260/0400, Loss:0.712/0.541/0.171, PSNR:30.97, SSIM:0.8248, normG:9.99e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0280/0400, Loss:0.624/0.450/0.174, PSNR:30.95, SSIM:0.8224, normG:2.67e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0300/0400, Loss:0.640/0.466/0.174, PSNR:30.95, SSIM:0.8223, normG:8.37e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0320/0400, Loss:0.826/0.649/0.176, PSNR:30.68, SSIM:0.8183, normG:1.10e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0340/0400, Loss:0.602/0.427/0.176, PSNR:30.97, SSIM:0.8212, normG:4.31e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0360/0400, Loss:0.561/0.383/0.178, PSNR:30.95, SSIM:0.8189, normG:1.89e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0380/0400, Loss:0.553/0.373/0.180, PSNR:30.91, SSIM:0.8174, normG:4.44e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0400/0400, Loss:0.559/0.378/0.181, PSNR:30.84, SSIM:0.8153, normG:6.78e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03

For the Gaussian noise, run this command:

python demo_synthetic.py --sf 2 --noise_type Gaussian --noise_level 2.55

GPU 占用 3103MiB运行输出如下

python demo_synthetic.py --sf 2 --noise_type Gaussian --noise_level 2.55gpu_id : 2rho : 0.2sf : 2noise_type: Gaussiannoise_level : 2.55noise_estimator: iiddownsampler : directkernel_shift : leftgamma: 0.67internal_iter_M: 50window_variance: 15langevin_steps : 5delta: 1.0seed : 1000max_iters: 400log_dir : ./logslr_G : 0.002lr_K : 0.005disp : 1print_freq: 20max_grad_norm_G: 10input_chn: 8n_scales : 3down_chn_G: [96, 96, 96]up_chn_G : [96, 96, 96]skip_chn_G: 16use_bn_G : True-03-25 17:23:30.937200: I tensorflow/stream_executor/platform/default/:49] Successfully opened dynamic library libcudart.so.11.0Number of parameters in Generator: 766.21KInitiliazing the generator...Initiliazing the kernel...Iter:0020/0400, Loss:5.443/5.311/0.132, PSNR:27.78, SSIM:0.7560, normG:3.69e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0040/0400, Loss:2.502/2.357/0.145, PSNR:29.53, SSIM:0.7940, normG:1.80e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0060/0400, Loss:0.522/0.377/0.145, PSNR:30.50, SSIM:0.8159, normG:2.93e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0080/0400, Loss:0.449/0.306/0.143, PSNR:30.93, SSIM:0.8262, normG:8.00e-01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0100/0400, Loss:0.412/0.270/0.143, PSNR:31.25, SSIM:0.8331, normG:3.34e-01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0120/0400, Loss:1.394/1.250/0.144, PSNR:29.94, SSIM:0.8190, normG:1.17e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0140/0400, Loss:0.688/0.542/0.146, PSNR:31.27, SSIM:0.8324, normG:3.83e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0160/0400, Loss:0.645/0.500/0.146, PSNR:31.72, SSIM:0.8428, normG:9.17e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0180/0400, Loss:0.939/0.795/0.144, PSNR:31.31, SSIM:0.8420, normG:1.17e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0200/0400, Loss:0.563/0.418/0.146, PSNR:32.11, SSIM:0.8486, normG:3.13e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0220/0400, Loss:0.568/0.421/0.147, PSNR:32.50, SSIM:0.8554, normG:1.94e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0240/0400, Loss:0.555/0.408/0.147, PSNR:32.72, SSIM:0.8602, normG:6.04e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0260/0400, Loss:1.757/1.611/0.147, PSNR:31.45, SSIM:0.8603, normG:4.53e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0280/0400, Loss:0.977/0.831/0.146, PSNR:32.21, SSIM:0.8557, normG:1.16e+01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0300/0400, Loss:0.720/0.572/0.148, PSNR:32.80, SSIM:0.8625, normG:9.10e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0320/0400, Loss:0.707/0.559/0.147, PSNR:32.91, SSIM:0.8654, normG:8.81e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0340/0400, Loss:0.599/0.451/0.147, PSNR:33.18, SSIM:0.8681, normG:4.61e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0360/0400, Loss:0.606/0.457/0.149, PSNR:33.30, SSIM:0.8710, normG:8.60e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0380/0400, Loss:0.552/0.403/0.149, PSNR:33.41, SSIM:0.8724, normG:9.64e-01/1.00e+01, lrG/K:2.00e-03/5.00e-03Iter:0400/0400, Loss:0.544/0.395/0.149, PSNR:33.47, SSIM:0.8737, normG:2.81e+00/1.00e+01, lrG/K:2.00e-03/5.00e-03

Evaluation on Real Data

可能遇到报错(大家下载的代码可能不会遇到这个报错):

python demo_real.py --sf 2File "demo_real.py", line 52save_path = save_dir / (im_name + '_BSRDM.png')^IndentationError: unindent does not match any outer indentation level

解决方法,缩进,代码对齐即可

GPU 占用 3255MiB

10多分钟运行完毕(随着服务器卡性能波动)

运行输出如下

python demo_real.py --sf 201/20: Image: Lincoln , sf: 2, rho=0.202/20: Image: building , sf: 2, rho=0.203/20: Image: butterfly, sf: 2, rho=0.204/20: Image: butterfly2, sf: 2, rho=0.205/20: Image: chip , sf: 2, rho=0.206/20: Image: comic1 , sf: 2, rho=0.207/20: Image: comic2 , sf: 2, rho=0.208/20: Image: comic3 , sf: 2, rho=0.209/20: Image: computer , sf: 2, rho=0.210/20: Image: dog , sf: 2, rho=0.211/20: Image: dped_crop00061 , sf: 2, rho=0.212/20: Image: foreman , sf: 2, rho=0.213/20: Image: frog , sf: 2, rho=0.114/20: Image: oldphoto2, sf: 2, rho=0.215/20: Image: oldphoto3, sf: 2, rho=0.416/20: Image: oldphoto6, sf: 2, rho=0.217/20: Image: painting , sf: 2, rho=0.118/20: Image: pattern , sf: 2, rho=0.219/20: Image: ppt3 , sf: 2, rho=0.120/20: Image: tiger, sf: 2, rho=0.1

📕 真实数据集测试展示

这个地方,大家有兴趣,可以再用一些定量指标,对 RealSRSet 和 RealSRSet_BSRDM_x2 进行评估,这里就不做记录了

🍊 超分重建 psnr 和 SSIM计算(pytorch实现)HR (高清原图)LR ( 退化、下采样得到 LR )SR(超分重建得到的图片,可以称之为 SR )GT ( ground truth [ 真实数据 ] , 一般理解为 原图 ,如有异议,请评论区补充一下)

本次测试,LR 图像 2 倍 重建,效果如下:

🍊 LR 🍊 SR

📕 可视化展示

tensorboard --logdir logs --bind_all

运行效果如下

tensorboard --logdir logs --bind_all# 输出如下,说明 可视化成功-03-25 18:29:04.270270: I tensorflow/stream_executor/platform/default/:49] Successfully opened dynamic library libcudart.so.11.0TensorBoard 2.6.0 at http://墨理学AI-106:6006/ (Press CTRL+C to quit)

浏览器,通过 IP : 6006 端口号、即可成功访问,可视化效果

📘 训练

训练部分,官方暂未更新

📕 附源码+论文

官方后续可能会更新代码,这里仅提供此次博文对应源码给大家:

后续会补充,可以先关注 墨理学AI

关键词:

0325

代码目录结构如下

tree -L 2.├── camera_isp│ ├── __init__.py│ ├── ISP_implement_cbd.py│ ├── noise_synthetic│ └── __pycache__├── demo_real.py├── demo_synthetic.py├── environment.yml├── figures│ ├── degradation.png│ └── framework.jpg├── LICENSE├── logs│ └── events.out.tfevents.1648200212.wave-106.4260.0├── network│ ├── common.py│ ├── __init__.py│ ├── non_local_dot_product.py│ ├── __pycache__│ └── skip.py├── options│ └── options1.json├── __pycache__│ ├── SSIM.cpython-38.pyc│ ├── train.cpython-38.pyc│ └── utils_bsrdm.cpython-38.pyc├── README.md├── ResizeRight│ ├── interp_methods.py│ ├── LICENSE│ ├── __pycache__│ ├── README.md│ └── resize_right.py├── SSIM.py├── testsets│ ├── gen_kernel_uniform.py│ ├── kernels_synthetic│ ├── RealSRSet│ ├── RealSRSet_BSRDM_x2│ └── Set14├── train.py└── utils_bsrdm.py16 directories, 26 files

📕 这篇文章可以带给我们的思考

用传统 机器学习相关算法,进行网络创新设计,这种需要结合一些图像处理基础知识只能说这类研究,亦是属于,SISR、超分领域研究的一个方向后续想到什么,有机会再补充吧

📙 一起学 A I

墨理的博客还有很多,深度学习环境搭建、计算机视觉、目标检测、SISR、图像修复、风格转换、等领域类似干货博文,小伙伴可自行查阅

🎉作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️❤️过去的每一天、想必你也都有努力、祝你披荆斩棘、未来可期

🍊 深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【基础安装—认真帮大家整理了】

🍊 点赞 👍 收藏 ⭐留言 📝 都是博主坚持写作、更新高质量博文的最大动力!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。