来自腾讯AI实验室的Real-ESRGAN将模糊老照片和视频修复成高清晰(一些错误处理)

news2024/12/26 23:31:02

        Real-ESRGAN:Enhanced Super-Resolution GAN:增强的超分辨率的对抗生成网络,对于GAN相信大家都比较熟悉,前有阿尔法狗,现有很多GAN的延伸版本,StyleGAN1~3系列以及DragGAN对于图片的生成和编辑,出来的效果都很惊艳。
        一些旧照片,时代比较久远了,那个时候的像素不够,所以有点模糊,但这都是一种美好回忆,如果能够修复成高清晰的那就好了。这里的Real-ESRGAN就是对这些模糊照片进行处理,生成高清晰的照片,老旧的视频,颜色和分辨率也是比较差,也可以使用Real-ESRGAN进行修复成高清晰的视频。

1、安装环境

1.1、安装前提条件

Python >= 3.7 和 PyTorch >= 1.7 

一般本人习惯新建一个虚拟环境来安装(建议看完本文章之后再安装):
conda create -n mypytorch python=3.8
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

安装好了之后就激活环境:activate mypytorch

1.2、克隆仓库

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN 
当然在克隆的时候,有时会出现下面这样的错误
fatal: unable to access 'https://github.com/xinntao/Real-ESRGAN.git/': Failed to connect to github.com port 443: Timed out
有时是网络问题,如果多次试了还是不行,那最简的办法就是将https修改成http,哈哈泰裤辣。

1.3、安装依赖包

依然推荐加上豆瓣镜像,下载速度快很多

pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com basicsr
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com facexlib
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com gfpgan
pip install -r requirements.txt
python setup.py develop

1.4、预训练模型

安装好了之后,我们来测试下:
python inference_realesrgan.py -n RealESRGAN_x4plus -i 1.png -o newimgs
如果没有下载预训练模型:RealESRGAN_x4plus.pth
在推理阶段将自动进行下载:

当然也可以自己手动先下载(推荐):RealESRGAN_x4plus.pth预训练模型
然后放到\Real-ESRGAN\weights这个权重目录里面即可,建议使用迅雷下载,虽然文件不大,不过下载速度很慢,所以一般都用迅雷快很多。

2、生成效果比较

我们来看几张效果,本人的一些老照片有点模糊,修复之后,清晰度真的非常不错,而且皮肤更好了,做了美颜效果。

老照片修复

当然有兴趣的还可以使用其他的预训练模型,比如:RealESRGAN_x4plus_anime_6B.pth
RealESRGAN_x4plus_anime_6B.pth预训练模型下载
试下效果会怎么样。
视频也可以,在论文里面也有地址,Demo需要科学上网,有兴趣的可以去试试。
python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i 1.png -o newimgs 

这样就会在newimgs文件夹里面生成高清晰的照片了

3、错误处理

在安装之后,运行时会出现一些常见的错误,我们一起来看下

3.1、CUDA不可用

Testing 0 1
Error "slow_conv2d_cpu" not implemented for 'Half'
If you encounter CUDA out of memory, try to set --tile with a smaller number.

没有CUDA的支持,不能实现半精度。于是查看CUDA的状态是否可用:

torch.cuda.is_available()

奇怪的是返回 False

明明上面已经安装了CUDA的,这种情况,一般是版本匹配问题,试着换一个版本重新安装下:
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
恩,没有问题。返回True

3.2、显存不足

