人脸网格/人脸3D重建 face_mesh(毕业设计+代码)

news2024/12/24 3:28:04

概述

Face Mesh是一个解决方案,可在移动设备上实时估计468个3D面部地标。它利用机器学习(ML)推断3D面部表面,只需要单个摄像头输入,无需专用深度传感器。利用轻量级模型架构以及整个管道中的GPU加速,该解决方案提供实时性能,对于实时体验至关重要。
此外,该解决方案还捆绑了Face Transform模块,弥合了面部地标估计和实用的实时增强现实(AR)应用之间的差距。它建立了一个度量的3D空间,并使用面部地标屏幕位置来估计该空间内的面部变换。
在这里插入图片描述

面部变换数据包括常见的3D基元,包括面部姿势变换矩阵和三角形面网格。在底层采用了一种轻量级的统计分析方法,称为Procrustes分析,以驱动强大、高效和可移植的逻辑。分析在CPU上运行,并在ML模型推断之上具有最小的速度/内存占用。

模型算法

我们的机器学习过程由两个实时深度神经网络模型组成,它们共同工作:一个检测器在完整图像上运行,并计算面部位置;一个3D面部地标模型在这些位置上运行,并通过回归预测近似的3D表面。准确地裁剪面部极大地减少了常见数据增强的需求,如由旋转、平移和缩放变化组成的仿射变换。
在这里插入图片描述

相反,它使网络能够将大部分容量专注于坐标预测准确性。此外,在我们的管道中,裁剪也可以基于上一帧中识别的面部地标生成,只有当地标模型无法再识别面部存在时,才会调用面部检测器重新定位面部。这种策略类似于我们的解决方案,它使用手掌检测器和手部地标模型。
该管道实现为使用面部地标模块中的面部地标子图的MediaPipe图,使用专用面部渲染器子图进行渲染。面部地标子图在内部使用来自面部检测模块的面部检测子图。

结论和代码

除了面部地标模型外,我们还提供另一个模型,它将注意力集中在语义上有意义的面部区域上,从而更准确地预测唇部、眼睛和虹膜周围的地标,但需要更多计算资源。它可以实现AR化妆和AR操纵等应用。
在这里插入图片描述

# For static images:
#全部代码 -----qq1309399183<---------
IMAGE_FILES = []
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
with mp_face_mesh.FaceMesh(
    static_image_mode=True,
    max_num_faces=1,
    refine_landmarks=True,
    min_detection_confidence=0.5) as face_mesh:
  for idx, file in enumerate(IMAGE_FILES):
    image = cv2.imread(file)
    # Convert the BGR image to RGB before processing.
    results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

    # Print and draw face mesh landmarks on the image.
    if not results.multi_face_landmarks:
      continue
    annotated_image = image.copy()
    for face_landmarks in results.multi_face_landmarks:
      print('face_landmarks:', face_landmarks)
      mp_drawing.draw_landmarks(
          image=annotated_image,
          landmark_list=face_landmarks,
          connections=mp_face_mesh.FACEMESH_TESSELATION,
          landmark_drawing_spec=None,
          connection_drawing_spec=mp_drawing_styles
          .get_default_face_mesh_tesselation_style())

全部代码私信会回复!

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

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

相关文章

Python QT5设计UI界面教程

简介&#xff1a;PyQT5开发常用知识&#xff0c;零基础上手&#xff0c;需配合我之前写的博文&#xff0c;配置好QT设计工具和ui文件转py文件的工具。博文为&#xff1a;使用Python PyQt5实现一个简单的图像识别软件&#xff1b;页面效果如下&#xff1a; 1.设计菜单栏 Contai…

