Windows 环境实战开源项目GFPGAN 教程

news2024/12/17 11:28:26

GFPGAN

GFPGAN(Generative Facial Prior-GAN)是由腾讯ARC(Applied Research Center)开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化,尤其在低质量人脸图像的超分辨率恢复方面表现出色。以下是GFPGAN的一些主要特点和功能:

  1. 高分辨率生成:GFPGAN能够生成高分辨率的人脸图像,在生成过程中能够保持细节和真实感。

  2. 人脸美化:GFPGAN可以对输入的人脸图像进行美化和优化,去除皱纹、瑕疵,增强肤色等。

  3. 多样性控制:用户可以通过调整参数来控制生成图像的风格和特征,例如改变年龄、性别、肤色等。

  4. 利用预训练人脸GAN的先验知识:GFPGAN利用预训练人脸GAN(如StyleGAN2)中蕴含的丰富和多样化的先验知识来指导人脸修复过程。

  5. 盲修复:GFPGAN不需要对输入图像有任何先验假设,可以实现真正的盲修复。

  6. 生成结果自然,身份一致性好:GFPGAN生成的结果更加自然,身份一致性好。

  7. 处理非常低质量的输入图像:GFPGAN可以处理非常低质量的输入图像。

  8. 支持对非人脸区域(背景)进行增强:GFPGAN还支持对非人脸区域(背景)进行增强。

  9. 易于部署:提供了无需CUDA扩展的“干净”版本,易于部署。

GFPGAN通过结合生成对抗网络(GAN)和门控频率先验技术,巧妙地结合了高频细节恢复与低频结构保持,旨在精确恢复图像的细节,同时保持人像的整体结构,从而实现更加自然、真实的结果。它的工作原理主要包括输入一张需要修复的人脸图像,利用预训练的人脸GAN提取丰富的人脸先验知识,设计一个GAN网络,生成器负责修复图像,判别器负责区分真实和生成的图像,在训练过程中,生成器学习如何利用人脸先验知识来修复输入图像。

过程

  1. 源码下载:https://github.com/TencentARC/GFPGAN

  2. 安装basicsr:pip install basicsr
    在这里插入图片描述

  3. 安装facexlib:pip install facexlib
    在这里插入图片描述

  4. 下载预训练模型:也可以直接下载放到本地项目对应位置

wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth -P experiments/pretrained_models

在这里插入图片描述
5. 直接推理: python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2;报错如下;;

  • 根据报错查了下原因,因为这个问题通常是由于在 PyTorch 2.0 以上的版本中,torchvision.transforms.functional_tensor 模块的命名发生了变化。在新版本中,该模块名前增加了一个下划线,正确的模块名应该是 torchvision.transforms._functional_tensor。因此,修改上面👆下载的basicsr源码中degradations.py文件中的导入库functional_tensor改成_functional_tensor 。 【所以最好还是重新配置一个纯净的pytorch虚拟环境最省事😄,别依赖已有的pytorch环境~~】
    在这里插入图片描述
  1. 继续推理: python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2
    在这里插入图片描述

  2. 下载下来的模型权重:detection_Resnet50_Final.pth、parsing_parsenet.pth
    在这里插入图片描述

  3. 结果:cmp、cropped_faces、restored_faces、restored_imgs四个文件夹
    在这里插入图片描述

  4. cmp文件夹:测试图像的人脸修复前后对比图,效果还是非常不错的。

  5. cropped_faces 文件夹:从测试图像集中裁剪出人脸部分原图
    在这里插入图片描述

  6. restored_faces 文件夹:存储修复增强后人脸图像
    在这里插入图片描述

  7. restored_imgs 文件夹:存储人脸修复增强后的完整图片。
    在这里插入图片描述

  8. 修复前后完整图片对比:修复增强后 🆚修复增强后
    在这里插入图片描述
    在这里插入图片描述

后续

  • 后续有时间根据源码训练自己的模型。

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

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

相关文章

链表的应用

