腾讯的老照片修复算法,我把它搬到网上,随便玩

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
大家好,之前向大家介绍并跑通了腾讯开源的老照片修复算法(AI 黑科技,老照片修复,模糊变高清),同时我也提到官方提供的3个线上试玩版体验都不好。所以我微调了一下官方 Demo,使用最新的V1.3预训练模型且输出whole-image,大家先感受一下

GFPGAN + Gradio + Huggingface 这三者我都是刚接触,揉在一起还是挺好玩的。

下面我就将整个实现过程详细介绍一下

克隆官方Demo

GFPGAN 的官方 Demo 就属 Huggingface 体验还行,缺点是只输出人脸且使用的是老模型。

https://huggingface.co/spaces/akhaliq/GFPGAN

clone 之前先安装git lfs

LFS是Large File Storage的缩写,用了帮助git管理大的文件

sudo apt-get install git-lfs
git init # 这一步必须
sudo git lfs install 
# 安装完成克隆GFPGAN
git clone https://huggingface.co/spaces/akhaliq/GFPGAN

克隆后我直接运行了一下 python app.py,出现了两个报错,大家如果有遇到可以参考一下。
报错1:ERROR: Exception in ASGI application
解决pip install aiofiles

报错2:There is no current event loop in thread ‘Thread-2’
解决:参考这这篇文章
https://blog.csdn.net/SunshineKimi/p/12053914.html
具体就是在uvicorn的server.py 加上一句 new_loop = asyncio.new_event_loop()

Gradio

Huggingface 上的 GFPGAN Demo 是用 Gradio 实现的。

Gradio是MIT的开源项目,使用gradio,只需在原有的代码中增加几行,就能自动化生成交互式web页面,并支持多种输入输出格式,比如图像分类中的图>>标签,超分辨率中的图>>图等。同时还支持生成能外部网络访问的链接,能够迅速让他人体验你的算法。

Gradio 的定位类似于 Streamlit,但是更轻量(一行代码),因为它推荐的应用场景都是对“单个函数”进行调用的应用,并且不需要对组件进行回调。

https://www.gradio.app

顺便提一下,我之前已对 Streamlit 有详细介绍并开发了几个小东西:

  • 开发机器学习APP,太简单了
  • 为了这个GIF,我专门建了一个网站
  • 收手吧,华强!我用机器学习帮你挑西瓜
  • 耗时一个月,做了一个纯粹的机器学习网站

我也是第一次接触 gradio ,它的安装很简单:pip install gradio

从零学起我只看了官方文档,用法也只看了 Interface ,耗时半个小时。

# getting\_started
https://www.gradio.app/getting_started/
# docs
https://www.gradio.app/docs/
# github
https://github.com/gradio-app/gradio

代码修改

官方Demo的代码我只修改已下几处:

  • 修改model_path,直接将下载好的V1.3预训练模型放到了experiments/pretrained_models下。
  • 修改 inference(img),展现restored_img
restorer = GFPGANer(model_path='experiments/pretrained\_models/GFPGANv1.3.pth',upscale=2,arch='clean',channel_multiplier=2,bg_upsampler=bg_upsampler)def inference(img):input_img = cv2.imread(img, cv2.IMREAD_COLOR)cropped_faces, restored_faces, restored_img = restorer.enhance(input_img, has_aligned=False, only_center_face=False, paste_back=True)return Image.fromarray(restored_img[:, :, ::-1])

改完后可以python app.py先看一下效果:

它会自动生成一个本地静态交互页面,浏览器会自动跳转到 http://127.0.0.1:7860

那个gradio.app的链接可以分享,有效期 72 小时。

上传到Huggingface

step1:注册Huggingface账号

step2:创建Space,SDK记得选择Gradio

step3:克隆新建的space代码,然后将改好的代码push上去

git lfs install 
git add .
git commit -m "commit from $beihai"
git push

push的时候会让输入用户名(就是你的注册邮箱)和密码,解决git总输入用户名和密码的问题:git config --global credential.helper store

push完成就大功告成了,回到你的space页对应项目,就可以看到效果了。

不过Huggingface也时常500,大家多试试吧,毕竟免费。

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

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

相关文章

linux下查看文件及目录个数

linux下查看文件及目录个数1、查看当前文件和目录总数(不包括子目录):ls -l | wc -l 2、查看当前目录下文件个数(不包括子目录):ls -l |grep "^-"|wc -l 查看当前目录下文件个数(包括子目录)ls -lR |grep "^d"…

