One-Shot Learning
Khám phá One-Shot Learning trong AI. Tìm hiểu cách phân loại đối tượng từ một hình ảnh duy nhất bằng cách sử dụng Ultralytics YOLO26 và mạng Siamese để có thị giác máy tính hiệu quả.
One-Shot Learning là một kỹ thuật phân loại chuyên biệt trong machine learning (ML) được thiết kế để học thông tin về các danh mục đối tượng từ một ví dụ huấn luyện duy nhất. Không giống như các thuật toán deep learning (DL) truyền thống vốn yêu cầu các datasets lớn chứa hàng nghìn hình ảnh được gán nhãn để tổng quát hóa hiệu quả, One-Shot Learning mô phỏng khả năng nhận thức của con người để nắm bắt ngay lập tức một khái niệm mới. Ví dụ, một người thường có thể nhận ra một loài chim lạ cụ thể sau khi nhìn thấy nó chỉ một lần; phương pháp luận này cố gắng tái tạo hiệu quả đó trong các hệ thống artificial intelligence (AI). Nó đặc biệt có giá trị trong các kịch bản mà data labeling tốn kém, dữ liệu khan hiếm hoặc các danh mục mới phải được thêm động mà không cần huấn luyện lại toàn bộ model.
Các cơ chế đằng sau khái niệm này#
Nguyên tắc cốt lõi của One-Shot Learning liên quan đến việc chuyển đổi mục tiêu từ phân loại tiêu chuẩn sang đánh giá độ tương đồng. Thay vì huấn luyện một neural network (NN) để xuất ra một nhãn lớp cụ thể (ví dụ: "dog" hoặc "cat"), model học một hàm khoảng cách. Một kiến trúc phổ biến được áp dụng cho việc này là Siamese neural network, bao gồm hai mạng con giống hệt nhau chia sẻ cùng một model weights.
Trong quá trình hoạt động, mạng thực hiện feature extraction để chuyển đổi các hình ảnh đầu vào thành các vectơ số nhỏ gọn được gọi là embeddings. Hệ thống sau đó so sánh embedding của một hình ảnh truy vấn mới với embedding của "mẫu" tham chiếu duy nhất. Nếu khoảng cách toán học—thường được tính bằng Euclidean distance hoặc cosine similarity—nằm dưới một ngưỡng nhất định, các hình ảnh được xác định là thuộc cùng một lớp. Điều này cho phép model xác minh danh tính hoặc phân loại các đối tượng dựa trên độ gần của chúng trong không gian đặc trưng đã học.
Đoạn mã Python sau đây minh họa cách trích xuất embedding và tính toán độ tương đồng bằng cách sử dụng một classification model YOLO26 từ gói 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}")Phân biệt các mô hình liên quan#
Điều quan trọng là phải phân biệt One-Shot Learning với các kỹ thuật học tập hiệu quả về dữ liệu khác, vì chúng giải quyết các vấn đề tương tự thông qua các ràng buộc khác nhau:
- Few-Shot Learning (FSL): Đây là danh mục rộng hơn bao gồm One-Shot Learning. Trong FSL, model được cung cấp một "tập hỗ trợ" nhỏ gồm các ví dụ, thường dao động từ hai đến năm hình ảnh cho mỗi lớp. One-Shot Learning đơn giản là trường hợp cực đoan trong đó kích thước tập hỗ trợ chính xác là một.
- Zero-Shot Learning (ZSL): ZSL đề cập đến việc nhận dạng các danh mục mà model chưa bao giờ nhìn thấy về mặt thị giác. Thay vì một hình ảnh tham chiếu, ZSL dựa vào các thuộc tính ngữ nghĩa hoặc mô tả văn bản (ví dụ: xác định một "zebra" bằng cách liên kết các đặc trưng thị giác với mô tả văn bản "striped horse") thông qua natural language processing (NLP).
- Transfer Learning: Điều này liên quan đến việc lấy một model được huấn luyện trước trên một cơ sở dữ liệu lớn như ImageNet và tinh chỉnh nó cho một tác vụ mới. Mặc dù transfer learning cung cấp năng lượng cho các bộ trích xuất đặc trưng được sử dụng trong One-Shot Learning, nhưng transfer learning tiêu chuẩn thường yêu cầu nhiều hơn một ví dụ để cập nhật trọng số hiệu quả mà không bị overfitting.
Các ứng dụng trong thực tế#
One-Shot Learning đã mở ra các khả năng trong các lĩnh vực mà việc thu thập lượng lớn training data là không thực tế.
Nhận dạng khuôn mặt và bảo mật#
Ứng dụng phổ biến nhất của One-Shot Learning là trong bảo mật sinh mập. Khi thiết lập Face ID trên điện thoại thông minh hoặc đăng ký vào hệ thống truy cập của nhân viên, thiết bị sẽ chụp lại một biểu diễn toán học duy nhất về khuôn mặt của người dùng. Trong quá trình sử dụng hàng ngày, hệ thống facial recognition sẽ so sánh nguồn cấp dữ liệu camera trực tiếp với "mẫu đơn" được lưu trữ này để xác minh danh tính. Điều này dựa trên các kỹ thuật embedding mạnh mẽ, chẳng hạn như những kỹ thuật được thảo luận trong nghiên cứu nền tảng FaceNet research, để đảm bảo rằng các thay đổi về ánh sáng hoặc góc độ không làm hỏng kết quả khớp độ tương đồng.
Kiểm soát chất lượng công nghiệp#
Trong AI in manufacturing, việc tạo ra một tập dữ liệu cân bằng các bộ phận "bị lỗi" là khó khăn vì các lỗi rất hiếm và không nhất quán. One-Shot Learning cho phép các hệ thống computer vision (CV) học biểu diễn của một bộ phận tham chiếu "hoàn hảo" duy nhất. Bất kỳ mặt hàng nào trên dây chuyền lắp ráp tạo ra một embedding cách xa đáng kể so với tham chiếu này đều được gắn cờ để anomaly detection. Điều này cho phép đảm bảo chất lượng ngay lập tức mà không cần hàng nghìn hình ảnh về các bộ phận bị hỏng, có thể được quản lý và triển khai thông qua Ultralytics Platform.
Những thách thức và Triển vọng tương lai#
Mặc dù mạnh mẽ, One-Shot Learning dễ bị nhiễu; nếu hình ảnh tham chiếu duy nhất bị mờ, bị che khuất hoặc không đại diện, khả năng nhận dạng lớp đó của model sẽ giảm đi đáng kể. Các nhà nghiên cứu thường áp dụng meta-learning, hay "học cách học", để cải thiện độ ổn định và khả năng tổng quát hóa của model. Khi các kiến trúc tiến hóa, các model mới hơn như YOLO26 đang tích hợp nhiều bộ trích xuất đặc trưng mạnh mẽ hơn giúp cho việc suy luận one-shot trở nên nhanh hơn và chính xác hơn, mở đường cho các thiết bị edge AI thích ứng và thông minh hơn.






