解析:整容式的美颜2.0技术如何实现?聊一聊背后的图像识别技术

雷锋网按:本文根据涂图CTO在七牛云架构师沙龙上的演讲整理,本篇主要谈谈人脸识别技术的原理与具体实践的一些问题,作者授权发布雷锋网(公众号:雷锋网)。

上篇文章的最后,我们提到了美颜2.0最关键的技术——人脸识别。这是项复杂但又非常热门的技术,我们将在这篇文章中聊一聊图像识别技术。

一、如何让机器看懂世界?

这里我们来简单聊聊机器学习与深度学习。

近段时间,机器学习、深度学习的概念非常火,尤其是今年 AlphaGo 击败了韩国棋手这件事,引起了世界的轰动。机器学习和深度学习这两个概念,比较容易混淆,以至于很多媒体在写报道时,经常把这两个词混着用。由于这两个概念目前最主要应用在图像领域上,所以我们仅就图像识别,尤其是人脸识别方面,区分一下这两个概念。

机器学习的概念提出的比较早,上世纪 90 年代初,人们开始意识到一种可以更有效地构建模式识别算法的方法,那就是用数据(可以通过廉价劳动力采集获得)去替换专家(具有很多图像方面知识的人)。而深度学习可以算是机器学习的一个分支,只在近十年内才得到广泛的关注与发展。

下面说说具体的区别。

首先,机器学习识别物体是基于像素特征的。我们会搜集大量的图像素材,再选择一个算法,使用这个算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。

而深度学习可以算是机器学习的一个分支,只在近十年内才得到广泛的关注与发展。它与机器学习不同的是,它模拟我们人类自己去识别人脸的思路。

比如,神经学家发现了我们人类在认识一个东西、观察一个东西的时候,边缘检测类的神经元先反应比较大,也就是说我们看物体的时候永远都是先观察到边缘。就这样,经过科学家大量的观察与实验,总结出人眼识别的核心模式是基于特殊层级的抓取,从一个简单的层级到一个复杂的层级,这个层级的转变是有一个抽象迭代的过程的。深度学习就模拟了我们人类去观测物体这样一种方式,首先拿到互联网上海量的数据,拿到以后才有海量样本,把海量样本抓取过来做训练,抓取到核心的特征,建立一个网络,因为深度学习就是建立一个多层的神经网络,肯定有很多层。有些简单的算法可能只有四五层,但是有些复杂的,像刚才讲的谷歌的,里面有一百多层。当然这其中有的层会去做一些数学计算,有的层会做图象预算,一般随着层级往下,特征会越来越抽象。

举例来说,识别一张人脸,如果是在具体环境中的人脸,如果遇到云雾,或者被树遮挡一部分,人脸就变得模糊,那基于像素的像素特征的机器学习就无法辨认了。它太僵化,太容易受环境条件的干扰。而深度学习则将所有元素都打碎,然后用神经元进行“检查”:人脸的五官特征、人脸的典型尺寸等等。最后,神经网络会根据各种因素,以及各种元素的权重,给出一个经过深思熟虑的猜测,即这个图像有多大可能是张人脸。

所以,深度学习比机器学习不管在人脸识别还是各种各样的识别表现都要好,甚至已经超过人类的识别能力。比如 2015 年谷歌发布了一个 facenet 网络,做人脸检测的,号称用这个网络可以达到 98% 以上识别率。而我们人类自己去看样本所达到的正确率,一样不是百分之百,甚至还没有现在一些最先进的采用深度学习算法的技术准确率高。

在机器学习方面,目前国际上比较主流的基于人脸检测的计算,一是 HOG 算法,还有其他像 LBF 特征算法。 LBF 是 OpenCV 的,OpenCV 是个非常有名的开源库,里面有各种各样的图象处理相关功能,而且是开源的,但是它在移动平台上效果很差,没有办法达到我们要的效果。这里提到是因为它非常有名,里面包含了各种各样图象处理相关的功能,比如说做特殊处理,做人脸识别、物体识别等等。OpenCV 里面就包含了 LBF 算法的实现。

深度学习有不少开源框架,比如 Caffe、TensorFlow。这些框架提供的仅仅是构建深度学习网络的工具,但是深度神经网络才是最关键的东西。网络怎么构建?网络有多种构建方式,比如大家去关注这方面会发现经常看到一些名词,CNN、RNN,CNN 可能是比较火的,在人脸识别方面是表现非常优越的一个网络,现在也是比较主流的一个网络。当然也有很多网络,RNN 或者是更快的 CNN 网络等等,在解决某些具体问题的时候,有更加好的表现。

二、图像识别的一些具体实现:比如,智能鉴黄

当们我们具备了相关的深度学习技术后,就可以在服务端上构建应用了。

