热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

人脸识别库于仕琪老师库地址

https:github.comShiqiYu知乎关于人脸识别实时滤镜讨论:映客直播中人脸特效是基于人脸识别还是AR?有什么可以使用的SDK么ÿ

https://github.com/ShiqiYu

 

=================================================

知乎关于人脸识别实时滤镜讨论:

映客直播中 人脸特效是基于人脸识别还是AR?有什么可以使用的SDK么?


在直播中可以添加这样的特效,可以准确的识别人脸器官的位置,即使头部扭动也可有相应的角度上的自适应,这个有什么来源的sdk可以研究接入么,这个属于人脸识别还是AR呢?
---------------------------
作者:匿名用户
链接:https://www.zhihu.com/question/52892092/answer/205076802
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本人来说说该这是如何实现的吧。关键字:人脸检测+图片 + opengles。

我来说说Android上面是如何实现的吧。通过Camera接口获取预览数据,然后将图像所在的Surface绑定到opengles 的EGLSurface中,opengles通过从Surface中读取EXTERNAL_OES类型的纹理Texture到帧缓冲区Framebuffer中(即将相机的图像帧读入FBO中),然后就是通过opengles将png 或者其他格式的图片贴纸读入生成相应的纹理Texture。有了贴纸的Texture,接下来就是将贴纸绘制到帧缓冲区Framebuffer中。绘制完成,通过eglSwapBuffers将EGLSurface中渲染完成的帧交换显示到前台,这就是问题中所贴出来的预览界面。

上面流程几乎所有有贴纸特效的相机、直播推流端等应用都基本走的流程,不管是不是用ffmpeg做推流,特效这块,基本上都需要接入opengles来做渲染,一方面是减少CPU使用,降低能耗,降低发热量,另一方面是渲染速度,gpu专门做渲染这一块的,在实时渲染方面,CPU软实时渲染的效率是完全不够的。这个过程需要什么支撑?那就是人脸检测技术,我将贴纸纹理渲染到预览帧中,需要拿到准确的人脸关键点,这个是必须的。人脸检测基本上都是用opencv来检测的,也有第三方的SDK可以接入,比如Face++,美颜相机等存在贴纸特效的应用几乎都在用这个,可以免费试用,自己从头开发的话,准确率和检测时间是个大问题,人脸关键字检测的算法比较成熟了,但传统的算法跑在手机上还是做一些调整的,尤其是这种实时渲染的,得至少控制在一帧(16ms)内,因为除了检测,我们还需要做其他的渲染,比如美颜、美白、磨皮、瘦脸等,哪怕是用opengles来做,也是勉强够用而已。举个例子,美颜相机的贴纸相机,在1080P分辨率的手机上,默认Texture 的大小也仅仅是480 x 864(存在虚拟键)、540 x 960(不存在虚拟键),也就是说,预览帧的分辨率是这么大的,而不是屏幕的1080P(目前市面上的美颜类相机,预览帧(Camera PreviewSize)几乎没有达到1080P的,都是渲染完成后在放大的。除了美颜相机, Camera360的预览texture是764 x 1024, 全屏是720 x 1280,但显示则是1080 x 1440、1080 x 1920,各家的相机流程差不多,渲染方案的话有单FBO 和多FBO两种,Camera360 就是单一FBO渲染的,美颜相机则是多FBO渲染的)。渲染完成后再放大显示到屏幕上的,因为美颜相机处理做贴纸,还做了实时美颜、磨皮、美白、瘦脸、瘦下巴、放大眼睛等操作,这些操作都是非常耗时的,哪怕是这样,美颜相机在红米Note2 上渲染出来的实时预览帧率也只面前到20帧,Nexus 5X 实时预览帧率大约23帧左右。大部分手机的预览帧率最大支持值在30fps左右,能够拿来做渲染的时间还是非常不足的。

那么有没有相关的开源项目呢?有的,比如比较出名的相机项目MagicCamera就是其中一个,github地址: wuhaoyu1990/MagicCamera 你可以参考下。贴纸跟滤镜的渲染过程是一样的,其中多了个人脸关键点检测,也就是说,在用opengles绘制贴纸之前,需要做相关的定位、贴纸的三维位置调整,比如人脸朝向,贴纸要跟着人脸朝向绘制,否则方向是不对的。人脸朝向的话,也有专门的算法,但是如果要做到实时渲染,那么在人脸检测之后再做人脸朝向的话,效率就太低了,这里面可以用检测的关键点简单结算得到朝向的,比如简单地用人的眼睛位置,通过Math.atan2(distX, distY),通过眼睛中心点的距离(distX, distY)算方位角,虽然准确率不够,而且考虑的因素也不全,但在实时渲染预览情况下也没有更好的办法,因为你首先得保证预览的帧率。得到人脸朝向的方位角后,我们就可以拿着这个方位角对贴纸的位置绕Y轴旋转,通过对投影矩阵旋转得到三维物体在二维平面上的坐标位置,再对贴纸进行渲染。这样就能够做到立体感的贴纸了。

基本上做完上面的一些处理,

================================
https://www.zhihu.com/question/52892092


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 1.活体相关文献综述调研参考:https:blog.csdn.netCVAIDLarticledetails845673192.基于LBP纹理特征的检测1)基于LBP_256特征提 ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
author-avatar
王老虎在江湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有