One-Shot Learning
Исследуй обучение на одном примере (One-Shot Learning) в ИИ. Узнай, как классифицировать объекты по одному изображению, используя Ultralytics YOLO26 и сиамские сети для эффективного компьютерного зрения.
One-Shot Learning — это специализированный метод классификации в machine learning (ML), разработанный для изучения информации о категориях объектов на основе одного обучающего примера. В отличие от традиционных алгоритмов deep learning (DL), требующих огромных datasets, содержащих тысячи аннотированных изображений, для эффективной генерализации, One-Shot Learning имитирует когнитивную способность человека мгновенно схватывать новую концепцию. Например, человек обычно может распознать специфическую экзотическую птицу, увидев её всего один раз; эта методология пытается воспроизвести такую эффективность в системах artificial intelligence (AI). Она особенно ценна в сценариях, где data labeling стоит дорого, данные дефицитны или необходимо динамически добавлять новые категории без переобучения всей модели.
Link to this sectionМеханизмы концепции#
Основной принцип One-Shot Learning заключается в смещении задачи со стандартной классификации на оценку сходства. Вместо обучения neural network (NN) выдаче метки конкретного класса (например, «собака» или «кошка»), модель изучает функцию расстояния. Распространенной архитектурой для этого является Siamese neural network, которая состоит из двух идентичных подсетей, использующих общие model weights.
Во время работы сеть выполняет feature extraction, преобразуя входные изображения в компактные числовые векторы, известные как embeddings. Затем система сравнивает вектор нового запроса с вектором единственного эталонного «снимка». Если математическое расстояние — часто вычисляемое с помощью Euclidean distance или cosine similarity — ниже определенного порога, считается, что изображения принадлежат к одному классу. Это позволяет модели проверять идентичность или классифицировать объекты на основе их близости в обученном пространстве признаков.
Следующий Python-код демонстрирует, как извлекать эмбеддинги и вычислять сходство с использованием модели классификации YOLO26 из пакета ultralytics.
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}")Link to this sectionРазграничение связанных парадигм#
Важно отличать One-Shot Learning от других методов обучения, эффективных по данным, поскольку они решают похожие задачи при разных ограничениях:
- Few-Shot Learning (FSL): Это более широкая категория, охватывающая One-Shot Learning. В FSL модели предоставляется небольшой «набор поддержки» из примеров, обычно от двух до пяти изображений на класс. One-Shot Learning — это просто крайний случай, когда размер набора поддержки составляет ровно один.
- Zero-Shot Learning (ZSL): ZSL занимается распознаванием категорий, которые модель никогда не видела визуально. Вместо эталонного изображения ZSL опирается на семантические атрибуты или текстовые описания (например, идентификация «зебры» путем связывания визуальных признаков с текстовым описанием «полосатая лошадь») с помощью natural language processing (NLP).
- Transfer Learning: Это включает использование модели, предварительно обученной на большой базе данных, такой как ImageNet, и её донастройку (fine-tuning) для новой задачи. Хотя transfer learning обеспечивает работу экстракторов признаков, используемых в One-Shot Learning, стандартный transfer learning обычно требует более одного примера для эффективного обновления весов без overfitting.
Link to this sectionРеальные приложения#
One-Shot Learning открыл возможности в секторах, где сбор огромных объемов training data непрактичен.
Link to this sectionРаспознавание лиц и безопасность#
Самое распространенное применение One-Shot Learning — это биометрическая безопасность. При настройке Face ID на смартфоне или регистрации в системе доступа сотрудников устройство фиксирует единственное математическое представление лица пользователя. Во время повседневного использования система facial recognition сравнивает поток с камеры в реальном времени с этим сохраненным «снимком» для подтверждения личности. Это опирается на надежные методы построения эмбеддингов, подобные тем, что обсуждались в фундаментальном FaceNet research, чтобы гарантировать, что изменения освещения или угла не нарушат совпадение сходства.
Link to this sectionПромышленный контроль качества#
В AI in manufacturing создание сбалансированного набора данных «дефектных» деталей затруднено, поскольку дефекты редки и непоследовательны. One-Shot Learning позволяет системам computer vision (CV) изучить представление одной «идеальной» эталонной детали. Любой элемент на сборочной линии, эмбеддинг которого значительно отличается от этого эталона, помечается для anomaly detection. Это обеспечивает мгновенный контроль качества без необходимости получения тысяч изображений сломанных деталей, что можно управлять и развертывать через Ultralytics Platform.
Link to this sectionПроблемы и перспективы на будущее#
Несмотря на свою мощность, One-Shot Learning восприимчив к шуму; если единственное эталонное изображение размыто, перекрыто или не является репрезентативным, способность модели распознавать этот класс значительно снижается. Исследователи часто используют meta-learning или «обучение обучению», чтобы улучшить стабильность и генерализацию модели. По мере развития архитектур новые модели, такие как YOLO26, включают более надежные экстракторы признаков, которые делают одношаговый вывод быстрее и точнее, прокладывая путь для более адаптивных и интеллектуальных устройств edge AI.






