Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Memory Bank

Memory bank lưu embedding từ các batch, frame hoặc ảnh tham chiếu trước đó để model có thể so sánh đầu vào mới với số lượng ví dụ lớn hơn nhiều so với một batch.

Memory bank là kho lưu trữ các vector feature, hay embedding, mà model đã tính toán trước đó, được giữ lại để so sánh đầu vào mới với nhiều ví dụ hơn số lượng có thể chứa trong một batch hoặc một lượt forward. Tùy phương pháp, các vector được lưu trữ có thể đến từ batch huấn luyện trước đó, frame video trước đó hoặc một tập tham chiếu gồm ảnh bình thường; memory bank được truy xuất bằng tra cứu độ tương đồng hoặc attention và được cập nhật khi có vector mới. Memory bank giữ vai trò trọng tâm trong ba lĩnh vực thị giác máy tính: học tương phản, nơi chúng cung cấp hàng nghìn ví dụ âm tính mỗi bước; phân đoạn video và tracking, nơi chúng ghi nhớ diện mạo của vật thể trong các frame trước; và phát hiện bất thường, nơi chúng lưu trữ đặc trưng của dữ liệu bình thường.

Memory bank trong học tương phản#

Học tự giám sát tương phản huấn luyện encoder để kéo hai góc nhìn của cùng một hình ảnh lại gần nhau và đẩy các hình ảnh khác ra xa; nhìn chung, càng có nhiều mẫu âm tính thì tín hiệu huấn luyện càng tốt. Việc so sánh với nhiều hình ảnh hơn thường đòi hỏi batch size lớn hơn, nhưng bộ nhớ GPU lại có giới hạn. Zhirong Wu và các cộng sự giới thiệu memory bank cho mục đích này trong bài báo Học feature không giám sát thông qua phân biệt instance phi tham số tại CVPR 2018: memory bank lưu feature 128 chiều cho từng ảnh trong số 1,28 triệu ảnh huấn luyện ImageNet, làm mới từng mục mỗi khi ảnh tương ứng xuất hiện lại và lấy hàng nghìn mẫu âm tính từ đó ở mỗi bước. Do các mục được ghi bởi những phiên bản encoder cũ hơn, feature lưu trữ dần lỗi thời và không còn nhất quán với model hiện tại.

Momentum Contrast (MoCo) của Kaiming He và các cộng sự tại Facebook AI Research khắc phục vấn đề này bằng một hàng đợi và encoder thứ hai. Memory bank lưu các key của những batch gần nhất, mặc định là 65.536 key; mỗi batch mới được đưa vào hàng đợi và batch cũ nhất bị loại bỏ. Key đến từ encoder momentum, có trọng số thay đổi chậm theo encoder chính: cập nhật bằng 0.999 lần giá trị cũ cộng với 0.001 lần trọng số của encoder chính, nhờ đó các key được ghi ở những bước khác nhau vẫn nhất quán với nhau.

Memory bank trong phân đoạn video và tracking#

Trong video, memory bank giúp model xử lý hiện tượng che khuất và thay đổi diện mạo bằng cách tham chiếu các frame trước đó. Mạng Space-Time Memory (STM) lưu feature key và value của các frame trước cùng mask của chúng, rồi phân đoạn mỗi frame mới bằng cách attention đến các thông tin đó; XMem mở rộng phương pháp này cho video dài với bộ nhớ ngắn hạn và dài hạn riêng biệt. SAM 2 của Meta lưu memory bank gồm các frame được người dùng gợi ý và các frame gần nhất; memory attention điều kiện hóa feature của mỗi frame mới dựa trên những frame đó, nhờ vậy mask có thể bám theo vật thể khi vật thể rời khỏi rồi xuất hiện lại trong khung hình. Trong package Ultralytics, SAM 2 mặc định attention đến các frame được gợi ý cộng với 6 frame gần nhất; SAM2DynamicInteractivePredictor thêm trạng thái đối tượng của ảnh được gợi ý vào memory bank khi được gọi với update_memory=True, sau đó phân đoạn các ảnh tiếp theo dựa trên thông tin đã lưu.