尾删 int tail_del (linkListPtr S) { if(NULL S || empty(S)) { printf("失败\n"); return 0; } linkListPtr q S; for(int i0 ; i<S->len-1;i) { qq->next; } free(q->next); q->n…

一个小工具

院内感染监控系统 开发工具Delphi7 报表工具FastReport unit U_Ymjg;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, RzButton, ExtCtrls, RzPanel, ImgList, Grids, RzGrids, StdCtrls,RzCmboBx, DB, ADODB;typeTFrm_ym…

Python:程序中如何引用环境变量

应用场景&#xff1a;具有安全性的信息&#xff08;如密钥&#xff09;&#xff0c;为方式代码提交被同时提交到公共环境&#xff08;如git&#xff09;&#xff0c;可以通过环境变量配置后&#xff0c;在代码中直接引用。 优点&#xff1a;安全、复用性强、持久化&#xff08…

电力场景绝缘子缺陷识别分割数据集labelme格式1099张3类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;1099 标注数量(json文件个数)&#xff1a;1099 标注类别数&#xff1a;3 标注类别名称:["brokenpart","brokeninsulator…

C++ -- 哈希表封装实现unordered_map 和 unordered_set

本章内容分为源码看框架讲解和结构模拟实现两部分&#xff0c;源码框架是让我们了解容器结构在设计时的思路&#xff0c;模拟实现才是重点。因此如果在看源码结构式感到疑惑&#xff0c;不妨继续往下看&#xff0c;相信一切都会慢慢了解~ 源码及框架分析 在C98 / SGI-STL30版本…

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改&#xff0c;增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…

CSS学习记录12

CSS浮动 CSSfloat属性规定元素如何浮动 CSSclear属性规定哪些元素可以在清除的元素旁边以及在哪一侧浮动。 float属性 float属性用于定位和格式化内容&#xff0c;例如让图像向左浮动到容器的文本那里。 float属性可以设置以下值之一&#xff1a; left - 元素浮动到其容器…

IDEA搭建SpringBoot,MyBatis,Mysql工程项目

目录 一、前言 二、项目结构 三、初始化项目 四、SpringBoot项目集成Mybatis编写接口 五、代码仓库 一、前言 构建一个基于Spring Boot框架的现代化Web应用程序&#xff0c;以满足[公司/组织名称]对于[业务需求描述]的需求。通过利用Spring Boot简化企业级应用开发的优势&…

Redis应用—4.在库存里的应用

大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 渐进式写入 写入失败进行MQ补偿"的实现 7.库存扣减时"基于库存分片依次扣减 合并扣减 扣不了…

25. 深浅拷贝

一、什么是浅拷贝 只对对象的最顶层进行的拷贝称为 浅拷贝。我们可以用 copy 模块中的 copy() 方法实现浅拷贝。 import copya [11, 22, 33] b [44, 55, 66] c [a, b] d copy.copy(c)print(f"c: {c}") print(f"d: {d}") print(f"c d: {c d}&q…

【GCC】2015: draft-alvestrand-rmcat-congestion-03 机器翻译

腾讯云的一个分析,明显是看了这个论文和草案的 : 最新的是应该是这个 A Google Congestion Control Algorithm for Real-Time Communication draft-ietf-rmcat-gcc-02 下面的这个应该过期了: draft-alvestrand-rmcat-congestion-03

学习笔记:Verilog VHDL硬件描述语言简介及在线仿真Verilog环境

RTL Verilog VHDL HLS等概念 RTL Register Transfer Level&#xff0c;寄存器传输级。它是数字电路设计中的一种抽象层次&#xff0c;描述了电路中寄存器之间的数据传输和逻辑操作。RTL代码通常用Verilog或VHDL语言编写&#xff0c;是后续综合、仿真等工作的基础。 VHDL全名Ve…

druid图形化监控 + MyBatis优化器使用

文章目录 1.集成druid图形化监控1.配置application.yml2.测试访问 http://localhost:项目端口/druid 2.MyBatis优化器(显示完整sql)1.目录2.SqlBeautyInterceptor.java&#xff1a;sql拦截器3.MybatisConfiguration.java&#xff1a;将sql拦截器注入容器4.测试5.MyBatis优化器动…

1216作业

思维导图 作业 使用无名信号量实现输出春夏秋冬 #include <myhead.h> sem_t sem1,sem2,sem3,sem4; void *fun1() {while(1){sem_wait(&sem1);sleep(1);printf("春\n");sem_post(&sem2);} }void *fun2() {while(1){sem_wait(&sem2);sleep(1);prin…

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心&#xff1a;理解maven 项目模块化&#xff0c;继承&#xff0c;聚合 的含义 maven 项目模块化 含义 maven项目模块化&#xff1a;使用maven 构建项目&#xff0c;管理项目的方式&#xff0c;我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…

【Linux】自定义项目-进度条

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 准备工作&#xff1a;"\r"与"\n"字符 ①&#xff1a;基本含义 在C语言和Linux环境中&#xff0c;\r是回车符&#xff0c;\n是换行符&#xff0c;用于控制文本格式和输出…

OpenLinkSaas 2025年1月开发计划

先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中&#xff0c;让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API&#xff0c;来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…

电工电子技术实验:电压比较器及其应用电路

实验目的 1&#xff0e;了解电压比较器与运算放大器的性能区别&#xff1b; 2&#xff0e;掌握电压比较器的结构及特点&#xff1b; 3&#xff0e;掌握电压比较器电压传输特性的测试方法&#xff1b; 4&#xff0e;学习比较器在电路设计中的应用 实验原理 电压比较器是一…

代理 IP 行业现状与未来趋势分析

随着互联网的飞速发展&#xff0c;代理 IP 行业在近年来逐渐兴起并成为网络技术领域中一个备受关注的细分行业。它在数据采集、网络营销、隐私保护等多个方面发挥着重要作用&#xff0c;其行业现状与未来发展趋势值得深入探讨。 目前&#xff0c;代理 IP 行业呈现出以下几个显著…

旅游系统旅游小程序PHP+Uniapp

旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】