比如做智能鉴黄,一路视频流输入,解码以后拿到每一帧,识别出有问题的部分,对它进行处理。比如打上马赛克,或者把内容保存下来,然后发送通知给后台,告诉后台这里有一张疑似有不可描述的东西出现了等等,之后再编码,输出到其它地方,比如再分发到 CDN 等等。这些过程如果用人工识别成本非常高,要发展肯定要通过技术手段去解决。

最后说下手机端上的经验:涂图的产品在人脸检测性能方面的测试指标。

比如 iOS 和安卓平台上面我们做的测试,在 iPhone 6 上,40 特征点抓取需要 40 毫秒,相当于一秒内可以处理 25 帧。当然实际上并不需要这么多的次数,人眼观察事物,因为有视觉暂留效应,一般来说 12 帧是个分界线,小于 12 帧就能感觉到画面卡顿,但是只要大于 12 帧,看起来就是连续的。所以我们一般限制在十七八次的检测,在 iOS 上够用了。安卓方面,相对于 iOS 平台的表现确实要差一些,不论是 API 的封装,还是整个硬件的搭配,可能同样一个 GPU 型号,用在安卓的设备上就没法达到跟 iOS 同样的表现,iOS 平台确实在各方面上要做得比安卓好一点。小米5是比较新的设备了,40 特征点抓取需要大概 60毫秒。

三、技术的发展瓶颈:最后还是拼硬件

虽然在手机端上,比如 iOS 9,已经推出了深度学习 API,iOS 10 又对其进行了升级,提供了更多的功能,但是一般来说我们是在 PC 上面开发、训练的,直到把代码都做好,再放在手机设备上运行。因为就像刚才提到的,机器学习、深度学习的开发中非常关键的环节是训练

训练是什么意思?

比如我取 1 万张图片把人脸都标识出来,把 1 万张样本处理之后得到经验,到底人脸有什么特征?比如涉及 150 个参数,得出一个函数,调整后得到一个函数模型,这样的模型再去训练、测试,最后得到一个比较好的模型。接下来再找很多测试数据,比如 1 万张测试数据,来检测这个模型,如果表现很好,那这个数据模型网络是可靠的,最后用在实际中。

但是这个训练的过程非常耗时间。我们运行一个训练,CPU 可能需要二三十个小时。

这还是简单的模型,一些复杂的模型,比如谷歌开放的 125 层神经网络,如果用 CPU 来跑可能要三四天,相当于这么久以后才能得到一个模型,你才知道这个模型是好是坏。如果你发现不行,又改了一个小参数,结果还要继续三四天时间。所以解决的办法只有一条,就是升级硬件。比如 GPU 取代 CPU 完成运算。这里列了一个细的指标,比如有些算法需要在 RGB 空间里做检测,有没有不可描述的内容在里面。如果我们用 GTX 980 Ti 来运行,可以小于 20 毫秒一帧,用 i7 的 CPU 运行,检测出来则是 800 秒,跟 GPU 跑完全不可比。但问题是,专门做训练的 GPU 设备非常贵,七八千块钱的 GPU 在机器训练里面都不算好的,而且为了在复杂的场景中不耽误时间,比如像 AlphaGo 做训练一样,只能用海量的设备来弥补,这个成本可想而知。所以才说只有有一定实力的公司才能担负的起做深度学习。

现在国际上一些主流的大公司,比如微软,很多服务包括云服务等等,用的是 FPGA 方案。百度也在做基于运算单元的芯片,中科院也在做相关的研究。

所以深度学习一路发展下来,实际上一直都卡在计算上,计算能力远远跟不上我们软件的要求,最后就又变成了比拼硬件的时代。但其实这个问题并不是近期才有的:早在人工智能出现的早期,神经网络的概念就已经存在了,但神经网络对于“智能”的贡献微乎其微,主要问题就出在运算能力不足上。所以现在大家可以预见,量子计算一旦成为可能,人工智能的时代才算真正要到来了。

本文作者:涂图

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-10-23 03:12:18

解析:整容式的美颜2.0技术如何实现?聊一聊背后的图像识别技术的相关文章

AI+时代,谈谈产品经理对图像识别技术的阈值控制

产品满足用户的需求有一个阈值,产品值低于阈值用户会觉得了无生趣,即产品一般般,也即产品经理做了功能经理.产品值等于阈值产品功能基本满足了用户的需求,而只有产品经理驾驭了需求,把产品做成作品,产品值才有可能高于阈值,任何时候产品经理应该学习到高于需求阈值的产品方法论.AI+时代图片识别技术就是起点! 撰写本篇的目的: 当下每天看的到一个词:AI,满眼皆是AI的阶段,我们产品经理应该如何了解到AI的技术脉络和市场需求大势.AI不是新的概念,再次起来是因为有新的突破. 创新工场的李开复博士说现在是技术

《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.4节点法向量和面法向量

