博客
关于我
One-Shot学习/一次学习(One-shot learning)
阅读量:807 次
发布时间:2023-02-23

本文共 758 字,大约阅读时间需要 2 分钟。

人脸识别系统面临一个关键挑战——一次学习问题。这意味着在大多数应用中,只需提供单张图片或一张人脸样例即可完成识别任务。然而,历史上深度学习在仅有一个训练样例时表现不佳。让我们通过一个直观的例子探讨这一问题,并提出解决方案。

问题背景

假设数据库中有4张员工照片,分别是Kian、Danielle、Younes和Tian。系统需要通过一张已知的Danielle照片识别前方的个人是否为她。如果是陌生人,系统应明确地将其识别为非数据库成员。一次学习问题的核心在于,只通过一个样本进行学习,以确保能够识别同一人

传统方法使用卷积神经网络(CNN)+ Softmax层进行分类,输出4种或5种标签(4名员工或非员工)。但这种方法效果有限,因为小样本集难以训练稳健网络。此外,新增人员后需要重新训练网络,这显然不现实。

解决方案:学习相似度函数

要实现一次学习,需要设计一个函数,能够通过一张图片识别另一个人。CNN能够提取图像特征,但直接使用难以解决小样本问题。因此,学习一个相似度函数尤为关键。

相似度函数的作用

函数d接受两张图片,输出差异值。当输入同一人两张照片时,差异值应最小;当输入陌生人时,差异值应较大。通过设定阈值(d>阈值为不同人,d<=阈值为同一人),可以有效解决人脸验证问题。

函数定义

函数d的核心是计算两张图片的差异。例如,输入两张图片后,输出差异值。通过训练网络学习这个函数,可以实现一次学习任务。一旦训练完成,只需对新图片与数据库内任意一张图片进行比较即可完成认证。

优势

这种方法解决了小样本问题。只要网络学会了相似度函数,新人员加入只需更新数据库即可,无需重新训练整个网络。

下一步

下篇文章将详细讲解如何训练神经网络,学习相似度函数d。

说明

记录学习笔记,如有错误请指正。转载请联系我。

你可能感兴趣的文章
php怎么将对象变成数组,php怎么将对象转换成数组
查看>>
RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列
查看>>
php怎样比较两数大小,jquery如何判断两个数值的大小
查看>>
PHP性能监控 - 开启xhprof(一)
查看>>
PHP性能监控 - 怎么看xhprof报告(二)
查看>>
php截取字符串代码,PHP字符串截取_php
查看>>
php截取字符串,无乱码
查看>>
php手冊,php手冊之變量范圍
查看>>
PHP手机号码归属地查询API接口
查看>>
PHP执行耗时脚本实时输出内容
查看>>
PHP扩展安装
查看>>
PHP扩展数据库连接参数说明详解
查看>>
php把get参数放入数组_php怎么将数组转为url参数?
查看>>
PHP投票小程序
查看>>
php拆分数组不改变key值
查看>>
php接口返回数据 用echo 还是return?
查看>>
php接口返回状态,大家一般怎么规范接口返回内容
查看>>
php接收formdata上传的多个文件,使用formData()上传多个文件
查看>>
PHP操作csv文件导入+导出
查看>>
php操作mysql用select_php如何操作mysql获取select 结果
查看>>