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

小编曾经多次提到过人脸检测和人脸是被技术,那么这些算法在第三方美颜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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值