人脸检测之给照片加上眼镜

news2024/12/25 11:33:03

人脸检测


文章目录

  • 人脸检测
  • 一、背景
  • 二、UV空间融合法
  • 三、总结与不足
  • 四、参考


一、背景

给人脸图像加眼镜在很多领域都有应用。比如修图换造型、眼镜店眼镜试戴、戴眼镜人脸识别等。
给人脸加眼镜的难点在于难以做到自然逼真,且人脸多种多样,角度多变,还存在饰物、头发等遮挡等。
目前主流的技术包括:直接贴图、3D模型匹配合成、GAN(生成对抗网络)等技术。
本文要介绍另外一种UV空间融合的方法,结合了直接贴图与3D模型生成的优点。该方法在京东faceX-zoo中用来给人脸及口罩,受其启发,我们尝试用来给人脸加眼镜。
在这里插入图片描述

二、UV空间融合法

其示意图如下:
在这里插入图片描述

请添加图片描述
整体步骤如下:
(1)人脸检测与关键点:对参考glasses face 图片进行face detect, 并得到key landmark points
(2)人脸对齐抠图。
(3)使用3D人脸重建技术建模3维人脸模型,本文使用prnet方法进行3维人脸重建,得到3D人脸的UV纹理图。
(4)在PS中,使用索套工具将(b)中的眼镜抠下来得到眼镜纹理图(c)。
(5)对不带眼镜的图片重复上述(1-3)步骤。
(6)将(c)(e) 两幅UV纹理图进行融合,眼镜纹理图为4通道(RGBA),alpha通道作为融合因子。
(7)进融合后的纹理图及3D人脸模型投影render到2维,即可得到带眼镜的人脸。

为了丰富眼镜的多样性,我们获得了多张眼镜UVmap图像
在这里插入图片描述
对另一人脸数据集进行加眼镜操作:
原图:
在这里插入图片描述

加眼镜后:
在这里插入图片描述

对于大角度人脸,依然有不错的匹配效果。
在这里插入图片描述

三、总结与不足

基于UV空间融合法的方法作为一种快速且易实施的加眼镜的方式,可以获得基本的戴眼镜效果。其优缺点都很明显。
优点:基于3维人脸重建,可自适应不同角度的人脸;眼镜素材丰富且获得简单;不需要复杂的渲染即可得到眼镜反光、半透视、有色眼镜等特效;能很好的保持原图的人物面部属性。
缺点:人脸yaw角度稍大效果欠佳。眼镜像是涂在皮肤上的感觉,缺乏立体感。因为眼镜图片是基于单张正脸图片抠出来的,眼镜腿等细节部分存在缺失。

四、参考

https://github.com/JDAI-CV/FaceX-Zoo
https://github.com/YadiraF/PRNet
https://github.com/YadiraF/face3d

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

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

相关文章

HCIP——BGP综合实验

BGP综合实验 一、实验拓扑二、实验要求三、实验步骤1、配置接口IP地址与环回地址2、AS2配置OSPF3、配置BGP,建立对等体4、发布路由5、配置路由反射器6、做空接口、汇总以及宣告7、建立GRE隧道8、查看BGP路由表9、测试 一、实验拓扑 二、实验要求 1,AS1存…

关于ETL的两种架构(ETL架构和ELT架构) qt

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库&#xf…

Tomcat8安装并启动服务教程

目录 一、安装JDK 1.检查Linux版本信息 2.官网下载jdk 3.将下载的压缩包上传到Linux主机上 4.安装jdk到指定目录 5.配置环境变量 6.检测 二、安装tomcat 1.官网下载tomcat的安装包 2.将下载的包上传到自己的Linux主机上 3.安装tomcat到指定目录 4.为了方便&#xf…

uni-app 微信小程序自定义导航栏

