Tag Archives: 人脸识别

重返人脸识别,富士康的和谐社会

  昨晚整个生物信息组加班干到11点,今天领导们飞往上海,小兵蛋子们可以喘口气了。可怜俺又被借到人脸识别组改程序,好久没看代码,生疏了,强打精神改完。都三个星期没假期了,与富士康共建和谐社会

  不过以前写的人脸标注系统还真棒。又是单击,又是双击,又是拖拽,又是右键、又是Gamma处理、又是备注、又是检验、又是重载输入输出、又是定制、又是验证……众多功能布置得井井有条。隔了将近两年重新看,基本不用依靠注释,通过各个类的成员函数名就全摸透了。修改完编译,CPPUnit单元测试案例一路绿灯,超有成就感。嘿嘿,得意一小下。

半日瞎逛_人脸Login_Web开发

  中午给组里培训以后发现自己过于疲惫,所以停下来,玩。

  跑到人脸组瞎逛,发现tj差不多把人脸识别Windows登陆搞定了。启动Windows,摄像头开始检测,只有tj的脑袋去摄像头前面晃,系统才会“tj你好,欢迎登陆”。

  一年前要我实现这个demo,一直搞不定gina,只好做假,用一个全屏模拟XP登陆画面,并且用钩子屏蔽掉所有系统切换的快捷键,勉强可以看成一个屏幕锁定程序。yp也搞过一个类似功能的屏保。终极梦想终于在英雄手里实现了,俺们可以瞑目了,阿门。

  晚上回来玩“合金弹头”,又睡了一会儿,才上网乱踅摸。“编码从来不是项目的瓶颈——改动才是”,这话经典吧,所以推荐Michael Chen’s blog

  在buffalo的主页看到这么一段。

  “Web开发正逐渐变得有趣。许多以前在C/S系统中才能够实现的效果,Web页面中已经能够逐渐可以实现。由于传统Web系统给人们的惯性,用户对于这些新型应用感到激动,用户体验得到极大程度的改善……”

  这才是对AJAX真正到位的理解。

  BTW1:突然想到,人脸识别技术用在网站登陆会很酷,尤其是在一些播客站点上。

  BTW2:tj要去Google Code Jam的终极PK现场,不参加比赛,是作为Google员工去参加team game的,流口水,求他带我混进去玩,被拒,郁闷,哇哇哭。

技术和应用

  传说Google打算收购Riya,一家搞人脸识别技术的公司。这对人脸识别组的兄弟们是个好消息。

  Google面试的时候会问你“进Google后想做什么独特的东西”。tj答:设计一个搜索引擎,输入“马”字,就按照图片内容来寻找网上的马的图片。我也想过,现有人脸识别的各种算法虽然还有缺陷,但可以拿来实现一些玩具,比如去搜索网上和自己最相像的人脸照片;再比如把自己的脸和某个偶像的脸特征取平均,生成一张“新脸”,看看像谁。

  有次人脸识别组去微软研究院学术交流,未来的MSN也许会加上一种人脸特征点定位的小应用,表情仿真:你在摄像头前作出各种表情,网络那边的人虽然只能看到一个虚拟头像(例如卡通唐老鸭,或者某个名人),但这个头像的面部表情随着你的表情变化。听说QQ也在联合科研院所搞这方面的产品。微软演示的新操作系统里,图片收藏夹能对图片内容自动进行分类,例如风景、卡通、集体合影等等。

  技术的价值就体现在应用上,尤其是体现在投入日常娱乐交互的广泛程度上。

  总在考虑,生物信息领域有啥可以借来实现一些轻松的玩具型应用,放到网上让大家玩,还没想到。也许基因芯片方面的技术更有可能?目前工作不涉及这种技术,不了解。

研究自己

  人脸识别课题组原来有一对长相难以区分的双胞胎;今天生物信息组开会,发现有位师兄是色弱,肉眼识别PPT上的红色线条很困难;记得刚刚进实验室,看到那个戴着电子手套的手语识别组的女孩子,后来知道她没有听力……

  我们研究的对象,越来越集中在自己身上:人是怎么感觉的、怎么记忆的、怎么思考的、怎么学习的、怎么决策的、怎么喜怒哀乐、怎么影响后代……

bug解决了

  下午沉下心又做了次努力,居然查清了人脸识别考勤系统的故障原因:其实是两个很幼稚BUG的叠加。

  系统很长时间不能工作,视频采集的驱动又给我捣乱,在VC7 debug环境下rebuild,会导致系统重启,组长怒了不止一次,郁闷了好几个月。

  把代码依植回VC6,每个步骤中间结果都写到文件里去。重新生成一次特征写入数据库,半小时,然后憋口气查找,调试,再生成数据,再调试……bug虽然藏得很深,但如果更勤奋认真一点,不至于头痛这么久。反省。

移植代码

  移植人脸识别检测SDK的事情终于有眉目了。明天开始集成测试。

  先把算法从VC6.0升级到7.1,尽量符合C++ ISO/98标准语法;然后去掉MFC编译头,自己实现必要的类;接着移植到Eclipse + CDT + CygWin环境下;最后才移植到Linux下 (还是用Eclipse + CDT 编辑)。

  最初的检测部分算法依赖OpenCV。移植到最后一步,安装linux版OpenCV编译通过,可CppUnit单元测试总是红色。一步步检查回去,才发现原文大量修改了Windows版OpenCV库本身的代码。原作者修改时没有标记和注释原因,虽然仅过了半年,他已经记不清到底干了些什么,最终只好从头移植另一种检测算法。

  大量类似问题都是不良风格造成的。不考虑代码会给其他人使用,不预计以后升级移植时怎么修改,写不出好气味的代码。

  Eclipse + CDT 帮了大忙,无论是J2EE还是C++,Windows还是Linux,我已经离不开这个工具了。CppUnit在VC6.0、VC7.0和gcc下工作都很出色。红旗4.1扭转了我的恶劣印象,虽然还是更喜欢Magic。

  技术上自信的原因之一,就是比较擅长阅读别人的代码。这的确是件苦差事,但能锻炼能力。