=====代码解读与实现=====
FACE 主要有 FACEHandler 和 FACEServer 两部分代码组成。两部分代码组成,由CONGFIG进行配置。
先看一下CONFIG的结构======CONFIG的结构======
两个卷积层的卷积神经网络(CNN),C++实现
*第一层:输入层
}
=====小结=FACE服务器搭建======FACEServer.cpp定义了端口和线程:Port 8086 / Threads 4定义了服务器指向: auto handler = std::make_shared<FACEHandler>(); auto server = folly::make_unique<ThriftServer>(); server->setPort(FLAGS_port); server->setNWorkerThreads(FLAGS_num_of_threads); server->setInterface(std::move(handler)); server->setIdleTimeout(std::chrono::milliseconds(0)); server->setTaskExpireTime(std::chrono::milliseconds(0));
IMC主要运用了深度学习框架以及健康且强大的Folly Futures库,对图像进行预先处理,并最终有效的实现图像的分类及识别。此项功能巧妙运用了Intelligent Personal Assistants, 结合人声与图像,为未来虚拟助手的发展,提供了平台及机遇。======人脸识别解决方案======FACEHandler.cpp编写了FACE的解决方案,应用Caffe深度学习框架。#重要概念:network、weightsFACEHandler::FACEHandler()为最重要的函数#原理:对原始数据分离训练集和测试集转换为caffe可以处理的lmdb格式根据设定的Net网络和Solver配置文件进行训练得到训练的模型#步骤:在我们组选择好训练数据和测试数据之后,就需要进行数据处理了,处理方法主要分为3个步骤。##人脸检测##人脸特征点检测##人脸的对齐。采用卷积神经网络(CNN)方法,并且采用CNN最后一层的激活值输出作为features,不同的人脸区域放入CNN中提取特征,形成了互补、过完全的特征表示(form complementary and over-complete representations)。通过深度卷积网络来学习高级的过完全特征(有监督),CNN的最后一层激活值作为输出,#具体细节:采用多尺度,多人脸区域,训练多个CNN网络,最后得出一张人脸图像的多维度特征。CNN的结构如下: #说明:上面的Face patches 是进过对齐过后的的人脸块,也就是说已左(右)眼为中心的人脸区域块,嘴角为中心的人脸区域块等等,这样就有多个不同的输入块输入到CNN中。最后再把不同的块所输出的特征连接起来,就形成了一个最终一张人脸的特征。然后再用各种分类器对其特征进行分类。采用Max-Pooling,softmax。#输入图像:多个人脸正方形块(因为后面要考虑到是全局图像还是局部图像,且需要考虑到尺度问题),其中局部图像是关键点(每个图像一个关键点)居中,不同的区域大小和不同的尺度图像输入到CNN中,其CNN的结构可能会不相同,最后将所有的特征级联起来。#特点:在训练CNN中,训练数据的类别越多,其性能越好,但是会在训练模型中出现问题,也就是太慢。CNN的输出是特征,而不是输出类别。分类采用Joint Bayesian 来进行人脸的verification;也采用了神经网络来比较,但是联合贝叶斯的效果比较好; =====小结=====FACE主要运用了深度学习框架以及健康且强大的Folly Futures库和Caffe开源深度学习框架,对图像进行预先处理,并最终有效的实现图像的分类及识别。
====语音识别ASR====