热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习系列48:超分模型RealESRGAN

1.模型介绍1.1退化模型首先训练数据使用了2个first-order:最后一步加入了振铃和过冲现象:1.2SRCNN将CNN用到超分领域的第一
1. 模型介绍

1.1 退化模型

首先训练数据使用了2个first-order:
在这里插入图片描述
最后一步加入了振铃和过冲现象:
在这里插入图片描述

1.2 SRCNN

将CNN用到超分领域的第一篇文章:
在这里插入图片描述
论文中卷积核和通道数的实验设置为:
在这里插入图片描述

1.3 SRGAN

SRGAN将GAN引入超分领域,用于解决如下问题:
1)高频细节(high-frequency details) 的丢失,整体图像过于平滑/模糊;
2)与人的视觉感知不一致,超分图像的精确性与人的期望不匹配(人可能更关注前景,而对背景清晰度要求不高)。

提出如下改进:

  • 新的backbone:SRResNet;
  • GAN-based network 及 新的损失函数:
  • adversarial loss:提升真实感(photo-realistic natural images);
  • content loss:获取HR image和生成图像的感知相似性(perceptual similarity),而不只是像素级相似性(pixel similarity);或者说特征空间的相似性而不是像素空间的相似性。
  • 使用主观评估手段,更加强调人的感知。

模型结构如下,Generator网络是SRResNet,论文使用了16个residual blocks;Discriminator网络为8次卷积操作(4次步长为2)+2次全连接层的VGG网络。
在这里插入图片描述

1.4 ESRGAN

enhanced SRGAN,主要解决细节模糊和伪影问题。

  • SRResNet网络结构的改进:
    1)移除BN,有利于去除伪影,提升泛化能力;
    2)使用Residual-in-Residual Dense Block (RRDB)作为基本构建模块,更强更易训练;
  • GAN-based Network的损失函数的改进:使用RaGAN (Relativistic average GAN)中的相对损失函数,提升图像的相对真实性从而恢复更多的纹理细节;
  • 感知损失函数的改进:使用VGG激活层前的特征值计算重构损失,提升了亮度的一致性和纹理恢复程度。
    在这里插入图片描述

2. 快速上手

2.1 各种资源

绿色版的exe文件参见github,支持windows,linux,mac和NCNN
在线版本:https://huggingface.co/spaces/akhaliq/Real-ESRGAN
使用方法:./realesrgan-ncnn-vulkan.exe -i 二次元图片.jpg -o 二刺螈图片.png -n realesrgan-x4plus-anime
参数如下:

Usage: realesrgan-ncnn-vulkan.exe -i infile -o outfile [options]...-h show this help-i input-path input image path (jpg/png/webp) or directory-o output-path output image path (jpg/png/webp) or directory-s scale upscale ratio (can be 2, 3, 4. default=4)-t tile-size tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu-m model-path folder path to the pre-trained models. default=models-n model-name model name (default=realesr-animevideov3, can be realesr-animevideov3 | realesrgan-x4plus | realesrgan-x4plus-anime | realesrnet-x4plus)-g gpu-id gpu device to use (default=auto) can be 0,1,2 for multi-gpu-j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu-x enable tta mode"-f format output image format (jpg/png/webp, default=ext/png)-v verbose output

目前已有的模型:
realesrgan-x4plus(默认)效果清晰,偏向于脑补;
reaesrnet-x4plus(效果模糊,偏向于涂抹)
realesrgan-x4plus-anime(针对动漫插画图像优化,有更小的体积)
realesr-animevideov3 (针对动漫视频)
这个是未来的计划:
在这里插入图片描述

2.2 github上原代码

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN
# 安装 basicsr - https://github.com/xinntao/BasicSR
# 我们使用BasicSR来训练以及推断
pip install basicsr
# facexlib和gfpgan是用来增强人脸的
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 experiments/pretrained_models

然后执行:

python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance

2.3 训练和微调

参考https://github.com/xinntao/Real-ESRGAN/blob/master/docs/Training_CN.md
微调时,可以使用程序自带的降级模型,也可以自备数据对。


推荐阅读
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了如何通过conda安装Selenium的wheel文件,包括查看环境、卸载旧版本、下载新版本的wheel文件以及安装操作的步骤。同时提供了使用清华源的方法。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
author-avatar
当我繁华尽落_821
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有