打开浏览器随便搜索一下“照片测年龄”,跳出的结果估计得有好几十个。界面大体相同,上传按钮、拖拽区以及下方标注为“AI智能分析”的地方。这些东西有没有用,要先看看它肚子里面装的是什么东西。

照片识别年龄的底层逻辑并不难。系统得到图片之后,首先寻找人脸。找到脸部之后,在重要的地方做标记,比如眼睛、鼻子、嘴巴以及下巴的位置。接着用各个点之间距离的比例、皮肤纹理的方向、局部区域的阴影分布来和数据库中样本进行比较。样本库中保存了数以百万计的人脸图像数据,在里面找到最接近的一组之后再输出一个数字。整个过程都是用像素来做的,并且是用数学进行计算的。硬件上运行的是一个接一个的卷积核,而软件中调用的是模型的各个权重值。

市场上的一些测年龄软件主要是通过以下几种方式来实现的。

第一种情况就是大厂开放的API接口。微软Azure的Face API、亚马逊Rekognition、百度AI开放平台的人脸检测等。后台运行的企业级算力,训练的数据量很大、更新也很频繁。它们的输出不仅仅是年龄的一个数字,一般还会有一个置信区间。例如,“预估年龄为32岁,误差范围在28至36之间。”这样的接口准确率比较高,在测试环境中使用标准证件照片,误差可以控制在3岁以内。前提是要拍出一张正规的照片来,也就是要拍出一张正面、平光、五官无遮挡的照片。用手机随便拍一张侧面的照片,或者是光线非常昏暗的时候,误差就会马上翻倍。该系统不认识人,只认像素模式,输入的图片如果不规范的话,输出的结果就会是猜测。

照片识别年龄 在线测年龄软件哪个准

第二类就是手机厂商自带的相册功能。现在的华为、小米、OPPO的照片相册里面都有对图片进行识别的功能。打开一个人的照片,上滑或者点击详情页的时候就会出现一个年龄段的标签。该标签并不是通过联网来计算出来的,而是由手机本地NPU(神经网络处理单元)在用户把照片保存下来的时候自动产生的。本地运算的优点就是速度快、不用消耗流量、也不涉及到隐私上传。缺点也很明显,手机端的模型经过了压缩处理,因此精度有所降低。一张同样的照片,在不同的品牌的手机上扫描,差距会达到七八岁的程度是很平常的事情。

但是iPhone相册却比较谨慎,并没有直接给出年龄数字,只是把人归为“成人”、“儿童”这样的大类中去,也算是一个规避纠纷的方法吧。

第三种就是纯粹的娱乐方向的小程序和APP。一般的名字都会带有某种噱头,“测测你的颜龄”,“AI看脸知天命”。所要达到的效果并不是准确,而是传播。算法层面的概率是直接使用开源模型,例如OpenCV自带的年龄预测demo、或者调用公开的数据集进行预训练得到的ResNet等。后台根本就没有进行精细微调,也不会根据亚洲人的脸部特点来加以优化。主要的工作就是,在结果页上弹出一条俏皮的话,并且引导用户进行截图分享。在这样的软件中计较错误的方向就是错的了。其实它是种社交玩具,并不是用来做测量用的。

另外一个影响准确性的大因素就是用户自身无法控制的因素:即照片本身所具有的“欺骗性”。亚洲人的脸部骨骼在老化的过程中比较平稳,在35至50岁的年龄段里,仅仅从静态的照片中很难准确地去判断。欧美模特拿来用的时候,面对东方人低颧骨、浅眼窝的情况,经常会把中年期的人错认为是年轻人。修图软件的加入又使所有的识别算法都无计可施。打开磨皮插件之后,纹理信息就被抹去了,系统只能依靠轮廓来猜测,所得到的数据都是不准确的。所有的软件在处理精修图片的时候,所得到的人类年龄都是无效的数据。这里的“无效”是指和生物年龄有关的相关性全部消失。

如果一定要找一个比较准确的参照物的话,在严格的光线下,Azure Face API的表现最为稳定。把照片裁剪成标准的大头贴,背景单一、曝光正确、五官分明。按照这个过程来测试的话,和真实的年龄相比,误差中位数大约为2.5岁。之前谷歌的Cloud Vision API也可以做年龄检测,但是由于伦理问题的原因,最后把精确到数值的功能给关闭了,只剩下大概的一个范围。微软方面仍然在提供数值,并且还增加了一条免责声明,上面写着“仅供参考娱乐使用”。他自己都没有把它当作医学上的诊断来对待。

相机直接输出的JPG文件中包含有EXIF信息,有些软件可以读取拍摄的时间,并且根据人脸来推测。这是投机取巧,并不是真正的本事。把一张二十多年前的老照片翻拍之后再扔进系统里,系统的输出结果仍然是当下的人类视觉年龄,并且EXIF中显示的1998年的数据对于该系统来说没有任何意义。算法只会按照眼前的二维矩阵中灰度的排列来判断。

照片识别年龄 在线测年龄软件哪个准

测不准还存在结构上的问题:训练数据集本身就带有偏见。IMDB-WIKI这样的公开人脸库中,明星的照片所占比例过高,但是明星们对外貌的投资远远大于普通人的。用这样的数据来训练出的模型,一看就是年轻的模样。在对日常生活中的手机自拍进行测试的时候,大多数在线工具都会把真实的年龄低估三到五岁。这并不是Bug,而是由于训练样本造成的偏向。写代码的人并没有想要去修正的意思,因为用户的年龄比较小,分享欲望也比较大。

如果非要比较的话,在把一张没有经过任何处理过的身份证照片(电子版)上传到Azure或者百度云的人脸识别服务中去之后所得到的年龄结果最为接近档案上记载的内容。比较之后就会发现,各家给出的价格相差不大,在一个合理的价格波动范围内。反过来讲,用同样的浓妆加上滤镜的照片来测试十家不同的网站,并且得到十种相差很大的结果的话,也不要责怪软件笨了。照片中的那个面孔已经没有生物特征上的时间标记了。

所以在线测年龄软件哪个好。答案分成两个部分。第一个部分是看后台。大厂付费级API准,压缩到手机里离线版次之,娱乐小程序垫底。第二层就是看照片了。素颜、高清、正面、柔光,只有测出来才具有实际的意义。凡是使用了美颜、侧脸、强阴影等效果之后的结果就直接忽略掉即可。从开始到结束都没有想过要用来做体检报告。把这当作一面粗糙的、由算法来驱动的镜子,照一下,心里有个大概,关掉页面该干嘛干嘛。