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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)