一、效果图 二、导航栏的组成 上面的导航栏主要由状态栏(就是手机电量显示栏)和小程序的导航栏组成,android手机一般为48px,ios手机一般为44px 三、开发步骤 1、设置navigationStyle:custom {"path": "pages/v…

P2498 [SDOI2012] 拯救小云公主

题目 思路 伊艳二分 这个题比较难的地方就是如何判断在当前r的情况下能否到达终点 我们可以用并查集来判断两个点是否连接&#xff0c;再加两个点&#xff1a;0和n1 代码 #include<bits/stdc.h> using namespace std; #define _p(x) ((x)*(x)) const int maxn3005; co…

三言两语说透koa的洋葱模型

Koa是一个非常轻量化的Node.js web应用框架,其洋葱圈模型是它独特的设计理念和核心实现机制之一。本文将详细介绍Koa的洋葱圈模型背后的设计思想,以及它是如何实现的。 洋葱圈模型设计思想 Koa的洋葱圈模型主要是受函数式编程中的compose思想启发而来的。Compose函数可以将需…

MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法

首先我们了解下这个漏洞是什么&#xff1f; MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件&#xff0c;可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。 MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在…

openEuler22.03安装 filebeat启动失败

报错详情 runtime/cgo: pthread_create failed: Operation not permitted runtime/cgo: pthread_create failed: Operation not permitted SIGABRT: abort PC=0x7faeea51af1f m=8 sigcode=18446744073709551610goroutine 0 [idle]: runtime: unknown pc 0x7faeea51af1f stack:…

pycharm出现python test运行报错(pytest模式)

pycharm出现python test运行报错 一、python test 执行代码报错二、删除运行配置三、修改pycharm默认配置为 unittests四、成功&#xff01; 一、python test 执行代码报错 二、删除运行配置 三、修改pycharm默认配置为 unittests 四、成功&#xff01;

【EI/SCOPUS会议征稿】第三届电气工程与计算机技术国际学术会议(ICEECT 2023)

第三届电气工程与计算机技术国际学术会议 2023 3rd International Conference on Electrical Engineering and Computer Technology 往届均已完成EI、SCOPUS检索 继ICEECT2021、ICEECT2022顺利举办&#xff0c;往届所录用论文均已完成出版及EI核心检索。第三届电气工程与计算…

招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计 tbms

&#xfeff;功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&…

Vue引入与Vue拦截原理

1. vue引入 第一种方法&#xff1a;在线引入 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 第二种方法&#xff1a;本地引入 2. Vue拦截原理——例题 el用于绑定id&#xff0c;data用于定义数据如下例题 <!DOCTYPE html&…

初学者入门进阶吉他推荐,卡马F1和VEAZEN费森VZ90系列怎么选?详细对比评测,哪一款更符合你的首选!

在新手入门单板吉他圈里&#xff0c;KEPMA卡马F1系列和VEAZEN费森VZ90系列是国内品牌一直都很热销的吉他型号&#xff0c;那么&#xff0c;今天就给大家做一个对比&#xff0c;新手们可以通过各方面评测分析&#xff0c;理性的看看哪把琴适合你买。希望对不知道如何选一把合适吉…

05|Oracle学习(UNIQUE约束)

1. UNIQUE约束介绍 也叫&#xff1a;唯一键约束&#xff0c;用于限定数据表中字段值的唯一性。 1.1 UNIQUE和primary key区别&#xff1a; 主键/联合主键每张表中只有一个。UNIQUE约束可以在一张表中&#xff0c;多个字段中存在。例如&#xff1a;学生的电话、身份证号都是…

三言两语说透柯里化和反柯里化

JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术&#xff0c;可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化的概念、实现原理和应用场景&#xff0c;然后介绍反柯里化的概念、实现原理和应用场景&#xff0c;通过大量的代码示例帮助读…

[SSM]SpringMVC详解

目录 一、SpringMVC简介 1.1什么是MVC 1.2什么是SpringMVC 1.3SpringMVC优点 1.4SpringMVC优化的方向 1.5SpringMVC执行的流程 1.6基于注解的SpringMVC程序 二、SpringMVC注解式开发 2.1RequestMapping定义请求规则 2.1.1指定模块名称 2.1.2对请求提交方式的定义 2…

好用的低代码开发平台是什么样的?

一、好用的低代码开发平台是什么样的&#xff1f; 从企业角度来说&#xff0c;优化流程&#xff0c;提升企业运行效率&#xff1b;节省成本&#xff0c;提高企业效益&#xff1b;维护方便&#xff0c;即改即用&#xff1b;一键升级&#xff0c;方便实用&#xff1b; 从开发者角…

JVM | 从类加载到JVM内存结构

引言 我在上篇文章&#xff1a;JVM | 基于类加载的一次完全实践 中为你讲解如何请“建筑工人”来做一些定制化的工作。但是&#xff0c;大型的Java应用程序时&#xff0c;材料&#xff08;类&#xff09;何止数万&#xff0c;我们直接堆放在工地上&#xff08;JVM&#xff09;…

企业如何有效保护文件传输的安全性

文件传输是现代商业世界中每个企业日常操作的必需品。但是&#xff0c;传统的文件传输方式&#xff0c;如电子邮件和网络共享&#xff0c;并不总是安全可靠。黑客攻击、网络钓鱼和数据泄露等风险时刻存在。因此&#xff0c;企业需要采取措施保障文件传输的安全性。本文将介绍如…

Shell脚本学习-case条件语句

case条件语句相当于多分支的if/elif/else条件语句&#xff0c;但是它更规范工整。常被应用于实现系统服务启动脚本等企业应用场景中。 语法结构&#xff1a; case "变量" in值1)指令1...;;值2)指令2...;;*)指令3... esac 说明&#xff1a; 1&#xff09;case语句…