第三方美颜sdk人脸识别的流程以及代码分析

news2024/11/23 15:49:28

小编曾经多次提到过人脸检测和人脸是被技术,那么这些算法在第三方美颜sdk中有用吗?答案是肯定的,不止有用,而且还非常重要。我们可以将人脸识别算法分为基础层算法与应用层算法,开头提到的人脸检测,实际上是人脸识别的基础层算法。
基础层算法,相当于人脸的预处理。一张人脸,首先要经过人脸检测、特征关键点处理,质量模型过滤之后,才能到应用层算法做处理,并应用到实际场景中。基础层算法的优劣,很大程度上会影响最终改的人脸识别准确率和效果。
我们先来了解一下基础算法:
第三方美颜sdk
一、人脸检测
1、定义
将一张照片或一段视频中的人脸检测出来,并输入人脸矩阵坐标。
2、作用
用于截取人脸,用于后续的人脸比对、人脸搜索等算法。
3、原理
二分类模型,通过深度学习训练样本识别是否是人脸。

二、特征关键点
1、定义
检测到人脸后,将人脸的特征点标记出来,每个特征点都有属性,能表示是脸部位置。
2、作用
人脸摆正对齐:实际场景中,抓取的人脸一般不是正方向的,需要摆正后再进行人脸比对、搜索等;人脸处理:美颜sdk应用中的贴纸等人脸特效,需要检测到人脸特征关键点后,再对关键部位进行针对性处理。
3、原理
将人脸照片的关键点都坐上标记,通过深度学习、分类模型,让算法能检测到特征点并识别特征点的属性。
第三方美颜sdk

三、代码分析
//
// GPUImageMovieComposition.m
// Givit
//
// Created by Sean Meiners on 2013/01/25.
//
//

#import “GPUImageMovieComposition.h”
#import “GPUImageMovieWriter.h”

@implementation GPUImageMovieComposition

@synthesize compositon = _compositon;
@synthesize videoComposition = _videoComposition;
@synthesize audioMix = _audioMix;

  • (id)initWithComposition:(AVComposition*)compositon
    andVideoComposition:(AVVideoComposition*)videoComposition
    andAudioMix:(AVAudioMix*)audioMix {
    if (!(self = [super init]))
    {
    return nil;
    }

    [self yuvConversionSetup];

    self.compositon = compositon;
    self.videoComposition = videoComposition;
    self.audioMix = audioMix;

    return self;
    }

  • (AVAssetReader*)createAssetReader
    {
    //NSLog(@“creating reader from composition: %@, video: %@, audio: %@ with duration: %@”, _compositon, _videoComposition, _audioMix, CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, _compositon.duration)));

    NSError *error = nil;
    AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.compositon error:&error];

    NSDictionary *outputSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)};
    AVAssetReaderVideoCompositionOutput readerVideoOutput = [AVAssetReaderVideoCompositionOutput assetReaderVideoCompositionOutputWithVideoTracks:[_compositon tracksWithMediaType:AVMediaTypeVideo]
    videoSettings:outputSettings];
    #if ! TARGET_IPHONE_SIMULATOR
    if( [_videoComposition isKindOfClass:[AVMutableVideoComposition class]] )
    [(AVMutableVideoComposition
    )_videoComposition setRenderScale:1.0];
    #endif
    readerVideoOutput.videoComposition = self.videoComposition;
    readerVideoOutput.alwaysCopiesSampleData = NO;
    [assetReader addOutput:readerVideoOutput];

    NSArray *audioTracks = [_compositon tracksWithMediaType:AVMediaTypeAudio];
    BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) );
    AVAssetReaderAudioMixOutput *readerAudioOutput = nil;

    if (shouldRecordAudioTrack)
    {
    [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES];

      readerAudioOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks:audioTracks audioSettings:nil];
      readerAudioOutput.audioMix = self.audioMix;
      readerAudioOutput.alwaysCopiesSampleData = NO;
      [assetReader addOutput:readerAudioOutput];
    

    }

    return assetReader;
    }

@end

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

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

相关文章

Python程序设计-第1章Python程序基础

第1章Python程序基础一.预习笔记 1.1 Python简介: Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido Van Rossum于1989年发明。Python的第一个公开发行版于1991年发行。 1.2 Python开发环境搭建: python解释器的安装&#…

2017 hypernetworks 笔记

HYPERNETWORKS 这篇文章来自谷歌的一篇文章 Introduction 这篇文章中提出了一种方法:使用一个小网络(hypernetwork),小网络的作用是给一个larger network(main network)来生成权重,这个main ne…

结构型模式

1.代理模式 提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理结构 抽象主题类:通过接口或抽象类声明真实主题和代理对象实现的业务方法真实主题类:实现抽象主题中的具体业务&#xff0c…

小程序API

小程序APIapi介绍api类型示例小程序api-网络请求示例合法域名npm基础应用核心步骤npm下载vant-weapp组件库核心步骤api介绍 小程序开发中,会使用到很多内置的功能,这些功能都被封装到小程序的api中了。比如 弹出提示框发送网络请求等上传文件、下载文件…

centos的官网下载和vm16虚拟机安装centos8【保姆级教程图解】

