微软最近大出风头,他们推出的“How Old”服务可以判断人的“颜值”年龄,已经吸引了很多眼球,而最近他们正在研发的图像注释功能可能更要让人印象深刻,它可以自动识别出照片中的各种对象:脸、男人、女人、猫、相机等等。下面就让我们深入了解一番,微软研发的这个全新系统究竟如何实现对图形里的物体的智能识别。
年龄识别——认识How Old
How Old是微软最近推出的一款人像识别服务,我们只要登录http://how-old.net,然后在搜索框输入需要搜索的人物(或者点击“Use your own photo”上传本地照片),这样在出现的人物搜索界面会添加一个黄色小标签,同时会判断出图片中人物的性别和年龄(图1)。
这是微软人工智能技术在图片识别上的典型应用,而近日其推出的图像注释功能则是在How Old的基础上更进一步,除了正确识别人脸外,它还可以识别照片中的其他物件,如照相机、头发等,它的幕后功臣其实是微软的Project Oxford服务。
如上所述,图像注释功能拥有比How Old更强大的功能,它对照片其他部件的识别主要基于Project Oxford服务。Project Oxford服务是微软在Build2015大会中发布的,这一服务主要能为Azure用户免费提供图像、语音识别等智能REST API和SDK。其中的识别服务则主要使用其中的图像识别API和人脸识别API。
比如对于人物的识别,微软首先根据一定的标准为脸部识别建立复杂而庞大的数据库。在这套识别系统中,微软将人脸分为27个标志点,如瞳孔、眼角、嘴角、鼻子等明显会随着年龄变化的部位,然后根据不同部位的变化与相应的年龄段对应起来,从而将人脸关键标记点量化(图2)。
举个简单的例子,比如皮肤褶皱是衰老的第一个重要标志,这样(脸部API)可借助医用级别定义的褶皱范围,然后通过褶皱程序来判断照片里人的年龄。婴儿、妇女、男人皮肤的褶皱程度是不同的,这样当网站服务器接收到一张包含上述三种人物的图片后,微软的Project Oxford服务首先根据人脸的主要器官(如脸、眼睛、嘴巴)将人脸识别出来,接着会在后台对人脸的褶皱进行检测,假设褶皱程度在0~2,则判定这张人脸是婴儿的脸部。这样服务器会在后台发出指令,同时在婴儿脸部上方弹出黄色标注框,告诉你这是一张婴儿脸和对应的年龄。同理,通过其他人脸的褶皱判断出女人和男人脸(图3)。
同样,对于照片中其他部件的识别也采用类似的方法。比如Project Oxford服务要判断出照片中的相机,首先Project Oxford也是在系统中建立关于相机的各种参数判断标准,指定在某个数值范围内的物体,如果该物体前方有突出的镜头则判定为相机,这样当一张照片中有人举着这样一个物体时,Project Oxford服务就判断其为照相机。通过这样的方法,Project Oxford服务就可以识别照片中的人物和其他物体,同时借助每个物体的关键字生成照片的说明。
在下面这张照片中,Project Oxford会先根据识别的各个物体生成“人群”(通过识别多个人脸的识别判定)、“照相机”(通过相机参数判定)、“举着”(通过人手的高度判定)、“女人”(通过人脸识别)、“猫”(通过女人蜷曲的头发判定,这个是识别错误)这几个关键字。接着系统再根据实际情况对上述关键字进行组合(排除猫的可能性),这样最终就会自动为这张照片生成一句“人群中举着相机的一个女人”的注释,也就比较精确地为这张照片做了文字注释(图5)。
不仅是好玩 Project Oxford也许会改变旧有生活
通过上面的介绍,我们了解了Project Oxford服务的强大功能,对于一张普通的照片,Project Oxford服务可以精确进行识别并且添加正确的注释。这种增强的人工智能会给我们生活带来极大的便利。
在日常图片搜索中,我们经常需要使用模糊自然语言进行搜索,如果Project Oxford服务普及了,那么微软就可以为图库中的每一张照片添加精确的注释,这样我们在输入诸如“举着相机的女人”进行搜索时,搜索引擎就可以通过检索图库内的文字注释快速为我们推送类似上述的照片,可以大大提高我们搜索图片的效率。
此外,由于Project Oxford服务可以自动识别图片中的人物和物品,这样当我们需要在视频监控(视频可以自动截取为图片)中查找某人的时候,如生活中的逃犯或者丢失的亲人,借助Project Oxford的自动识别服务就可以很快在众多视频中找到目标人物。