探索 One-Shot Learning 的强大功能,这是一种革命性的人工智能技术,使模型能够从最少的数据中进行泛化,从而应用于实际场景。
单次学习 (OSL) 是机器学习 (ML) 中的一种复杂方法。 机器学习(ML)中的一种复杂方法。 在这种方法中,模型的设计目的是在只有一个标注示例的情况下识别新对象并对其进行分类。与传统的 深度学习(DL)方法需要庞大的 传统的深度学习(DL)方法需要大量的训练数据才能达到高精度。 相比,OSL 模拟了人类的认知能力,只需看过一次就能立即掌握新概念。这种 对于那些 数据标注昂贵、数据稀缺或新类别动态出现的应用来说尤为重要。 类别会动态出现,例如在身份验证或识别罕见异常情况时。
OSL 背后的核心机制是将问题从分类转向差异评估。系统不是 训练模型来记忆特定类别(如 "猫 "与 "狗"),而是学习一个 相似性函数。这通常是通过 神经网络 (NN)架构来实现。 连体网络。连体网络利用相同的子网络,共享相同的 模型权重来同时处理两个不同的输入图像。 同时进行处理。
在此过程中,网络会将高维输入(如图像)转换为紧凑的低维向量 称为嵌入。如果两张图像属于 同一类,网络就会被训练成在向量空间中将它们的嵌入定位靠拢。相反,如果 不同,它们的嵌入向量就会被推开。这一过程在很大程度上依赖于有效的 特征提取来捕捉物体的独特本质。 物体的独特本质。在推理过程中,将新图像的嵌入与存储的单个 "镜头 "进行比较,从而对图像进行分类。 "镜头 "进行比较,从而对新图像进行分类。 欧氏距离或余弦相似度。
下面的Python 代码段说明了如何使用 YOLO11提取嵌入并计算已知 "镜头 "与新查询图像之间的相似性。
import numpy as np
from ultralytics import YOLO
# Load a pre-trained YOLO11 classification model
model = YOLO("yolo11n-cls.pt")
# Extract embeddings for a 'shot' (reference) and a 'query' image
# The model returns a list of results; we access the first item
shot_result = model.embed("reference_image.jpg")[0]
query_result = model.embed("test_image.jpg")[0]
# Calculate Cosine Similarity (1.0 = identical, -1.0 = opposite)
# High similarity suggests the images belong to the same class
similarity = np.dot(shot_result, query_result) / (np.linalg.norm(shot_result) * np.linalg.norm(query_result))
print(f"Similarity Score: {similarity:.4f}")
要理解 OSL,就必须将其与其他低数据学习技术区分开来。虽然它们的共同目标是 但它们的限制条件却大不相同:
一键式学习使 人工智能 (AI) 在重新训练模型不切实际的动态环境中发挥作用。
尽管 "一次学习 "模型非常实用,但它在泛化方面也面临着挑战。因为该模型 由于该模型是从单个实例中推断类别的,因此很容易受到该参考图像中的噪声或异常值的影响。研究人员通常采用 元学习,或 "学习学习",以提高这些模型的稳定性。 提高这些模型的稳定性。像 PyTorch和 TensorFlow等框架正在不断发展,以支持这些先进的 架构。此外,结合 合成数据有助于增强单次拍摄、 为模型的学习提供更强大的表征。