关键词:
导读
Mediapipe是Google开源的一个跨平台模型部署项目
除此之外,Mediapipe
还提供了大量的开源模型
我们能够很方便的使用MediaPipe
将模型部署在Android
、IOS
、Desktop
、Web
以及IOT
设备上。接下来我们看看如何使用MediaPipe
来部署我们的模型
安装MediaPipe
MediaPipe
支持在多个平台以及多种编程语言使用,这里就不一一介绍了,主要介绍在python安装方法
#创建虚拟环境,建议使用python3.7的环境
conda create -n mp_env python==3.7
#激活环境
source activate mp_env
#安装mediapipe
pip install mediapipe
使用MediaPipe实现人脸关键点检测
这里我们主要使用Face Mesh
这个项目在Python上为例来介绍如何使用MediaPipe
,更多其它的项目请参考MediaPipe的Solutions
Face Mesh
是用来检测人脸的3D landmarks,它一共检测了468
个人脸关键点,它能够实时的运行在移动设备上。利用检测到的468个人脸关键点,我们可以做出很多好玩的AR特效
- Python检测3D landmarks
import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_face_mesh = mp.solutions.face_mesh
#检测单张图片的人脸3D landmarks
#用来存放图片的路径
IMAGE_FILES = []
#设置绘制点线的粗细和点的半径
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
with mp_face_mesh.FaceMesh(
static_image_mode=True,#设置图片检测人脸landmarks
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)
#图片的预处理,将BGR格式的图片转为RGB
results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
if not results.multi_face_landmarks:
continue
annotated_image = image.copy()
#在图片上绘制landmarks
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())
#绘制连的轮廓
mp_drawing.draw_landmarks(
image=annotated_image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_CONTOURS,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_contours_style())
#绘制虹膜
mp_drawing.draw_landmarks(
image=annotated_image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_IRISES,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_iris_connections_style())
#保存绘制后的图片
cv2.imwrite('/tmp/annotated_image' + str(idx) + '.png', annotated_image)
# 利用电脑的摄像头来检测人脸的landmarks
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
cap = cv2.VideoCapture(0)
with mp_face_mesh.FaceMesh(
max_num_faces=1,
refine_landmarks=True,
min_detection_confidence=0.5,
min_tracking_confidence=0.5) as face_mesh:
while cap.isOpened():
success, image = cap.read()
if not success:
print("Ignoring empty camera frame.")
# If loading a video, use 'break' instead of 'continue'.
continue
# To improve performance, optionally mark the image as not writeable to
# pass by reference.
image.flags.writeable = False
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = face_mesh.process(image)
# Draw the face mesh annotations on the image.
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
if results.multi_face_landmarks:
for face_landmarks in results.multi_face_landmarks:
mp_drawing.draw_landmarks(
image=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())
mp_drawing.draw_landmarks(
image=image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_CONTOURS,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_contours_style())
mp_drawing.draw_landmarks(
image=image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_IRISES,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_iris_connections_style())
# Flip the image horizontally for a selfie-view display.
cv2.imshow('MediaPipe Face Mesh', cv2.flip(image, 1))
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
- 其它语言的代码
JavaScript
和Android
的源码请参考代码示例
参考
- https://github.com/google/mediapipe
- https://google.github.io/mediapipe/solutions/face_mesh.html
- https://google.github.io/mediapipe/
零代码工具15款企业级零代码开发平台推荐,总有一款是你心仪的
云原生时代,你用上了哪些零代码平台工具了吗?你有哪些实用的零代码工具推荐吗?今天我就和大家分享一些我了解到的实用工具清单!从启动网站、构建工作流程自动化和开发应用程序,零代码平台都可... 查看详情
各协议授权详情
...http://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html下面是更多开源协议的一个表格任君选择,总有一款是你的菜。不过先来了解一些下方表格中出现的用词的解释:协议和版权信息(Licenseandcopyrightnotice):在代码中保留作者提供的协议... 查看详情
19款windows实用软件推荐,满满的干货,总有一款是你必备的
https://post.smzdm.com/p/745799/ 追加修改(2018-08-2012:28:23):一些追加内容:很多人都在吐槽为什么推荐Clover,这里我说明一下,就我了解到的信息这个软件的原作者因为技术能力原因,把代码交给了一个公司(或者什么团队)吧。这... 查看详情
python实用小工具了解一下,总有一款是你需要的
1.实现简单探测使用socket模块,connect()方法建立与指定IP和端口的网络连接;revc(1024)方法将读取套接字中接下来的1024B数据通过函数实现通过def()关键字定义,示例中定义扫描FTPbanner信息的函数:迭代实现OS模块os.pa... 查看详情
windows热门的八款绘图软件总有一款是你想要
很多刚刚开始学习或刚工作的设计专业新人,遇到的棘手问题就是找不到趁手的设计软件,也不知道如何加强操作。这篇文章我就来给大家分享八个windows系统可用的八个热门绘图软件供大家挑选。Pixso——一款国内出品... 查看详情
六大接口管理平台,总有一款适合你的!
...可以跨整个API生命周期进行开发,从设计和文档到测试和部署。Swagger框架三核心:YApi部署流程介绍YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。它可以帮助开发者轻松创... 查看详情
什么猫咪最受欢迎?python爬取全网猫咪图片,哪一款是你最爱的(代码片段)
前言采集目标网页资源地址工具准备开发工具:pycharm开发环境:python3.7,Windows11使用工具包:requests项目思路解析做爬虫案例首先需要明确自己的采集目标,白又白这里采集的是当前网页的所有图片信息,... 查看详情
什么猫咪最受欢迎?python爬取全网猫咪图片,哪一款是你最爱的(代码片段)
前言采集目标网页资源地址工具准备开发工具:pycharm开发环境:python3.7,Windows11使用工具包:requests项目思路解析做爬虫案例首先需要明确自己的采集目标,白又白这里采集的是当前网页的所有图片信息,... 查看详情
翻译:deeplearning深度学习平台huggingface开源代码和技术构建训练和部署ml模型(代码片段)
...个社区和数据科学平台,提供:使用户能够基于开源(OS)代码和技术构建、训练和部署ML模型的工具。一个广泛的数据科学家、研究人员和ML工程师社区可以聚集在一起分享想法、获得支持并为开源项目做出贡献的地方。2.&... 查看详情
翻译:deeplearning深度学习平台huggingface开源代码和技术构建训练和部署ml模型(代码片段)
...个社区和数据科学平台,提供:使用户能够基于开源(OS)代码和技术构建、训练和部署ML模型的工具。一个广泛的数据科学家、研究人员和ML工程师社区可以聚集在一起分享想法、获得支持并为开源项目做出贡献的地方。2.&... 查看详情
分享36个c源码,总有一款适合您(代码片段)
C源码分享36个C源码,总有一款适合您下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。源码下载链接:https://pan.baidu.com/s/1WTLgtQ2J5gfZdj-LMEYnEA?pwd=nimr 提取码... 查看详情
如何「增强阅读体验」「csdn浏览器助手」带你实现
...粹阅读功能」体验纯净的快乐3.众多插件任你挑选,总有一款是你的菜4.个人希望增加的功能5.总结1.传送门「CSDN浏览器助手」插件官网传送门https://t.csdnimg.cn/bKUP俗话说得好:浏览器再狗,有了插件也能吼。浏览器用... 查看详情
可视化大屏的几种屏幕适配方案,总有一种是你需要的(代码片段)
假设我们正在开发一个可视化拖拽的搭建平台,可以拖拽生成工作台或可视化大屏,或者直接就是开发一个大屏,首先必须要考虑的一个问题就是页面如何适应屏幕,因为我们在搭建或开发时一般都会基于一个固... 查看详情
分享111个java源码,总有一款适合您(代码片段)
Java源码分享111个Java源码,总有一款适合您源码下载链接:https://pan.baidu.com/s/1fycjYHA7y6r-IH8H7v5XKA?pwd=ag8l 提取码:ag8l下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载... 查看详情
硬核推荐15个最火的spring实战开源项目!总有一款适合你!
哔哩哔哩在线演示视频: https://www.bilibili.com/video/av92191212Guide哥注:下面这些推荐的项目几乎都和SpringBoot有关,毕竟这年头没有理由再搞SSM/SSH这些东西了。商城系统Guide哥注:下面的商城系统大多比较复杂比如mall,如果没有Ja... 查看详情
最流行的自动化测试工具,总有一款适合你(附部分教程)(代码片段)
...地定位自己,跟上软件测试的趋势。这份清单包含了开源和商业的自动化测试解决方案。1)SeleniumSelenium可能是网页应用中最流行的开源自动化测试框架。起源于2000年,10多年来不断地完善,Selenium成为许多Web自动... 查看详情
夏季刮油蔬菜排行榜!第一名你绝对想不到!
...体内垃圾,还是减肥神器一起看看这七大减肥蔬菜排行榜总有一款是你的菜!7 7 生菜生菜的含水量很高,高达95%以上,每100克仅15千卡的热量。生菜的营养素种类比较全面,适当多吃些生 查看详情
最适合上班族操作的3种fu业,总有一款适合你
最适合上班族操作的3种FU业,总有一款适合你!#上班族副业#电商运营最适合我们上班族操作的3种副业的模式,总有一个适合你。针对不想做韭菜的上班族吗?我强烈推荐你可以尝试这3种副业,干好了,... 查看详情