centos8的官网下载和vm16虚拟机安装centos8【保姆级图解】centos下载vm虚拟机安装centos可能出现的问题vcpu-0centos下载 centos官网:https://www.centos.org/ 进入官网后,点击Download 选择 Centos Stream 8 x86_64,并且点击进入 然后会出现国内的…

穿越寒冬 向新而行 | 智和信通2022年度年终总结大会圆满落幕

岁序更迭,新程再启,2022年在挑战与成就中谢幕。日迈月征,朝暮轮转,2023年在希望中启航。2023年1月13日,北京智和信通技术有限公司(以下简称“智和信通”)召开2022年度年终总结大会。会议全面总结…

Tp5 通过crontab 执行定时任务

声明:此处为ThInkCmf 为例:在主题中的command 中新建php文件如图在PHP文件中设置脚本名称及注释,并编写业务逻辑。protected $output ;/*** 作者:执着* 说明:定义脚本名称及添加注释* param setName:定义脚本名称* pa…

【Python百日进阶-数据分析】Day227 - plotly的子图

文章目录一、Plotly 图形工厂子图1.1 垂直图形工厂图表1.2 水平表格和图表1.3 垂直表格和图表二、表格和图表子图三、地理子图四、混合子图和 Plotly Express一、Plotly 图形工厂子图 Plotly 的 Python API 包含一个图形工厂模块,其中包含许多包装函数,…

可执行文件的装载

装载方式回顾一下操作系统的知识,程序执行的时候需要的指令和数级都必须在内存中时,程序才能正常运行,最简单的方式就是将指令和数级全部加载到内存中,这样肯定可以顺利执行,但这样的方式对内存大小来说是一个考验。因…

python中的socket网络编程

目录 一.服务端开发 1.什么是Socket网络编程 2.基于Socket完成服务端程序开发 步骤 演示 二.客户端开发 步骤 演示 一.服务端开发 1.什么是Socket网络编程 socket(简称套接字)是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于…

Git系列:入门必备指令详解

Git系列:入门必备指令详解总览高频指令参考资料总览 常用指令使用流程如下图: workspace:工作区staging area:暂存区/缓存区local repository:版本库或本地仓库remote repository:远程仓库 ——引用自&…

线程学习笔记

线程 出现原因 MP3多个模块放在一个进程中,CPU处理能力,播放可能不连续;放在多个进程中,资源传递、进程维护等开销很大 进程相比于进程,地址空间直接共享 定义 线程是进程的执行流程,除了线程&#xf…

WPF之调用Iconfont

一、调用iconfont 1、首先再Iconfont中新建一个项目,注意修改font family 2、将在线的icon添加到项目中 3、下载安装包到本地 4、更改本地的fontfamily格式如下‘./路径文件夹名/#***’ ***是指再iconfont中的fontfamily 注意如果显示为口 可能是路径不对 如果…

数据结构——栈和队列

目录 一、栈(Stack) 1、定义 2、顺序结构模拟实现栈和常用方法 (1).栈的顺序存储 (2).基本方法 3、栈的链式结构与顺序结构对比 (1).对比 4、区分概念 (1&#x…

JavaScript 库之 vanilla-tilt(一个平滑的 3D 倾斜库)

JavaScript 库之 vanilla-tilt(一个平滑的 3D 倾斜库)参考获取vanilla-tilt特点使用示例使用1. data-tilt2. VanillaTilt.init()优先级示例配置选项其他参考 项目描述GitHub前往Vanilla-tilt.js前往 获取 Vanilla-tilt.jsGitHubnpm npm install vanil…

【开发环境】JRE 裁剪 ② ( 裁剪 bin 目录下的 dll 动态库文件 | 压缩 rt.jar 文件 )

文章目录一、裁剪 lib 目录下的 jar 文件二、压缩 rt.jar 文件参考博客 : 精简jre1.8精简jre步骤裁剪JRE(嵌入式设备的java环境移植) 资源下载地址 ( 本篇博客的资源快照 , 不是最终版的裁剪效果 ) : https://download.csdn.net/download/han1202012/87389091 JRE 裁剪分为三…

Pytorch深度学习【十五】

微调 网络架构 一个神经网络一般可以分成两块 特征抽取将原始像素变成容易线性分割的特征线性分类器来做分类 微调 思路—将相同功能的网络及其参数直接进行迁移使用,而并不是通过重新学习,只改变部分层次即可 训练 是一个目标数据集上的正常训练任务…

老杨说运维 | 2023,浅谈智能运维趋势(二)

(文末附视频,一键观看精彩内容) 前言: 上文提到了智能运维现状中的变化趋势以及 上文提到了智能运维现状中的变化趋势以及过往误区,老杨认为智能运维的体系化建设还需从抓牢数据治理为起点,以终为始做好规…

miniconda虚拟环境安装使用jupyter notebook及相关

一、安装jupyter 1创建miniconda虚拟环境。(前面文章讲过了) 2在创建的虚拟环境下,conda install ipython jupyter 3在该环境下执行jupyter notebook。 注意:此时打开的jupyter notebook内核Python 3(ipykernel)对应该虚拟环境&am…

数据安全治理 1

数据安全治理应以数据为中心,多元化主体共同参与,兼顾发展与安全。 数据安全总体视图,包含了体系,维度,目标,实践。 制度建设 技术体系,如加密、脱敏等手段,进行数据全生命周期的管…