6.4 点法向量和面法向量 OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例 本章前面几节的案例都是基于球面开发的,球面属于连续.平滑的曲面,因此面上的每个顶点都有确定的法向量.但现实世界中的物体表面并不都是连续.平滑的,此时对于面上的某些点的法向量计算就不那么直观了,图6-18说明了这个问题. 从图6-18中可以看出,顶点A位于长方体左.上.前3个面的交界处,此处是不光滑的.这种情况下顶点A的法向量有两种处理策略,具体如下所列. 在顶点A的位置放置3个不同的顶点,每个顶点看作是仅

一个用于Gnome桌面的下拉式终端: Guake 0.7.0 发布

一个用于Gnome桌面的下拉式终端: Guake 0.7.0 发布 Linux的命令行是最好.最强大的东西,它使新手着迷,并为老手和极客的提供极其强大的功能.那些在服务器和生产环境下工作的人早已认识到了这个事实.有趣的是,Linux终端是Linus Torvald在1991年写内核时实现的第一批功能之一. 终端是个强大的工具,由于它没有什么可调整的部分,所以十分可靠.终端介于控制台环境和GUI环境之间.终端自身作为一个GUI程序,运行在桌面环境下.有许多终端是适用于特定的桌面环境的,其它的则是通

Rkt 0.8发布,引入Intel的虚拟化技术

本文讲的是本文讲的是,,[编者的话]本文来自CoreOS官方博客,上周rkt发布了0.8.0版本,rkt 0.8.0引入了很多新功能特性,包括初步支持用户命名空间和使用硬件虚拟化增强容器隔离,同时改进了主机日志集成,容器套接字激活,改进的镜像缓存和提升速度.本文重点介绍新引入的硬件嵌入式虚拟化技术,最后简单介绍了一下开放容器平台的进展和如何向rkt贡献. 今天,我们发布rkt v0.8.0.Rkt是一个专为生产环境而设计的应用容器运行时环境,更加高效和安全. Rkt v0.8.0带来了很多安全上

c++-为什么这个式可以表示等分0~ RAND_MAX

问题描述 为什么这个式可以表示等分0~ RAND_MAX 解决方案 rand函数产生一个0到RAND_MAX的伪随机数,这里的RAND_MAX因不同的实现而异,但RAND_MAX至少为32767.(比如,MSVC中通常为0x7fff,即32767,而Linux平台下GCC中RAND_MAX通常会远远大于这个值) 10*rand() 得到的是10倍的rand,再除以RAND_MAX+1,得到的结果为[0,10)

OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.3 定位光与定向光

6.3 定位光与定向光 OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例上一节中介绍的光照效果都是基于定位光光源的,定位光光源类似于现实生活中的白炽灯灯泡,其在某个固定的位置,发出的光向四周发散.定位光照射的一个明显特点就是,在给定光源位置的情况下,对不同位置的物体产生的光照效果不同. 现实世界中并不都是定位光,例如照射到地面上的阳光,光线之间是平行的,这种光称为定向光.定向光照射的明显特点是,在给定光线方向的情况下,场景中不同位置的物体反映出的光照效果完全一致.图6-16中对定位

海尔首创0.1赫兹20瓦中国变频空调技术达到历史最高水平

近年来,随着国家政策力推.节能低碳消费理念提升,我国变频空调节能技术升级速度一直在加快.以海尔空调为例,在不到一年的时间里,其宽带无氟变频技术突破性达到了最低0.1赫兹.最高150赫兹的行业超宽频运行,这一表现已代表了目前中国变频空调技术历史最高水平.同时,该技术还实现了最高省电效果从59.3%到60.5%的跨越,再次刷新了全球空调节能的纪录.业内专家指出:2013冷年空调行业将进入大跌之后的深度调整期,加快节能技术创新升级是突破重围的必经之路,行业领头羊的作用尤其重要.目前,海尔空调逆势增长,

区块链技术指2.1 区块链技术

摘要 区块链基础 区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种全新技术,它提供了一种去中心化的.无需信任积累的信用建立范式,目前已经引起金融行业.科研机构.政府部门和投资公司的高度重视与广泛关注.区块链技术通过建立一个共同维护且不可被篡改的数据库来记录过去的所有交易记录和历史数据,所有的数据都是分布式存储且公开透明的.在这种技术下,任何互不相识的网络用户都可以通过合约.点对点记账.数字加密等方式达成信用共识,而不需要任何的中央信任机构.在这种技术下,我们可以建立数字货币.数字资产.

双11媒体大屏背后的数据技术与产品

2016年双11阿里巴巴的产品成交额达到1207亿元,而面对与交易额一样巨大的流量洪峰,直播媒体大屏是怎样做到将交易数据实时计算并且准确显示出来的呢?在这背后究竟用到了哪些数据技术与产品呢?本次阿里巴巴2016双11技术创新论坛上,来自阿里巴巴数据技术与产品部的高级技术专家罗金鹏(藏六)就为大家分享双11媒体大屏背后的那些事. 以下内容根据演讲视频以及PPT整理而成. 本次为大家分享<双11媒体大屏背后的数据技术与产品>.阿里巴巴从2009年开始双11产品大促,从最初的5千万的产品成交额,到2