苹果官方揭秘:这个强大的相册功能是如何实现的?
A) 左下角显示识别出的人物照片 B) 人物专辑 C)人物查询搜索 D)显示个人特定记忆的记忆窗格
在苹果官方 AI 博客的一篇论文中,这家公司解释了他们如何使用机器学习算法识别 iPhone 和 iPad 上照片中的人物,而无需使用你的图像来训练他们的算法。
对于苹果用户来说,你可以在照片应用程序中体验这一功能。
本文介绍的机器学习算法在你的设备上运行后,就能够在 iOS 15 上准确地管理和分类图片和视频。它将识别不同的人,并显示照片中此人出现的位置。如果你有数千张照片,就相当有了不同的照片集群,而每个集群里会包含不同的人。例如,其中一个照片集中可以是你朋友 John 的所有照片,你可以将其命名为 “John”,如果在所有图片中搜索 John 的图片,有 John 的照片会自动显示。
算法甚至可以识别出同一个人经常出现的照片,即使它不认识这些人或者没有直接用与这些人相关的数据训练过。也可以使用它来构建照片回忆录,就像图中显示的 “在一起” 功能一样。这是苹果一款超级酷的内置应用程序,最厉害的是,它甚至可以在脸部被遮挡或只有侧脸时起作用。
正如上文介绍的,这个功能方便快捷,算法可以在你的设备后台自己运行,而且苹果一直在改进他们的算法。那么,苹果这项应用背后的算法是如何工作的?
由于手机拍摄照片具有可变性,不同的人、不同的角度、不同的比例、不同的灯光,或者你的朋友在看足球时被遮挡挡,甚至是用其他相机拍下的照片等因素,识别这些照片中人物并没有那么容易。如果我们严格地以正常人脸为基准,恐怕也识别不出,因为我们在实际生活中拍摄的大多数照片都不是你的朋友在镜头前微笑的完美照片。
为了解决这个问题,他们首先使用一个检测算法定位图像中可见的人脸和上身。该算法在大量标注了人体和人脸位置的数据集上进行训练。这意味着他们预先训练了一个深度神经网络,将图像作为输入,输出的是只有人身体或面部的裁剪后的图像。这是通过向网络提供许多样本来实现的,即正确识别的区域能够帮助网络学习集中注意力。如此一来,如果在训练期间提供足够多的样本,算法就可以反复学习在训练后自己找到人的身体部分。
然后,算法将每个人的身体和面部进行匹配,以掌握更多关于这个人的数据,从而应对之后的图片中只出现人的面部或身体的情况。
上图中你可以看到,被拍摄者的身体和面部信息都被送入一个单独的模型,模型对信息进行编码,创建出 embeddingsembeddings。这些 embeddingsembeddings 是关于这个人的面部和身体的最有价值的信息。这里使用了另一个网络来编码信息,因为希望 embeddingsembeddings 对同一个人来说是相似的,对不同的人来说是不同的。embeddingsembeddings 部分是用另一个模型来完成的,灵感来自于 mobilenet。它是一个轻量级的卷积神经网络,可以高效地运行,且是为移动设备而非 GPU 所设计的。
概括的说,算法让裁剪过的图像在一个较小的空间中进行信息压缩,集中在个人最有趣的细节上。
这是能够实现的,因为模型是在大量的图像上训练出来的。除非图像的质量不好,否则这些压缩的信息会被合并并保存在你的手机库中。质量不好的图片可能是不清楚的脸或上半身,会被自动过滤掉。
人脸 embeddings 网络结构
embeddings 在所有的照片中重复进行 embeddings 操作,以便从这些 embeddingsembeddings 信息中创建集合。这些集合是被识别出的不同的人。
算法把所有类似的 embeddings 合并成小组,每组是一个特定的人。因此,这一步是将所有识别出有 John 的图片放在一个集合里。最方便的是,如果你睡觉且手机在充电,算法会自动运行。而且你的照片越多,它的准确度就越好。
训练前后人脸 embeddings 信息的分布
因此,一旦这些集合被创建,你手机中有人物的新照片就会被送到同样深度的网络,为图片中的每个人创建一个新的 embeddings。
这些新的 embeddings 将加入一个集合,集合可以是算法找到的相匹配的集合,也可以是根据你手机中的 embeddings 和新图片的 embeddings 之间的差异创建的一个新集合。
当然,为了识别是否是同一个人,算法需要主要关注面部。如果是遮挡或侧身,算法就用上半身加上从面部得到的信息,并考虑到照片的时间来衡量服装上的异同。
上半身的信息并不总是有用。正如苹果在自己的文章中所说,"我们已经仔细调整了一组面部和上半身的距离阈值,以获得最大的上半身 embeddings,而不会对整体准确性产生负面影响"。
这就是苹果的相册功能,如何在你不知不觉中重新组合你朋友的照片信息的 “秘密”。
还有一个问题在于,无论拍摄对象的肤色、年龄或性别,苹果希望为所有苹果用户提供相同的体验。值得肯定的是,苹果正在不断提高通用性,努力从的算法中消除这些差异,尽可能使用最广泛的数据集和数据增强来保证训练图像的多元化。
Reference:
https://machinelearning.apple.com/research/recognizing-people-photos