本文共 758 字,大约阅读时间需要 2 分钟。
人脸识别系统面临一个关键挑战——一次学习问题。这意味着在大多数应用中,只需提供单张图片或一张人脸样例即可完成识别任务。然而,历史上深度学习在仅有一个训练样例时表现不佳。让我们通过一个直观的例子探讨这一问题,并提出解决方案。
问题背景
假设数据库中有4张员工照片,分别是Kian、Danielle、Younes和Tian。系统需要通过一张已知的Danielle照片识别前方的个人是否为她。如果是陌生人,系统应明确地将其识别为非数据库成员。一次学习问题的核心在于,只通过一个样本进行学习,以确保能够识别同一人。传统方法使用卷积神经网络(CNN)+ Softmax层进行分类,输出4种或5种标签(4名员工或非员工)。但这种方法效果有限,因为小样本集难以训练稳健网络。此外,新增人员后需要重新训练网络,这显然不现实。
解决方案:学习相似度函数
要实现一次学习,需要设计一个函数,能够通过一张图片识别另一个人。CNN能够提取图像特征,但直接使用难以解决小样本问题。因此,学习一个相似度函数尤为关键。相似度函数的作用
函数d接受两张图片,输出差异值。当输入同一人两张照片时,差异值应最小;当输入陌生人时,差异值应较大。通过设定阈值(d>阈值为不同人,d<=阈值为同一人),可以有效解决人脸验证问题。函数定义
函数d的核心是计算两张图片的差异。例如,输入两张图片后,输出差异值。通过训练网络学习这个函数,可以实现一次学习任务。一旦训练完成,只需对新图片与数据库内任意一张图片进行比较即可完成认证。优势
这种方法解决了小样本问题。只要网络学会了相似度函数,新人员加入只需更新数据库即可,无需重新训练整个网络。下一步
下篇文章将详细讲解如何训练神经网络,学习相似度函数d。说明
记录学习笔记,如有错误请指正。转载请联系我。