您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
人脸算法SDK封装的人只在算法公司吗?
算法,的人,模型人脸算法SDK封装的人只在算法公司吗?
发布时间:2019-02-08加入收藏来源:互联网点击:
人脸算法SDK封装的人只在算法公司吗?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
这个肯定不一定啊。github上大牛多的是,而且很多大学也有很厉害的人,我下面主要介绍下人脸识别的主要算法,同时提供具体实现代码与模型文件,了解了算法之后你自己也可以封装SDK,我先在这里贴两个github链接,文章后面再细讲。
1.openface https://github.com/cmusatyalab/openface
2.insightface https://github.com/deepinsight/insightface
下面我将从以下几个方面为大家介绍人脸识别算法的发展与怎样应用算法构建sdk:
传统的人脸识别算法引入CNN后的人脸识别FaceNet算法的出现其他loss算法人脸识别模型轻量化的研究人脸检测的主流方式传统的人脸识别算法
在深度学习热门以前,人脸识别主要是用一些传统的方式在进行研究,之前比较主流的就是PCA降维后进行人脸识别,但是传统方式局限性很大,需要环境比较理想,对于光线,姿势等的鲁棒性太差,而且是一个闭合的分类识别,也就是只能做分类,判断是否属于某个特定的预知的人。传统的方法在opencv上有了很好的实现,自己也可以基于opencv做一定的封装。
引入CNN之后的人脸识别
而在深度学习热门以后,也开始逐渐有人用CNN来做人脸识别。但是这时候仅仅停留在使用利用CNN的siamese网络来提取人脸特征 ,然后利用SVM等方法进行分类,本质上还是一个分类问题,还是只能对预先放置的人脸进行识别。
这种情况直到谷歌推出了一个叫做FaceNet的算法,使人脸识别的方式发生了巨大的改变。
FaceNet算法的出现
FaceNeta主要有两大两点,第一是利用DNN直接学习到从原始图片到欧氏距离空间的映射,从而使得在欧式空间里的距离的度量直接关联着人脸相似度。这可是具有划时代意义的进步,使用距离度量的方式就可以让系统可以认识之前没有参加过训练的人,需要比较两个人是否为同一个人时,只需要将两张图片方式网络,得到输出,再计算两个输出之间的距离,如果小于某一阈值就为同一个人。这种算法本质上将一个分类问题转变成了一个距离度量问题,使得识别系统具有了开放性。
第二是引入triplet损失函数,使得模型的学习能力更高效。下面就是triplet损失函数的示意图。
triplet loss的主要思想是通过LDA思想训练分类模型,使得类内特征间隔小,类间特征间隔大。即使目标图像 与类内图片(同一个人)特征距离小,与类间图片(不同一个人)特征距离大。更多关于这个算法细节读者可以自行谷歌搜索一下研究。
我在文章开头写的openface是Brandon Amos等人基于FaceNet开发的一种深度学习人部识别系统,模型基于文章:FaceNet:为人脸识别统一的嵌入和聚类,通过Python和Torch来实现,以便能在在CPU或GPU上运行,并且支持也建议通过docker进行安装。
其他loss算法
在FaceNet提出了triplet loss之后,业界逐渐也出现了其他的loss算法,有些已经达到了目前state-of-art的效果,我在这里只是罗列下,具体各位可以关注我,后面我会推出人脸识别综述,与各种损失函数总结。主要有:
centerLosscontrastiveLossrangeLosslarge-marginl2-normAM-softmaxCosFaceArcFace在我文章开头贴出来的insightface里,对于主流的几个loss的算法都有识别,同时也提供了模型下载,各位可以关注一下。
人脸识别模型的优化
之前的FaceNet在训练完成后,模型文件将近100M,在手机端部署将变得非常难,主要太消耗用户流量。最近出现了一个新的算法,叫做MobileFaceNet,训练完成后模型只有4M左右,同时准备度也和FaceNet非常接近,里面主要是大量使用了1*1卷积和可分离卷积来减小模型大小。具体算法在上面的insightface中也有实现。
主流的人脸检测算法
目前主流的人脸检测算法为MTCNN,一个多任务级联的CNN,能够用于人脸检测与人脸对齐,同时网络结构也非常简单,训练完成后的模型也非常小,只有几M的大小。算法主要有有P-Net,R-Net,O-Net等CNN级联而成,不同的CNN具有不同的任务。以P-Net为例,它的主要结构如下图所示:
P-Net采用全卷积神经网络,去获得候选窗体和边界回归向量。同时,候选窗体根据边界框进行校准。然后,利用NMS方法去除重叠窗体。
整体的检测流程如下图所示:
具体MTCNN的原理以及更多人脸识别算法的介绍,欢迎大家关注我,我后面会发表文章进行详细讲解。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |