One-Shot Learning
AIにおけるワンショット学習を探求します。効率的なコンピュータビジョンのために、Ultralytics YOLO26とSiameseネットワークを使用して単一の画像からオブジェクトを分類する方法を学びましょう。
One-Shot Learning is a specialized classification technique in machine learning (ML) designed to learn information about object categories from a single training example. Unlike traditional deep learning (DL) algorithms, which require massive datasets containing thousands of annotated images to generalize effectively, One-Shot Learning mimics the human cognitive ability to grasp a new concept instantly. For instance, a person can usually recognize a specific exotic bird after seeing it just once; this methodology attempts to replicate that efficiency in artificial intelligence (AI) systems. It is particularly valuable in scenarios where data labeling is expensive, data is scarce, or new categories must be added dynamically without retraining the entire model.
Link to this section概念の背後にあるメカニズム#
ワンショット学習の核心となる原則は、目的を標準的な分類から類似度評価へと移行させることにあります。モデルを特定のクラスラベル(「犬」や「猫」など)を出力するようにニューラルネットワーク (NN)でトレーニングする代わりに、モデルは距離関数を学習します。これに採用される一般的なアーキテクチャはシャムニューラルネットワークで、これは同じモデル重みを共有する2つの同一のサブネットワークで構成されています。
動作中、ネットワークは特徴抽出を実行し、入力画像を埋め込みとして知られるコンパクトな数値ベクトルに変換します。その後、システムは新しいクエリ画像の埋め込みと、単一の参照「ショット」の埋め込みを比較します。ユークリッド距離やコサイン類似度を使用して計算される数学的な距離が一定のしきい値を下回る場合、その画像は同じクラスに属すると判定されます。これにより、モデルは学習済み特徴空間内での近接性に基づいて、IDの検証やオブジェクトの分類を行うことが可能になります。
The following Python code demonstrates how to extract embeddings and calculate similarity using a YOLO26 classification model from the ultralytics package.
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関連パラダイムの区別#
ワンショット学習は他のデータ効率の高い学習技術とは区別することが重要です。これらは同様の問題を異なる制約を通じて解決するためです。
- フューショット学習 (FSL): これはワンショット学習を内包するより広範なカテゴリです。FSLでは、モデルにはクラスごとに通常2〜5枚の画像で構成される少数の「サポートセット」が提供されます。ワンショット学習は、サポートセットのサイズが正確に1である極端なケースです。
- ゼロショット学習 (ZSL): ZSLは、モデルが視覚的に一度も見たことのないカテゴリを認識することに対処します。参照画像を使用する代わりに、ZSLは自然言語処理 (NLP)を介して、意味的な属性やテキストの説明(例:「縞模様の馬」というテキスト説明と視覚的特徴を関連付けて「シマウマ」を識別する)に依存します。
- 転移学習: これには、ImageNetのような大規模なデータベースで事前トレーニングされたモデルを取得し、新しいタスクに合わせて微調整することが含まれます。転移学習はワンショット学習で使用される特徴抽出器の原動力となりますが、標準的な転移学習では、過学習を防ぎつつ重みを効果的に更新するために通常1つ以上の例が必要です。
Link to this section実社会での応用#
ワンショット学習は、膨大な量のトレーニングデータの収集が非現実的な分野において、新たな可能性を切り開いてきました。
Link to this section顔認証とセキュリティ#
ワンショット学習の最も普及している応用例は、生体認証セキュリティです。スマートフォンでFace IDを設定したり、従業員のアクセスシステムに登録したりする際、デバイスはユーザーの顔の単一の数学的表現をキャプチャします。日常的な使用中、顔認識システムはライブカメラ映像とこの保存された「ワンショット」を比較して本人確認を行います。これは、照明や角度の変化によって類似度判定が損なわれないようにするために、基礎となるFaceNet研究で議論されているような堅牢な埋め込み技術に依存しています。
Link to this section産業品質管理#
製造業におけるAIでは、欠陥はまれで一貫性がないため、「欠陥のある」部品のバランスの取れたデータセットを作成することは困難です。ワンショット学習により、コンピュータビジョン (CV)システムは単一の「完璧な」参照部品の表現を学習できます。組立ライン上のアイテムのうち、この参照値から著しく離れた埋め込みを生成するものは、異常検知の対象としてフラグが立てられます。これにより、破損した部品の何千もの画像を必要とせずに即座の品質保証が可能となり、Ultralytics Platformを介して管理および展開できます。
Link to this section課題と将来の展望#
強力な反面、ワンショット学習はノイズの影響を受けやすくなります。参照画像がぼやけている、遮られている、あるいは代表的でない場合、そのクラスを認識するモデルの能力は著しく低下します。研究者は、モデルの安定性と汎化性能を向上させるために、しばしばメタ学習(「学習するための学習」)を採用します。アーキテクチャが進化するにつれて、YOLO26のような新しいモデルは、より堅牢な特徴抽出器を組み込んでおり、ワンショット推論を高速かつ正確にし、より適応的でインテリジェントなエッジAIデバイスへの道を切り開いています。