[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(学习复习笔记)

1.1 数据结构的研究内容 计算机解决问题的步骤 从具体问题抽象出数学模型设计一个解此数学模型的算法编写程序&#xff0c;进行测试、调试&#xff0c;直到解决问题 计算机解决问题的过程中寻求数学模型的实质是 分析问题&#xff0c;从中提取操作的对象&#xff0c;并找出这些…

【iOS】Blocks

BlockBlocks概要什么是Blocks&#xff1f;Block语法Block类型变量截获自动变量值__block说明符Blocks的实现Block的实质Blocks概要 什么是Blocks&#xff1f; Blocks可简单概括为&#xff1a; 带有自动变量&#xff08;局部变量&#xff09;的匿名函数 在使用Blocks时&#x…

socket 编程实战(编写服务器程序 )

IP 地址格式转换函数 对于人来说&#xff0c;我们更容易阅读的是点分十进制的 IP 地址&#xff0c;譬如192.168. 1.110 、192.168.1.50&#xff0c;这其实是一种字符串的形式&#xff0c;但是计算机所需要理解的是二进制形式的 IP 地址&#xff0c;所以我们就需要在点分十进制…

代码随想录第三章读书笔记——数组

一.二分查找前提&#xff1a;数组为有序数组&#xff0c;数组中无重复元素&#xff0c;因为一旦有重复元素&#xff0c;使用二分查找法返回的元素下标可能不是唯一的&#xff0c;这些都是使用二分法的前提条件&#xff0c;当题目描述满足如上条件的时候&#xff0c;可要想一想是…

FPGA的GigE Vision IP相机图像采集方案设计,转换为千兆UDP,支持10G MAC

1 概述 GigE Vision是一个比较复杂的协议&#xff0c;要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的配置和图像采集功能&#xff0c;则只需要实现其中小部分功能即可。本文对原有GigE Vision协议的结构进行了裁剪&#xff0c;仅保留设备搜索…

Maven基本使用以及IDEA中配置使用的详细介绍

文章目录MavenMaven基本介绍Maven基本使用IDEA配置MavenIDEA配置MavenMaven坐标详解IDEA创建Maven项目IDEA导入Maven项目Maven依赖管理Maven Maven基本介绍 Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目对象模型(POM)的概念&#xff0c;通过一小段描述信息来…

GAMES101学习笔记——光栅化

一&#xff1a;什么是光栅化&#xff08;Rasterization&#xff09; 把空间里的物体画在屏幕上。 屏幕由一个个阵列排布的像素点组成&#xff0c;屏幕大小指宽度方向由width个像素点&#xff0c;高度方向由height个像素点。 像素点索引范围&#xff1a;&#xff08;0&#xf…

【Java开发】JUC进阶 03:读写锁、阻塞队列、同步队列

1 读写锁&#xff08;ReadWriteLock&#xff09;&#x1f4cc; 要点实现类&#xff1a;ReentrantReadWirteLock通过读写锁实现更细粒度的控制&#xff0c;当然通过Synchronized和Lock锁也能达到目的&#xff0c;不过他们会在写入和读取操作都给加锁&#xff0c;影响性能&#x…

黑马程序员SSM框架教程之学习笔记1

P44-SpringMVC入门案例 1.在pom.xml中导入坐标springMVC与servlet 2.创建一个SpringMVC控制器类 3.创建springMVC配置文件springMvcCponfig 4.定义一个servlet容器启动配置类&#xff0c;在里面加载spring的配置 5.在pom.xml文件中配置tomcat插件 运行结果显示 P45-springMVC入…

2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。

2023-03-05&#xff1a;ffmpeg推送本地视频至lal流媒体服务器&#xff08;以RTMP为例&#xff09;&#xff0c;请用go语言编写。 答案2023-03-05&#xff1a; 使用 github.com/moonfdd/ffmpeg-go 库。 先启动lal流媒体服务器软件&#xff0c;然后再执行命令&#xff1a; go…

linux通过nginx映射指定目录文件给外部访问

修改配置文件 #user www-data; #将user www-data;注掉改为root user root; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on; }http {### Basic Settings##sendfile on;tcp_nopush …

【C语言学习笔记】:三子棋具体步骤和代码

一、问题描述 用c语言实现三子棋。 二、基本流程 在写三子棋的代码之前&#xff0c;我们来看看实现这个游戏的逻辑&#xff1a; 1.菜单界面选择开始或者退出游戏。2.创建棋盘并初始化。3.打印棋盘。4.玩家落子(玩家输入行列坐标的方式来落子)&#xff0c;x’表示玩家落子。5…

既然有MySQL了,为什么还要有Redis?

目录专栏导读一、同样是缓存&#xff0c;用map不行吗&#xff1f;二、Redis为什么是单线程的&#xff1f;三、Redis真的是单线程的吗&#xff1f;四、Redis优缺点1、优点2、缺点五、Redis常见业务场景六、Redis常见数据类型1、String2、List3、Hash4、Set5、Zset6、BitMap7、Bi…

ESP32学习笔记01-环境搭建

本文参考博客https://blog.csdn.net/weixin_43599390/article/details/123944479 1.下载离线版本的 ESP IDF esp idf 下载地址 2.安装 esp idf 2.1应用修复,后,再下一步 2.2 2.3 2.4 2.5

跨屏设计规范

跨屏设计规范 以windows10x 为例&#xff0c;其在具体交互上&#xff0c;到底有哪些常见的交互模式和硬件要如何结合 6.1跨平台的双屏交互设计逻辑 这种那个品的设计范式&#xff0c;其实是跨平台的通用规则&#xff0c; 在很大程度上&#xff0c;这套交互逻辑是不受操作系统…

【CSS】CSS 复合选择器 ③ ( 并集选择器 | 并集选择器与后代选择器示例 )

文章目录一、并集选择器1、语法说明2、代码示例二、并集选择器与后代选择器示例1、添加注释2、HTML 结构3、后代选择器 14、后代选择器 25、并集选择器6、完整代码示例7、显示效果一、并集选择器 1、语法说明 并集选择器 可以选择 若干 基础选择器 选择出的 并集元素集合 ; 并集…

【亲测】Centos7系统非管理(root)权限编译NCNN

前言 由于使用的是集群&#xff0c;自己不具有管理员权限&#xff0c;所以以下所有的情况均在非管理员权限下进行安装&#xff0c;即该安装策略仅适用于普通用户构建自己的环境。 什么是NCNN ncnn是一款非常高效易用的深度学习推理框架&#xff0c;支持各种神经网络模型&#x…

文件异步多备常用方案

业务需求上经常存在需要对同一个文件进行双上传&#xff0c;上传到不同云存储桶&#xff0c;以防出现某一个云厂商因各种意外导致自身服务出现不可用的情况&#xff0c;当然&#xff0c;还有其他措施可以避免&#xff0c;现在只针对通过程序业务代码而双写存储的这个场景。 业务…

Java分布式解决方案(三)

文章目录&#x1f525;MySQL事务-MySQL中锁的分类&#x1f525;MySQL事务-MySQL中的死锁问题&#x1f525;MySQL事务-MySQL中锁的分类 MySQL中锁的分类 从本质上讲&#xff0c;锁是一种协调多个进程或多个线程对某一资源的访问的机制&#xff0c;MySQL使用锁和MVCC机制实现了…