Error CUDA out of memory. Tried to allocate 236.00 MiB (GPU 0; 2.00 GiB total capacity; 1.42 GiB already allocated; 0 bytes free; 1.57 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
If you encounter CUDA out of memory, try to set --tile with a smaller number. 

这个就是显存不足了,本人配置比较低,1050的显卡,一些大点的模型基本都很吃力,所以平时测试的时候一般是调低batchnum,图片的输入分辨率,另外就是将需要用到GPU的进程先结束掉,节省一部分出来。所以这个模型基本上能搞定,有兴趣的可以去试试。

在线Demo:https://arc.tencent.com/en/ai-demos/imgRestore
可执行文件:各种OS的执行文件
github地址:https://github.com/xinntao/Real-ESRGAN
论文地址:ESR_Generative_Adversarial_Networks_ECCVW_2018_paper.pdf
后期有时间将论文和源码全部看一遍再发出来一起学习下。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat顶层架构、服务部署、虚拟主机配置

Tomcat顶层架构、服务部署、虚拟主机配置 一、Tomcat概述1、Tomcat介绍2、Tomcat三个核心组件3、Java Servlet4、JSP 二、Tomcat顶层架构三、Tomcat请求过程四、Tomcat服务部署1、关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、设置JDK环境变量4、…

Java中导出Excel步骤总结(案例学习)

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

怎么把伴奏提取出来?分享两个方法给大家~

对于音乐制作人和音乐爱好者而言,创作个人音乐作品是一项令人兴奋的体验。然而,有时我们希望使用一首现有歌曲的伴奏来创作自己的音乐作品,但却无法找到原版伴奏。为了解决这一难题,现在可以使用记灵在线工具来提取音频伴奏。本文…

瞬息全宇宙:苹果发布虚拟现实头显Vision Pro

WWDC23巅峰时刻 熬夜看了WWDC苹果发布会,传闻了N年的苹果MR(增强现实)产品,终于来了。 One More Thing,库克说出了这句话,巅峰时刻终于到来! 新的交互 名字叫Vision Pro,虽然这名…

《计算机网络——自顶向下方法》精炼——4.1-4.3.0

书读得越多而不假思索,你就会觉得你知道的很多;而当你读书而思考的越多的时候,你就会越清楚的看到,你知道的还很少——伏尔泰 文章目录 概述转发、路由选择网络服务模型 虚电路和数据报网络虚电路网络数据报网络 路由器工作原理 概…

chatgpt赋能python:Python如何出图

Python如何出图 作为一种广泛使用的编程语言,Python不仅仅可以用于数据分析、机器学习等领域,还可以用来生成图像。在这篇文章中,我们将介绍Python如何出图,并将重点放在与SEO相关的方面。 1. Python出图的基本原理 Python有多…

刷题记录:哈希 | leetcode-2352. 相等行列对 2023/6/6

2352. 相等行列对 这题还是非常简单的。如果用模拟的方法,时间复杂度要达到O(n^3)了,感觉不太可。 这回学聪明了,没有一上来就想着暴力模拟。用哈希的办法,可以把时间复杂度降为O(n^2)。 我的思路是先转置矩阵,再用…

Matlab论文插图绘制模板第99期—正负柱状图

在之前的文章中,分享了很多Matlab柱状图的绘制模板: 进一步,再来分享一种特殊的柱状图:正负柱状图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载…

HTML+JS 实现手机号码归属地查询功能

手机号码归属地 API 是一种提供号码归属地信息的接口,它通过与运营商和电信数据库交互,根据手机号码查询相关归属地信息并返回结果。通过使用手机号码归属地API,开发者可以轻松地集成号码归属地查询功能到他们的应用程序和服务中,…

简介- 谷粒商城项目微服务架构图

目录 项目前置知识一、前后端分离开发,分为 内网部署 和 外网部署。二、用户是通过使用 客户端 来完成各种的功能三、网关的作用四、Sentiel组件五、Feign组件六、OAuth2.0认证中心七、SpringSecurity组件八、关于数据存储的解决方案九、定位bug十、注册中心十一、配…

Java 进阶 -- Lambda 表达式

Lambda Expressions 匿名类(anonymous classes)的一个问题是,如果匿名类的实现非常简单,比如一个只包含一个方法的接口,那么匿名类的语法可能会显得笨拙和不清晰。在这些情况下,您通常试图将功能作为参数传…

Spark RDD计算总分与平均分

文章目录 一,提出任务二,实现思路三,准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS 四,完成任务1、在Spark Shell里完成任务(1)读取成绩文件,生成RDD&…

从Java BIO到NIO再到多路复用,看这篇就够了

从一次优化说起 近期优化了一个老的网关系统,在dubbo调用接口rt1000ms时吞吐量提升了25倍,而线程数却由64改到8。其他的优化手段不做展开,比较有意思的是为什么线程数减少,吞吐量却可以大幅提升?这就得从IO模型说起&a…

消息队列kafka使用技巧和常见问题

目录 【消息队列概述】 【kafka】 消息丢失问题 消息重复问题 消费顺序问题 消息积压问题 kafka集群部署 【消息队列概述】 消息队列主要解决应用耦合、异步消息、流量削锋等问题,是大型分布式系统不可缺少的中间件。消息生产者 只管把消息发布到 MQ 中而不…

【CMake 入门与进阶(4)】 CMakeLists.txt 语法规则基础及部分常用指令-续(附使用代码)

由于篇幅问题本篇接着上文继续介绍 CMakeLists.txt 语法规则基础及常用指令。 aux_source_directory aux_source_directory 命令会查找目录中的所有源文件&#xff0c;其命令定义如下&#xff1a; aux_source_directory(<dir> <variable>)从指定的目录中查找所有…

开发者工具调试

Console控制台 F12打开控制台 选择其他tab面板时&#xff0c;ESC打开Console面板enter直接执行Console的代码&#xff0c;shiftEnter输入多行代码 Source面板 左键单机行号设置断点&#xff0c;或在代码中添加debugger;右键单机行号设置条件断点&#xff08;条件表达式为tr…

PowerShell install 一键部署mariadb10.11

mariadb MariaDB数据库管理系统是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可 MariaDB的目的是完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。在存储引擎方面&#xff0c;使用XtraDB来代替MySQL的Inno…

ChatGPT 国内镜像网站大全(含GPT-4.0版本)之什么年代还在写传统文章。

前言&#xff1a; 临近期末&#xff0c;大量水课的节课作业都是论文&#xff0c;一篇就是几千字&#xff0c;这对于还要复习专业课的我们可以说是压力巨大&#xff1a;心理健康论文&#xff0c;安全教育论文&#xff0c;大学语文论文&#xff0c;书法赏析论文&#xff0c;劳动…

小议C++函数签名与模板返回类型

题记&#xff1a;什么事情都要追问一个为什么&#xff0c;真正理解了为什么&#xff0c;才能活学活用。 代码1 下面的代码能编译通过吗&#xff1f; #include <stdio.h> #include <stdlib.h>class X { public:int *get() { return new int(); }double *get() { r…

MATLAB矩阵的分解函数与案例举例

系列文章目录 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制​​​​​​ MATLAB求函数极限的简单介绍 文章目录 前言 1. 奇异值分解&#xff08;SVD&#x…