图片清晰度增强 超分辨率

您所在的位置:网站首页 Python图像增强 图片清晰度增强 超分辨率

图片清晰度增强 超分辨率

2023-03-20 03:25| 来源: 网络整理| 查看: 265

起因:

很久以前拍的有纪念意义的图片清晰度不够,老婆不满意。。。

作为算法工程师要从熟悉的领域解决问题。。。

调研:

想要得到较好的效果就要对该领域有一定了解(至少要知道有哪些算法,哪个效果好。。。)

调研发现图片清晰度增强这种需求是一种专门的研究领域;

超分辨率(Super-Resolution,SR)指的是将低分辨率图像转换为高分辨率图像的技术。低分辨率图像由于像素数量较少,因此其细节和清晰度不如高分辨率图像。通过超分辨率技术,可以将低分辨率图像还原为高分辨率图像,从而提高图像的清晰度和细节,使其更适合于一些应用场景。超分辨率技术通常使用机器学习的方法,通过训练一个模型,将低分辨率图像映射到高分辨率图像。常用的方法包括插值法、基于稀疏表示的方法、基于样本的方法、基于深度学习的方法等。其中,基于深度学习的超分辨率方法已经得到广泛的应用和验证,如SRCNN、VDSR、RCAN、EDSR等。超分辨率技术在很多领域都有应用,例如数字图像处理、计算机视觉、医学成像、无人驾驶、卫星图像等。在这些领域中,高分辨率图像的清晰度和细节对于提高系统的性能和精度非常重要,超分辨率技术可以有效地提高图像的质量,从而提高应用的效果和准确性。NTIRE与PIRM

该领域有专门的挑战赛,且已经在该领域有一定的影响力,要进行相关研究可以从相关论文和排名入手;

NTIRE超分辨率挑战赛:由CVPR的NTIRE Workshop组织,从2017年开始每年举办一次。PIRM超分辨率挑战赛:由Perceptual Image Restoration and Manipulation组织,从2018年开始每年举办一次。

这些挑战赛的具体情况可以在官方网站上了解到,每次比赛都会发布数据集和规则,以及评估标准和排名等信息。关于每次比赛的冠军情况,可以在比赛官网或相关学术论文中找到。由于每次比赛的数据集和评估标准不同,所以不同年份的冠军算法也有所不同。

常用网络

简单调研了一下常用的图片清晰度增强网络

以下是一些基于深度学习的图片清晰度增强网络:

SRCNN(Super-Resolution Convolutional Neural Network):是一种基于卷积神经网络的超分辨率技术,可以提高图像的分辨率和清晰度。VDSR(Very Deep Super-Resolution):是一种非常深的超分辨率技术,采用了多个卷积层来提高图像的分辨率和清晰度。EDSR(Enhanced Deep Super-Resolution):是VDSR的改进版本,通过改进网络结构和训练方式,进一步提高了超分辨率的性能。RCAN(Residual Channel Attention Networks):是一种基于残差学习和通道注意力机制的超分辨率技术,可以更好地保留图像细节和纹理。SRGAN(Super-Resolution Generative Adversarial Networks):是一种基于生成对抗网络(GAN)的超分辨率技术,可以生成更加逼真的高清图像。ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks):是SRGAN的改进版本,通过改进网络结构和训练方式,进一步提高了超分辨率的性能,并且可以处理更加复杂的图像。

最后选用ESRGAN进行测试(因为这个项目github上星最多,readme写的也不错。。)

代码运行DependenciesPython 3PyTorch >= 1.0 (CUDA version >= 7.5 if installing with CUDA. More details)Python packages: pip install numpy opencv-python Clone github repo.git clone https://github.com/xinntao/ESRGAN cd ESRGAN

2. 将需要增强的文件放入./LRfolder

3. 下载权重

官方提供了两个权重地址根据需求自行下载

https://drive.google.com/drive/u/0/folders/17VYV_SoZZesU6mbxz2dMAIccSSlqLecY https://pan.baidu.com/s/1-Lh6ma-wXzfH8NqeBtPaFQ

4. 运行

python test.py

5. 结果在./results文件夹

6. 报错。。。

RuntimeError: CUDA out of memory. Tried to allocate 962.00 MiB (GPU 0; 3.95 GiB total capacity; 1.33 GiB already allocated; 236.81 MiB free; 2.59 GiB reserved in total by PyTorch)

解决方法:

import torch torch.cuda.empty_cache()

在代码运行前清零一下内存还是不行,看来是笔记本太垃圾了。。

7. 云服务器

这种需求租一个就不太合适,选一个免费的

google colab

8. 配置环境

在google colab上运行一遍以上的代码

将图片放入google drive,google colab可以比较方便的挂载google drive

from google.colab import drive drive.mount('/content/drive')

分配的显卡 :Tesla T4

环境:NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.0

9. 运行成功

10. 发现改进版。。

Real-ESRGAN

作者说效果更好,看了一下还有脸部增强试试;

写了一份ipynb文件,可以直接在google colab上运行

! git clone https://github.com/xinntao/Real-ESRGAN.git %cd Real-ESRGAN ! pip install basicsr # facexlib and gfpgan are for face enhancement ! pip install facexlib ! pip install gfpgan ! pip install -r requirements.txt ! python setup.py develop ! wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P weights ! python inference_realesrgan.py -n RealESRGAN_x4plus -i "" -o "" --face_enhance

效果也还行,解决



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3