java的事务类型及定义

转载:什么是事务:首先,说说什么事务。我认为事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行&#x…

驱动开发 环境搭建(VS2008+WDK+DDKWzard)

这篇文章比较适合初学驱动,搭建一个自动化的环境对于开发来说是事半功倍啊; 开发驱动,首先就是搭建开发的环境。既然是开发windows下的驱动程序,那MS的开发工具是一定要的。现在vs都到2010了,所以,也不能总…

戏说领域驱动设计(十八)——内验

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475   验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证…

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

背景需求很简单,分析所有的设备的内存使用率,看那些设备的内存不够用是否需要加内存。。。下面的脚本逻辑,就是通过提取zabbix数据库中的hostid,在提取itemid。。然后通过item name过滤提取趋势数据,获取一天中最大的内…

Annotation版本的HelloWorld

hiberante 的 annotation历史: 在hibernate3以后,开始支持Annotation; 先有hiberante再有JPA,有了JPA标准之后,hibernate写了Annotation来支持JPA;所以 hibernate的annotation是JPA标准之下的,一般都直接用…

自己用java实现飞鸽传书 2 - 实现文件传输

第二步:实现文件传递。 上一步只是从服务端传递了一个字符串到客户端,这次需要对代码进行调整,实现从服务端获取文件,在客户端将文件存入目标地址。 调整后的代码: 服务端: import java.io.DataInputStream…

如何理解JavaScript中给变量赋值,是引用还是复制

一、JavaScript中值的类型 JavaScript中的值分为2大类:基本类型和引用类型。每种类型下面又分为5种类型。 基本类型: 数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false)&#x…

CommonCollection1反序列化链学习

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 CommonsCollection1 1、前置知识 1.1、反射基础知识 1.1.1、 对象与类的基础知识 类(class)&am…

【英语天天读】第一场雪

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ --Henry Wadsworth Longfellow The first snow came. How beautiful it was, falling so silently, all day long, all night long, on the mountains, on the meadows, on the roofs of the living, o…

性能测试的目的与类型

1.性能测试的目的 (1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策;(2)寻找系统瓶颈,进行系统调优;(4)检测软件中的问题;(5)验证稳定性、可靠性&#x…

求三位数的质数

没做出来啊&#xff0c;原来有这么多方法啊。首先&#xff0c;我连质数是什么都不知道&#xff01;质数&#xff1a;只能被本身和1整除的数帖子里回复了不少方法&#xff1a;class Zhishu {public static void main(String[] args) {int count0;for(int i1;i<100;i){count0…

[转]VS2010+MFC解析Excel文件中数据

本文转自&#xff1a;http://www.vcfans.com/2010/08/vs2010-mfc-excel-file-in-the-data-analysis.html 前两天折腾一个小功能&#xff0c;需求是解析Excel中的数据出来。网上一般使用的方案&#xff1a;1. ODBC当数据库来操作。2. 使用第三方的类库3. 使用COM调用Excel.exe中…

MySQL索引机制(详细+原理+解析)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 MySQL索引机制 永远年轻&#xff0c;永远热泪盈眶 一.索引的类型与常见的操作 前缀索引 MySQL 前缀索引能有效减小索引文…

War-Driving(战争驾驶***)

War-Driving总结性的文章 以后应该不会在到这方面过多的下功夫了。点我下载转载于:https://blog.51cto.com/0x007/1586376

array sort - 4 : merge sort

NULL转载于:https://www.cnblogs.com/roadmap99/p/6698809.html

带研发团队后的日常思考1 初级管理者的困惑

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 带研发团队后的日常思考1 初级管理者的困惑 前言&#xff1a; 本人于2020年4月开始接触管理工作到现在有2年的时间&#…

短连接生成器——让你的url地址长度变短

http://www.henshiyong.com/tools/sina-shorten-url.php 转载于:https://www.cnblogs.com/mangu-uu/archive/2012/10/15/2724290.html

JS函数调用的四种方法

js的函数调用会免费奉送两个而外的参数就是 this 和 arguments 。arguments是参数组&#xff0c;他并不是一个真实的数组&#xff0c;但是可以使用.length方法获得长度。 书上有说4中调用方式&#xff1a; 方法调用模式函数调用模式构造器调用模式apply调用模式下面我们来看看一…

Django项目引入NPM和gulp管理前端资源

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前言 之前写了一篇《Asp-Net-Core开发笔记&#xff1a;使用NPM和gulp管理前端静态文件》&#xff0c;现在又来用Django开发…