Tracker đa đối tượng dùng cùng ý tưởng để tái nhận diện: DeepSORT lưu thư viện gồm 100 descriptor diện mạo gần nhất của mỗi track và ghép phát hiện mới với track có descriptor lưu trữ gần nhất.

Memory bank cho phát hiện bất thường#

PatchCore, do Karsten Roth và các cộng sự trình bày tại CVPR 2022, xây dựng memory bank gồm feature patch được một CNN tiền huấn luyện trên ImageNet trích xuất từ ảnh sản phẩm không có lỗi. Điểm của patch kiểm tra được xác định bằng khoảng cách đến feature lưu trữ gần nhất; điểm ảnh là điểm patch cao nhất, nhờ đó mọi thứ khác biệt với tất cả patch bình thường đều nổi bật. Lấy mẫu coreset tham lam chỉ giữ lại một phần nhỏ feature nhưng vẫn bao phủ phạm vi phân bố của chúng; phương pháp đạt AUROC cấp ảnh lên tới 99.6% trên benchmark phát hiện lỗi công nghiệp MVTec AD.

Ví dụ PyTorch này áp dụng cách làm tương tự cho các chữ số viết tay 8x8, dùng pixel thô làm feature: 100 ảnh chữ số 3 tạo thành memory bank, còn mọi chữ số khác được xem là bất thường:

import torch
from sklearn.datasets import load_digits
from sklearn.metrics import roc_auc_score

X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
normal = X[y == 3]  # images of the digit 3 play the role of defect-free parts
memory_bank = normal[:100]  # memory bank: stored features of 100 normal images
test = torch.cat([normal[100:], X[y != 3]])  # unseen 3s plus every other digit as anomalies
is_anomaly = torch.cat([torch.zeros(len(normal) - 100), torch.ones(len(X) - len(normal))])

# Greedy coreset: repeatedly keep the stored feature farthest from everything kept so far
coreset = [0]
distance = torch.cdist(memory_bank, memory_bank[:1])[:, 0]
for _ in range(9):
    coreset.append(int(distance.argmax()))
    distance = torch.minimum(distance, torch.cdist(memory_bank, memory_bank[coreset[-1:]])[:, 0])

for name, bank in [("Full memory bank, 100 entries", memory_bank), ("Coreset, 10 entries", memory_bank[coreset])]:
    scores = torch.cdist(test, bank).min(dim=1).values  # anomaly score: distance to the nearest stored feature
    print(f"{name}: AUROC {roc_auc_score(is_anomaly, scores):.3f}")

Trên 1.697 ảnh kiểm tra, memory bank đầy đủ phân biệt 83 chữ số 3 chưa từng thấy với các chữ số khác, đạt diện tích dưới đường cong ROC (AUC) là 0.984; coreset 10 mục đạt 0.982, giữ được gần như toàn bộ chất lượng phát hiện với chỉ một phần mười bộ nhớ và số lượt tra cứu.

  • Cơ sở dữ liệu vector: Lưu embedding lâu dài và cung cấp chức năng tìm kiếm tương đồng cho nhiều ứng dụng. Memory bank nằm bên trong vòng lặp huấn luyện hoặc suy luận của một model, thường ở bộ nhớ GPU, và bị ghi đè khi model chạy.
  • Cửa sổ ngữ cảnh: Các token mà transformer attention trong một lượt xử lý. Memory bank lưu vector bên ngoài cửa sổ đó, lấy từ batch, frame hoặc hình ảnh khác.
  • Transformer-XL: Lưu trạng thái ẩn của đoạn văn bản trước đó làm bộ nhớ để đoạn tiếp theo attention đến; đây là memory bank các activation giúp mở rộng phạm vi của model ngôn ngữ vượt quá một cửa sổ.
  • Khai thác mẫu âm tính khó: Chọn các mẫu âm tính dễ gây nhầm lẫn nhất để huấn luyện. Memory bank cung cấp một tập lớn mẫu âm tính để phương pháp lựa chọn này khai thác.
  • Bộ nhớ theo tập: Trong agent AI và học tăng cường, đây là nơi lưu trữ các trải nghiệm trước đó được truy xuất để định hướng quyết định. Memory bank lưu vector phục vụ tính toán của chính model, chẳng hạn như mẫu âm tính, frame trước đó hoặc patch bình thường.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning