One-Shot Learning
探索 AI 中的单样本学习 (One-Shot Learning)。学习如何利用 Ultralytics YOLO26 和孪生网络通过单个图像识别对象,实现高效的计算机视觉。
单样本学习(One-Shot Learning)是机器学习 (ML)中的一种专用分类技术,旨在从单个训练样本中学习有关对象类别的信息。与需要包含数千张注释图像的大规模数据集才能有效泛化的传统深度学习 (DL)算法不同,单样本学习模仿了人类瞬间掌握新概念的认知能力。例如,一个人通常在看了一次某种特定的珍稀鸟类后就能认出它;这种方法试图在人工智能 (AI)系统中复制这种效率。它在数据标注成本高昂、数据稀缺或必须动态添加新类别而无需重新训练整个模型的场景中尤其有价值。
该概念背后的机制#
单样本学习的核心原则涉及将目标从标准分类转变为相似度评估。模型不再训练神经网络 (NN)来输出特定的类标签(例如“狗”或“猫”),而是学习一个距离函数。为此采用的一种常见架构是孪生神经网络,它由两个共享相同模型权重的相同子网络组成。
在运行期间,网络执行特征提取以将输入图像转换为被称为嵌入的紧凑数值向量。然后,系统将新查询图像的嵌入与单个参考“样本”的嵌入进行比较。如果数学距离(通常使用欧氏距离或余弦相似度计算)低于某个阈值,则确定这些图像属于同一类别。这允许模型根据它们在学习到的特征空间中的接近度来验证身份或对对象进行分类。
以下 Python 代码演示了如何使用来自 ultralytics 软件包的 YOLO26 分类模型来提取嵌入并计算相似度。
import numpy as np
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model for feature extraction
model = YOLO("yolo26n-cls.pt")
# Extract embeddings for a reference 'shot' and a query image
# The embed() method returns the feature vector directly
shot_vec = model.embed("reference_img.jpg")[0]
query_vec = model.embed("query_img.jpg")[0]
# Calculate similarity (higher dot product implies greater similarity)
similarity = np.dot(shot_vec, query_vec) / (np.linalg.norm(shot_vec) * np.linalg.norm(query_vec))
print(f"Similarity Score: {similarity:.4f}")区分相关范式#
将 One-Shot Learning 与其他数据高效学习技术区分开来非常重要,因为它们通过不同的约束条件解决了类似的问题:
- 少样本学习 (FSL): 这是包含单样本学习的更广泛的类别。在 FSL 中,模型获得一个小的“支持集”示例,通常每个类别有两到五张图像。单样本学习只是支持集大小正好为一的极端情况。
- 零样本学习 (ZSL): ZSL 处理的是识别模型从未视觉见过的类别。ZSL 不依赖参考图像,而是通过自然语言处理 (NLP)依赖语义属性或文本描述(例如,通过将视觉特征与文本描述“条纹马”相关联来识别“斑马”)。
- 迁移学习: 这涉及采用在诸如 ImageNet 等大型数据库上预训练的模型,并在新任务上对其进行微调。虽然迁移 learning 提供了单样本学习中使用的特征提取器,但标准的迁移学习通常需要多个示例才能有效地更新权重而不会过拟合。
实际应用#
单样本学习在收集大量训练数据不切实际的领域中释放了各项能力。
人脸识别与安全#
单样本学习最无处不在的应用是在生物特征安全领域。在智能手机上设置 Face ID 或注册员工访问系统时,设备会捕获用户面部的单个数学表示。在日常使用中,面部识别系统将实时摄像头画面与此存储的“单样本”进行比较以验证身份。这依赖于强大的嵌入技术,例如基础FaceNet 研究中讨论的技术,以确保光照或角度的变化不会破坏相似性匹配。
工业质量控制#
在制造领域的 AI 中,由于缺陷很少且不一致,创建平衡的“有缺陷”零件数据集很困难。单样本学习允许计算机视觉 (CV)系统学习单个“完美”参考零件的表示。装配线上任何产生与此参考显著不同的嵌入的物品都会被标记为异常检测。这无需数千张破损零件的图像即可实现即时的质量保证,这些图像可以通过 Ultralytics Platform 进行管理和部署。
挑战与未来展望#
尽管功能强大,但单样本学习对噪声很敏感;如果单个参考图像模糊、被遮挡或缺乏代表性,模型识别该类别的能力就会大大下降。研究人员通常采用元学习(即“学会学习”)来提高模型的稳定性和泛化能力。随着架构的发展,像 YOLO26 这样更新的模型正在融入更强大的特征提取器,使单样本推理更快、更准确,为更具适应性和智能的边缘 AI 设备铺平了道路。






