思考---(科研99% )VS (产品75%)
转
目前人脸识别技术的挑战是什么? - 知乎
标签: | 发表时间:-- : | 作者:
出处:https://www.zhihu.com 也是放假太闲,上知乎来锻炼一下手指。 在回答题主的问题的时候,我觉得应该注意做『科研』和做『产品』之间的区别。论文中汇报的人脸识别技术是属于科研的行列。比如在LFW上99.%,这种数字的意义更多是让搞研究的那个圈子里面的人更加直观的了解到一些情况,你也知道,通常来说这个准确率是非常高的了,所以我们可以说『人脸识别技术在 LFW上已经很成熟了』,但是一模一样的技术,拿到真实环境下得到的准确率可能只有 %……也许会有些人觉得这是很可笑的,不,请不要笑,这是科研圈里朋友的普遍做法,不是没有苦衷的。 捣腾过LFW的朋友其实心里都清楚,这并不是一个很好的数据库。图片都是从网上下载的,人脸的质量也是千差万别,有人说这样才接近真实情况……但实际上距离大部分的实际应用场景还是太远了。 目前评价科研中算法的优劣的唯一方法就是找一个数据集,然后大家一起对比,数据集的不同算法得到的结果也会不同,然而……论文上通常是有报喜不报忧的恶习的,所以常常会有不公平的对比存在,随着越来越多更大的人脸数据集的慢慢增加,对于算法的评价会可能会变得稍微公平一些……即便是这样,论文里所谓的人脸识别技术,跟可用的『产品』之间的差距仍然很大。 这并不是说论文的算法不好,而是『产品』的天性。大部分产品都是针对性的解决一类或几类问题,产品讲究是速度,稳定性,成本,等等,不同的产品通常可以加入不同的先验甚至额外的硬件来提升产品的可用性。这是做『产品』和做『科研』的区别。 举两个容易理解的例子: 某著名手机厂商想开发一个自己的人脸解锁功能,在第一次使用手机的时候,经过一个人脸注册的过程,记录下手机主人的样子,在之后的使用中如果被触发,就进行人脸验证,解锁。这里你如果上来一个几十层网络的卷积网络,这个是不行的……因为速度很重要,内存也重要,如果你一个网络模型一上来就已经几十兆几百兆了,产品经理会疯的。做产品的往往是想在保证用户体验的情况下,使用最少的资源。所以最后的产品可能是……下面是我瞎掰的……检测到人脸,检测五官的基本landmark,然后通过几何关系约束来缩小识别范围,再用简单的特征比如LBP,在一个一千张主人人脸的数据库进行验证,验证里可能有各种trick,并且这个一千张人脸的数据库也是实时更新的,比如当前识别正确了,那么就加入进去,如果识别错了,就把这个数据提取特征作为反例存起来……一个可用的产品总是包含了很多看似没有道理的trick的,但是就是这些构成了产品的核心技术。 另外一个例子,做人脸识别,但是是做煤矿工的……请自行脑补一脸煤的辛苦矿工。在这个场景下面,你连人脸检测都没法弄啊……加上光照和脸上煤的干扰,论文上的算法基本上是没办法用的。如果是你,你怎么去做识别? 做一个产品的时候,思路是需要很开阔的。比如人脸的检测实际上是可以通过双目视觉来做的,两个廉价摄像头,简单的算法通过三角化得到一个稀疏的深度图,利用深度信息来做人脸的检测,然后基于眼睛和嘴唇来做识别,眼睛和嘴的识别可以用卷积网络来做,但是真是的产品里面可能还会考虑身高信息,当然,在洞里还需要考虑补光的问题…… 说完了这两个例子之后,再回到题主的问题上来吧: 『请问目前业内人脸识别技术的挑战和难点是什么。为什么没有成熟可靠的商业应用。但是论文中已经接近99.%了。实践和论文的差距是什么。是不是人脸识别的研究没得搞了。』 如果题主这里说的『业内』指的是科研行业,挑战和难点其实都不好说……有些问题是可解决的,有些问题是不可解决的,比如化妆和双胞胎的问题,其实长得像也是很普遍的例子。人脸识别这个行业存在一个由大佬们吹出来的硬伤,就是它在真实环境下总是无法达到100%的可靠,但是总被吹成是极其可靠……以至于领域外的人瞪大眼睛激动地要往里砸钱要项目上线……所以人脸识别在产业界总会给土老板们带去失望。 稍微有点偏,别回来。 我假设这里的业内并不是『科研界』,而是工业界,产业界,『产品』界,那么有很多地方其实都有成熟应用了,比如海关的过关人脸识别系统,当然人家会加上身份证或者指纹来双重验证,比如人脸识别的门禁系统,这个作为产品已经有了,虽然发生了『司机卖掉赵薇豪宅那个事』,但我还是相信在这个应用场景下,这个产品是可以达到可用的程度的。人脸识别技术最大的一个客户可能就是政府了,这个是让我有些伤感的事情,同时我也觉得这个东西在公安系统里面也是『采购了,但是极少用到,领导来了,我们就演示一下Demo,真办案了,还是要靠人来筛选一下以防疏漏』。 另外最近那些银行推出一些自动服务机器,里面有人脸识别功能,道理其实跟过海关一样,你需要的是身份证,人脸,密码甚至指纹……即便是把人脸识别关掉了……也是可以正常运作的……我常常好奇,为什么有些公司,不遗余力地去 集中做一个 产品落地很难的人脸识别技术……并且其做法仍然是按照学术那样,收集大量的数据集,然后交给科研人员,然后搞几个算法,提高准确率,然后把代码交给码农去优化,码农优化完,产品经理觉得仍然没法上线,但是上线压力太大,于是给科研和码农施压,科研人员也烦躁,只能过来给码农施压,码农无处诉苦,开始自我怀疑,失去自信,变得烦躁,更年期早到…… 这可能是做科研出身的人,突然跑去做产品的通病。 论文和实践的差别在于数据和方法。针对数据选择方法,是用很多种方法融合,针对不同的情况调试不同的参数,使用不同的trick,甚至使用外围的硬件辅助,最终的目的是提升产品的综合体验。人脸识别,实际的产品里面,最深奥的算法复杂程度也不会超过那些开源出来的已有算法,理解那些通用的算法,再去一线做产品应该足够了。但是注意,这些算法也许根本不会构成你产品的核心技术,真正的核心技术是你做产品的时候处理各种情况,各种数据的经验公式和方法。 在科研里,人脸识别技术还是有很多可以去研究的东西的,比如怎么用更小的数据更小的模型得到更好的准确率。比如怎么克服光照的影响,比如怎么通过局部特征来完成准确识别……。 但是如果是去做产品的话,我认为不需要迟疑,不要仰望科研成果。贴近一线的数据和场景,花时间分析数据钻研工程方法,也许就做出来了。 借用一句话:『未来属于那些愿意弄脏自己双手的人』。 @ itindex.net/detail/-目前-人脸识别-技术
思考---(科研99% )VS (产品75%)的更多相关文章
- [视频]产品营销之拍出好电子产品,Peter Belanger是如何为苹果产品拍照的
Peter Belanger –他就是那些颠覆你想象的苹果产品照片的摄影师.作为旧金山的顶级产品图片设计师的 Peter,他还拥有 eBay, Nike, Pixer 和 Square 等客户. 让我 ...
- 22-MySQL DBA笔记-其他产品的选择
第22章 其他产品的选择 本章将为读者介绍其他的数据库产品,主要是NoSQL产品的选择.读者在熟悉MySQL之外,也应该了解其他的数据库产品.本章的目的是给读者一个引导,如何选择一些NoSQL产品,而 ...
- Product - 产品经理 - 转型
特别说明 本文是已读书籍的学习笔记和内容摘要,原文内容有少部分改动,并添加一些相关信息,但总体不影响原文表达. - ISBN: 9787568041591 - https://book.douban. ...
- AI产品经理工作流程——需求分析和产品设计
1.AI产品设计常见失败原因 技术驱动产品设计,即我有什么技术就做什么产品.尽管许多公司不惜重金招聘高级AI算法工程师,确实这样也能帮助企业拿到大量的融资,但也容易给公司带来技术决定产品设计的局限.然 ...
- 开源深度思考 - In Community We Trust
作者 | 黄东旭,PingCAP 联合创始人&CTO 出品 | CSDN(ID:CSDNnews) 业界一直流传着黄东旭的传说:小学三年级开始写代码,四五年级学习C语言,初中毕业时,已经能够用 ...
- Autofac解耦事件总线
事件总线之Autofac解耦 事件总线是通过一个中间服务,剥离了常规事件的发布与订阅(消费)强依赖关系的一种技术实现.事件总线的基础知识可参考圣杰的博客[事件总线知多少] 本片博客不再详细概述事件总线 ...
- 清华申请退学博士作品:完全用Linux工作
http://www.cnblogs.com/cbscan/articles/3252872.html 下文地址 http://blog.oldboyedu.com/use-linux/ 按: 尽管我 ...
- 王垠:完全用Linux工作
来自: Zentaur(alles klar) 录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作 ...
- 一个LINUX狂人的语录(个人认为很精辟)
http://blog.chinaunix.net/uid-57160-id-2734431.html?page=2 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的 ...
随机推荐
- 将AD域漫游用户配置文件放在samba服务器中
书接上回https://www.cnblogs.com/jackadam/p/11448497.html 我们已经将linux服务器设置为域成员,启动samba服务后,已经实现了使用域账号验证,自动创 ...
- redis内存分析工具rdbtools
当Redis的内存已经快满的时候,我们能做什么呢? 最直接的方法就是分析一下Redis内存的构成,看是哪些键比较大,或者比较多,然后考虑一下对应的功能能不能优化,例如减少超时时间,例如不必要的数据不用 ...
- 使用SnowFlake算法生成唯一ID
转自:https://segmentfault.com/a/1190000007769660 考虑过的方法有 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 以上两种方法都可以查到就 ...
- Jenkins运行python脚本出现 configparser.NoSectionError: No section: 'XXXXXX'
原来的代码如下: def get_test_config(tag, key, config="config.ini"): cf = configparser.ConfigParse ...
- proc 目录介绍
/proc/apm 高级电源管理(APM)版本信息及电池相关状态信息,通常由apm命令使用: /proc/buddyinfo 用于诊断内存碎片问题的相关信息文件: /proc/cmdline 在 ...
- java笔记4
private关键字 1.是一个权限修饰符. 2.用于修饰成员 3.被私有化的成员只能在本类中有效 常用之一: -将成员变量私有化,对外提供对应的set,get方法对其进行访问 ...
- day32——进程、操作系统
day32 进程的基础 程序 一堆静态的代码文件 进程 一个正在运行的程序进程.抽象的概念 被谁运行? 由操作系统操控调用交于CPU运行 操作系统 管理控制协调计算机中硬件与软件的关系 操作系统的 ...
- mysql删除字符串的前后的空格
update table set field = replace(replace(replace(field,char(9),''),char(10),''),char(13),'');
- springboot 2.1.3.RELEASE添加filter,servlet源码学习
Servlet规范中,通过ServeltContext来注册Filter.Servlet,这里分析Filter,Servlet是相同逻辑 springboot2.0中,我们通过 FilterRegis ...
- c#中冒泡排序算法描述
int temp = 0; int b = 0; int[] arr = { 23, 44, 66, 76, 98, 11, 3, 99, 7 };# region该段与排序无关Console.Wri ...