首页 文章 精选 留言 我的

精选列表

搜索[人脸支付],共10000篇文章
优秀的个人博客,低调大师

Facebook超牛的人脸识别能力

当问到两张陌生照片中的面孔是否是同一个人时,一个人类答对的几率是97.53%。Facebook新开发的软件面对这一挑战的分数是97.25%,不论明暗的变化,也不论照片中的人是否直面着镜头。 这比起之前的面部匹配软件来说是一个显著进步,展示出名为深度学习的人工智能新手段的威力。Facebook及其竞争对手去年在深度学习上大举押注。这一人工智能领域包括使用模拟神经元网络,来学习在大规模数据中识别某些模式。 “通常不会有这么大的进步,”雅尼夫·泰格曼(Yaniv Taigman)说。他是Facebook人工智能团队的一员,这一研究小组是在去年建立,致力于探索深度学习如何帮助该公司。“我们的新软件已非常接近人类的表现,”泰格曼说。他还指出,比起早些时候执行同样任务的软件,新软件的错误率已经减少了超过四分之一。 Facebook的新软件名为Dee

优秀的个人博客,低调大师

人脸识别中的Procruster analysis应用

本文中,我们通过Procrustes analysis来处理特征点,Procrustes analysis算法可以参考:http://en.wikipedia.org/wiki/Procrustes_analysis 在数学上,Procruster analysis就是寻找一个标准形状,然后把所有其它特征点数据都和标准形状对齐,对齐的时候采用最小平方距离,用迭代的方法不断逼近。下面通过代码来了解如何实现Procrustes analysis。 //Procrustes分析的基本思想是最小化所有形状到平均形状的距离和。 Mat shape_model::procrustes(const Mat &X, const int itol, //最大迭代次数 const float ftol //精度 ) { X矩阵就是多副样本图像76个特征点组成的矩阵,共152行,列数为图像的个数,每列表示一个样本图像特征点的x,y坐标。 int N = X.cols,n = X.rows/2; //所有的形状向量(特征)对齐到原点,即每个向量的分量减去其平均值,每列是一个形状向量。 Mat P = X.clone(); for(int i = 0; i < N; i++) { Mat p = P.col(i); //第i个列向量 float mx = 0,my = 0; for(int j = 0; j < n; j++) //x,y分别计算得到平均值。 { mx += p.fl(2*j); my += p.fl(2*j+1); } mx /= n; my /= n; for(int j = 0; j < n; j++) { p.fl(2*j) -= mx; p.fl(2*j+1) -= my; } } //优化缩放和旋转 Mat C_old; for(int iter = 0; iter < itol; iter++) { 注意下边的一行代码,会把每个图像对齐到原点后的特征点x,y分别加起来,求平均值,得到一个152*1的矩阵,然后对该矩阵进行归一化处理,归一化后的形状称作标准形状或者权威形状。 Mat C = P*Mat::ones(N,1,CV_32F)/N; //计算形状变换后的平均值 normalize(C,C); //canonical shape 标准形状(对x-进行标准化处理) if(iter > 0) //当两个标准形状或者标准形状的误差小于某一值,这里是ftol则,停止迭代。如果达到最大迭代次数,也退出迭代。 { norm函数默认是矩阵各元素平方和的根范式 if(norm(C,C_old) < ftol) break; } C_old = C.clone(); //记下当前的矩阵,和下一次进行比较 for(int i = 0; i < N; i++) { Mat R = this->rot_scale_align(P.col(i),C); //求两个形状之间的误差满足最小二乘时的旋转矩阵。即相当于两个形状"最靠近"时,需要的旋转的仿射矩阵 rot_scale_align函数求每副图像的特征点向量和平均向量满足最小二乘法时候的旋转矩阵。即求得a,b值组成的旋转缩放矩阵(注意:这儿表示旋转和缩放矩阵的组合,便于线性表示)。 rot_scale_align函数的代码如下,原理如下面的两个图,即当前特征向量中的每个特征点经过旋转缩放变化的值和标准形状(权威形状)对应的特征点值差的平方和最小,结果得到一个2*2的旋转缩放矩阵。 Mat shape_model::rot_scale_align(const Mat &src, const Mat &dst) {//construct linear systemint n = src.rows/2;float a=0,b=0,d=0;for(int i = 0; i < n; i++) { d += src.fl(2*i) * src.fl(2*i ) + src.fl(2*i+1) * src.fl(2*i+1); //x*x+y*y a += src.fl(2*i) * dst.fl(2*i ) + src.fl(2*i+1) * dst.fl(2*i+1); b += src.fl(2*i) * dst.fl(2*i+1) - src.fl(2*i+1) * dst.fl(2*i ); } a /= d; b /= d;//solved linear systemreturn (Mat_<float>(2,2) << a,-b,b,a); } for(int j = 0; j < n; j++) { //应用相似变换,对形状中的每一个点,应用仿射矩阵。 变化后,该特征点向量会靠近平均特征向量。之后经过反复迭代,直到平均向量和上次比较变化很小或达到最大迭代次数,退出迭代。 float x = P.fl(2*j,i),y = P.fl(2*j+1,i); P.fl(2*j ,i) = R.fl(0,0)*x + R.fl(0,1)*y; P.fl(2*j+1,i) = R.fl(1,0)*x + R.fl(1,1)*y; } } } return P; }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册