Ultralytics YOLO27:
Get Started

SAM 2: Segment Anything Model 2#

Sự phát triển của SAM

SAM 2 phát triển dựa trên SAM ban đầu, bổ sung khả năng phân đoạn video. Để phân đoạn khái niệm có thể prompt bằng văn bản và ảnh mẫu, hãy xem SAM 3.

Inference with Segment Anything 2 In Colab

SAM 2, phiên bản kế nhiệm Segment Anything Model (SAM) của Meta, là công cụ tiên tiến được thiết kế để phân đoạn đối tượng toàn diện trong cả ảnh và video. Model này xử lý hiệu quả dữ liệu hình ảnh phức tạp thông qua kiến trúc model hợp nhất, có thể prompt, hỗ trợ xử lý thời gian thực và khả năng khái quát hóa zero-shot.

SAM 2 trên Ultralytics Platform

Các model SAM 2.1 hỗ trợ tính năng chú giải thông minh trên Ultralytics Platform, cho phép phân đoạn bằng thao tác nhấp để gán nhãn dataset nhanh chóng. Xem hướng dẫn chú giải để biết chi tiết.

Kết quả ví dụ của SAM 2

Tính năng chính#



Xem: Cách chạy inference với SAM2 của Meta bằng Ultralytics | Hướng dẫn từng bước 🎉

Kiến trúc model hợp nhất#

SAM 2 kết hợp các khả năng phân đoạn ảnh và video trong một model duy nhất. Sự hợp nhất này giúp đơn giản hóa quá trình triển khai và duy trì hiệu suất nhất quán trên nhiều loại phương tiện khác nhau. Model tận dụng giao diện linh hoạt dựa trên prompt, cho phép người dùng chỉ định các đối tượng quan tâm bằng nhiều loại prompt như điểm, bounding box hoặc mask.

Hiệu suất thời gian thực#

Model đạt tốc độ suy luận thời gian thực, xử lý khoảng 44 khung hình mỗi giây. Nhờ đó, SAM 2 phù hợp với các ứng dụng cần phản hồi tức thì, chẳng hạn như chỉnh sửa video và thực tế tăng cường.

Khả năng khái quát hóa zero-shot#

SAM 2 có thể phân đoạn các đối tượng chưa từng gặp trước đây, cho thấy khả năng khái quát hóa zero-shot mạnh mẽ. Điều này đặc biệt hữu ích trong các miền hình ảnh đa dạng hoặc luôn thay đổi, nơi các danh mục được xác định trước có thể không bao quát hết mọi đối tượng có thể xuất hiện.

Tinh chỉnh tương tác#

Người dùng có thể tinh chỉnh kết quả phân đoạn theo từng bước bằng cách cung cấp thêm prompt, nhờ đó kiểm soát chính xác đầu ra. Khả năng tương tác này rất cần thiết để tinh chỉnh kết quả trong các ứng dụng như gán nhãn video hoặc chẩn đoán hình ảnh y tế.

Xử lý các thách thức hình ảnh nâng cao#

SAM 2 có các cơ chế xử lý những thách thức thường gặp trong phân đoạn video, chẳng hạn như hiện tượng che khuất và tái xuất hiện của đối tượng. SAM 2 sử dụng cơ chế bộ nhớ tinh vi để theo dõi đối tượng qua các frame, đảm bảo tính liên tục ngay cả khi đối tượng tạm thời bị che khuất hoặc rời khỏi rồi quay lại cảnh.

Để hiểu sâu hơn về kiến trúc và các khả năng của SAM 2, hãy khám phá bài báo nghiên cứu về SAM 2.

Hiệu năng và chi tiết kỹ thuật#

SAM 2 thiết lập chuẩn mực mới trong lĩnh vực này, vượt trội hơn các model trước đây trên nhiều chỉ số:

Chỉ sốSAM 2SOTA trước đây
Phân đoạn video tương tácTốt nhất-
Số lượt tương tác cần thiết của con ngườiÍt hơn 3 lầnCơ sở
Độ chính xác phân đoạn ảnhĐược cải thiệnSAM
Tốc độ suy luậnNhanh hơn 6 lầnSAM

Kiến trúc model#

Các thành phần cốt lõi#

  • Encoder ảnh và video: Sử dụng kiến trúc dựa trên transformer để trích xuất các đặc trưng cấp cao từ cả ảnh và frame video. Thành phần này chịu trách nhiệm hiểu nội dung hình ảnh tại mỗi bước thời gian.
  • Encoder prompt: Xử lý các prompt do người dùng cung cấp (điểm, hộp, mask) để định hướng tác vụ phân đoạn. Nhờ đó, SAM 2 có thể thích ứng với đầu vào của người dùng và nhắm đến các đối tượng cụ thể trong cảnh.
  • Cơ chế bộ nhớ: Bao gồm encoder bộ nhớ, memory bank và module attention bộ nhớ. Các thành phần này cùng lưu trữ và sử dụng thông tin từ những frame trước, giúp model duy trì khả năng theo dõi đối tượng nhất quán theo thời gian.
  • Decoder mask: Tạo các mask phân đoạn cuối cùng dựa trên đặc trưng ảnh đã mã hóa và các prompt. Trong video, decoder cũng sử dụng ngữ cảnh bộ nhớ để đảm bảo theo dõi chính xác qua các frame.

Sơ đồ kiến trúc SAM 2

Cơ chế bộ nhớ và xử lý hiện tượng che khuất#

Cơ chế bộ nhớ cho phép SAM 2 xử lý các phụ thuộc theo thời gian và hiện tượng che khuất trong dữ liệu video. Khi các đối tượng di chuyển và tương tác, SAM 2 ghi lại đặc trưng của chúng vào memory bank. Khi một đối tượng bị che khuất, model có thể dựa vào bộ nhớ này để dự đoán vị trí và diện mạo của đối tượng khi xuất hiện trở lại. Occlusion head xử lý riêng các tình huống đối tượng không hiển thị, bằng cách dự đoán khả năng đối tượng bị che khuất.

Giải quyết sự mơ hồ giữa nhiều mask#

Trong các tình huống không rõ ràng (ví dụ: các đối tượng chồng lấn), SAM 2 có thể tạo ra nhiều dự đoán mask. Tính năng này rất quan trọng để biểu diễn chính xác các cảnh phức tạp, nơi một mask duy nhất có thể không mô tả đầy đủ các sắc thái của cảnh.

Dataset SA-V#

Dataset SA-V, được phát triển để huấn luyện SAM 2, là một trong những dataset phân đoạn video lớn nhất và đa dạng nhất hiện có. Dataset này bao gồm:

  • Hơn 51.000 video: Được ghi hình tại 47 quốc gia, cung cấp nhiều tình huống thực tế đa dạng.
  • Hơn 600.000 chú giải mask: Các chú giải mask không gian-thời gian chi tiết, được gọi là "masklet", bao phủ toàn bộ đối tượng và các bộ phận của chúng.
  • Quy mô dataset: Dataset có số video nhiều gấp 4,5 lần và số chú giải nhiều gấp 53 lần so với các dataset lớn nhất trước đây, mang lại mức độ đa dạng và phức tạp chưa từng có.

Benchmark#

Phân đoạn đối tượng trong video#

SAM 2 đã cho thấy hiệu năng vượt trội trên các benchmark phân đoạn video lớn:

DatasetJ&FJF
DAVIS 201782.579.885.2
YouTube-VOS81.278.983.5

Phân đoạn tương tác#

Trong các tác vụ phân đoạn tương tác, SAM 2 cho thấy hiệu quả và độ chính xác đáng kể:

DatasetNoC@90AUC
DAVIS tương tác1.540.872

Cài đặt#

Để cài đặt SAM 2, hãy dùng lệnh sau. Tất cả model SAM 2 sẽ tự động tải xuống trong lần sử dụng đầu tiên.

pip install ultralytics

Cách sử dụng SAM 2: Tính linh hoạt trong phân đoạn ảnh và video#

Bảng sau đây trình bày chi tiết các model SAM 2 hiện có, trọng số pretrained, các tác vụ được hỗ trợ và khả năng tương thích với các chế độ hoạt động khác nhau như Suy luận, Đánh giá, Huấn luyện và Xuất.

Loại modelWeights pretrainedCác tác vụ được hỗ trợHuấn luyệnValidationSuy luậnExport
SAM 2 tinysam2_t.ptPhân đoạn đối tượng❌❌✅❌
SAM 2 smallsam2_s.ptPhân đoạn đối tượng❌❌✅❌
SAM 2 basesam2_b.ptPhân đoạn đối tượng❌❌✅❌
SAM 2 largesam2_l.ptPhân đoạn đối tượng❌❌✅❌
SAM 2.1 tinysam2.1_t.ptPhân đoạn đối tượng❌❌✅❌
SAM 2.1 smallsam2.1_s.ptPhân đoạn đối tượng❌❌✅❌
SAM 2.1 basesam2.1_b.ptPhân đoạn đối tượng❌❌✅❌
SAM 2.1 largesam2.1_l.ptPhân đoạn đối tượng❌❌✅❌

Ví dụ dự đoán với SAM 2#

SAM 2 có thể được sử dụng trong nhiều tác vụ, bao gồm chỉnh sửa video theo thời gian thực, chẩn đoán hình ảnh y tế và các hệ thống tự hành. Khả năng phân đoạn cả dữ liệu hình ảnh tĩnh lẫn động khiến SAM 2 trở thành công cụ linh hoạt dành cho các nhà nghiên cứu và nhà phát triển.

Phân đoạn bằng prompt#

Phân đoạn bằng prompt

Dùng prompt để phân đoạn các đối tượng cụ thể trong ảnh hoặc video.

from ultralytics import SAM

# Tải model
model = SAM("sam2.1_b.pt")

# Hiển thị thông tin model (không bắt buộc)
model.info()

# Chạy suy luận với prompt bboxes
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Chạy suy luận với một điểm đơn
results = model(points=[900, 370], labels=[1])

# Chạy suy luận với nhiều điểm
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Chạy suy luận với prompt gồm nhiều điểm cho mỗi đối tượng
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Chạy suy luận với prompt gồm các điểm âm
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Phân đoạn mọi thứ#

Phân đoạn mọi thứ

Phân đoạn toàn bộ nội dung ảnh hoặc video mà không cần prompt cụ thể.

from ultralytics import SAM

# Tải model
model = SAM("sam2.1_b.pt")

# Hiển thị thông tin model (không bắt buộc)
model.info()

# Chạy suy luận
model("path/to/video.mp4")
  • Ví dụ này minh họa cách sử dụng SAM 2 để phân đoạn toàn bộ nội dung của ảnh hoặc video khi không cung cấp prompt (bboxes/points/masks).

Phân đoạn video và theo dõi đối tượng#

Phân đoạn video

Phân đoạn toàn bộ nội dung video bằng các prompt cụ thể và theo dõi đối tượng.

from ultralytics.models.sam import SAM2VideoPredictor

# Create SAM2VideoPredictor
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "sam2_b.pt"}
predictor = SAM2VideoPredictor(overrides=overrides)

# Chạy suy luận với một điểm đơn
results = predictor(source="test.mp4", points=[920, 470], labels=[1])

# Chạy suy luận với nhiều điểm
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])

# Chạy suy luận với prompt gồm nhiều điểm cho mỗi đối tượng
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])

# Chạy suy luận với prompt gồm các điểm âm
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])

Phân đoạn tương tác động và theo dõi#

SAM2DynamicInteractivePredictor là phần mở rộng nâng cao của SAM 2, không cần huấn luyện, cho phép tương tác động với nhiều frame và hỗ trợ khả năng học liên tục. Predictor này hỗ trợ cập nhật prompt theo thời gian thực và quản lý bộ nhớ nhằm cải thiện hiệu năng theo dõi xuyên suốt một chuỗi ảnh. So với SAM 2 gốc, SAM2DynamicInteractivePredictor xây dựng lại luồng suy luận để tận dụng tối đa các model SAM 2 pretrained mà không cần huấn luyện bổ sung.

Kết quả ví dụ của SAM 2

Tính năng chính#

Tính năng này mang lại ba cải tiến đáng kể:

  1. Tương tác động: Thêm prompt để hợp nhất hoặc theo dõi các instance mới trong những frame tiếp theo, bất cứ lúc nào trong quá trình xử lý video
  2. Học liên tục: Thêm prompt cho các instance hiện có để cải thiện hiệu năng của model theo thời gian
  3. Hỗ trợ nhiều ảnh độc lập: Xử lý nhiều ảnh độc lập (không nhất thiết thuộc cùng một chuỗi video) với khả năng chia sẻ bộ nhớ và theo dõi đối tượng xuyên ảnh

Các khả năng cốt lõi#

  • Tính linh hoạt của prompt: Chấp nhận hộp giới hạn, điểm và mask làm prompt
  • Quản lý memory bank: Duy trì memory bank động để lưu trạng thái đối tượng qua các frame
  • Theo dõi nhiều đối tượng: Hỗ trợ theo dõi đồng thời nhiều đối tượng với ID riêng cho từng đối tượng
  • Cập nhật theo thời gian thực: Cho phép thêm prompt trong quá trình suy luận mà không cần xử lý lại các frame trước đó
  • Xử lý ảnh độc lập: Xử lý các ảnh riêng lẻ với ngữ cảnh bộ nhớ dùng chung để đảm bảo tính nhất quán của đối tượng xuyên ảnh
Thêm đối tượng động
from ultralytics.models.sam import SAM2DynamicInteractivePredictor

# Create SAM2DynamicInteractivePredictor
overrides = {"conf": 0.01, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "sam2_t.pt", "save": False}
predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)

# Xác định một danh mục bằng prompt dạng hộp
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)

# Phát hiện đối tượng cụ thể này trong ảnh mới
results = predictor(source="image2.jpg")

# Thêm danh mục mới với ID đối tượng mới
results = predictor(
    source="image4.jpg",
    bboxes=[[300, 300, 400, 400]],  # Đối tượng mới
    obj_ids=[1],  # ID đối tượng mới
    update_memory=True,  # Thêm vào bộ nhớ
)
# Thực hiện suy luận
results = predictor(source="image5.jpg")

# Thêm các prompt tinh chỉnh vào cùng danh mục để cải thiện hiệu suất
# Điều này hữu ích khi diện mạo đối tượng thay đổi đáng kể
results = predictor(
    source="image6.jpg",
    points=[[150, 150]],  # Điểm tinh chỉnh
    labels=[1],  # Điểm dương
    obj_ids=[1],  # Cùng ID đối tượng
    update_memory=True,  # Cập nhật bộ nhớ bằng thông tin mới
)
# Thực hiện suy luận trên ảnh mới
results = predictor(source="image7.jpg")
Lưu ý

SAM2DynamicInteractivePredictor được thiết kế để hoạt động với các model SAM 2 và hỗ trợ thêm cũng như tinh chỉnh danh mục bằng tất cả prompt hộp, điểm và mask mà SAM 2 hỗ trợ nguyên bản. Tính năng này đặc biệt hữu ích trong các tình huống đối tượng xuất hiện hoặc thay đổi theo thời gian, chẳng hạn như chú thích video hoặc các tác vụ chỉnh sửa tương tác.

Đối số#

TênGiá trị mặc địnhKiểu dữ liệuMô tả
max_obj_num3intSố lượng danh mục tối đa được thiết lập sẵn
update_memoryFalseboolCó cập nhật bộ nhớ bằng prompt mới hay không
obj_idsNoneList[int]Danh sách ID đối tượng tương ứng với các prompt

Trường hợp sử dụng#

SAM2DynamicInteractivePredictor phù hợp với:

  • Quy trình chú thích video khi đối tượng mới xuất hiện trong chuỗi
  • Chỉnh sửa video tương tác cần thêm và tinh chỉnh đối tượng theo thời gian thực
  • Ứng dụng giám sát cần theo dõi đối tượng động
  • Chẩn đoán hình ảnh y tế để theo dõi cấu trúc giải phẫu qua chuỗi thời gian
  • Hệ thống tự hành cần phát hiện và theo dõi đối tượng thích ứng
  • Tập dữ liệu nhiều ảnh để phân đoạn đối tượng nhất quán trên các ảnh độc lập
  • Phân tích bộ sưu tập ảnh khi cần theo dõi đối tượng qua các cảnh khác nhau
  • Phân đoạn xuyên miền tận dụng bộ nhớ từ nhiều ngữ cảnh ảnh đa dạng
  • Chú thích bán tự động để tạo tập dữ liệu hiệu quả với ít can thiệp thủ công

So sánh SAM với YOLO#

Ở đây, chúng tôi so sánh các model SAM 2 của Meta, bao gồm biến thể SAM2-t nhỏ nhất, với các model phân đoạn của Ultralytics, bao gồm YOLO26n-seg:

ModelKích thước
(MB)
Tham số
(M)
Tốc độ (CPU)
(ms/ảnh)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s với backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (nhỏ hơn 11.0 lần)3.4 (ít hơn 11.4 lần)24.8 (nhanh hơn 945 lần)
Ultralytics YOLO11n-seg6.2 (nhỏ hơn 12.6 lần)2.9 (ít hơn 13.4 lần)24.3 (nhanh hơn 964 lần)
Ultralytics YOLO26n-seg6.7 (nhỏ hơn 11.7 lần)2.7 (ít hơn 14.4 lần)25.2 (nhanh hơn 930 lần)

So sánh này cho thấy sự khác biệt đáng kể về kích thước và tốc độ giữa các biến thể SAM và model phân đoạn YOLO. SAM có khả năng phân đoạn tự động độc đáo, nhưng các model YOLO, đặc biệt là YOLOv8n-seg, YOLO11n-seg và YOLO26n-seg, nhỏ hơn, nhanh hơn và hiệu quả tính toán hơn đáng kể.

Tốc độ SAM được đo bằng PyTorch, tốc độ YOLO được đo bằng ONNX Runtime. Các thử nghiệm được chạy trên Apple M4 Air 2025 với RAM 16GB, sử dụng torch==2.10.0, ultralytics==8.4.31 và onnxruntime==1.24.4. Để tái tạo thử nghiệm này:

Ví dụ
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Đo hiệu năng SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Lập hồ sơ FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Đo hiệu năng các model YOLO (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True, nms=False)  # Đầu NMS-free của YOLO26; không có tác dụng với YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Tự động chú thích: Tạo tập dữ liệu hiệu quả#

Tự động chú thích là một tính năng mạnh mẽ của SAM 2, cho phép người dùng tạo tập dữ liệu phân đoạn nhanh chóng và chính xác bằng cách tận dụng các model đã huấn luyện trước. Khả năng này đặc biệt hữu ích để tạo tập dữ liệu lớn, chất lượng cao mà không cần nhiều công sức chú thích thủ công.

Cách tự động chú thích bằng SAM 2#



Xem: Tự động gán nhãn bằng model Segment Anything 2 của Meta với Ultralytics | Gán nhãn dữ liệu

Để tự động chú thích tập dữ liệu bằng SAM 2, hãy làm theo ví dụ sau:

Ví dụ về tự động chú thích
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam2_b.pt")
Đối sốKiểuMặc địnhMô tả
datastrbắt buộcĐường dẫn đến thư mục chứa ảnh mục tiêu cần chú thích hoặc phân đoạn.
det_modelstr'yolo26x.pt'Đường dẫn đến model phát hiện YOLO để phát hiện đối tượng ban đầu.
sam_modelstr'sam_b.pt'Đường dẫn đến model SAM để phân đoạn (hỗ trợ các weight của SAM, SAM 2, MobileSAM và SAM 3).
devicestr''Thiết bị tính toán (ví dụ: 'cuda:0', 'cpu' hoặc '' để tự động phát hiện thiết bị).
conffloat0.25Ngưỡng confidence của model phát hiện YOLO để lọc các kết quả phát hiện yếu.
ioufloat0.45Ngưỡng IoU cho Non-Maximum Suppression để lọc các hộp chồng lấn.
imgszint640Kích thước đầu vào để thay đổi kích thước ảnh (nếu cần, làm tròn lên bội số của 32).
max_detint300Số lượng kết quả phát hiện tối đa trên mỗi ảnh để tiết kiệm bộ nhớ.
classeslist[int]NoneDanh sách chỉ số class cần phát hiện (ví dụ: [0, 1] cho người và xe đạp).
output_dirstrNoneThư mục lưu chú thích (mặc định: thư mục cùng cấp với <data>_auto_annotate_labels).

Hàm này hỗ trợ nhanh chóng tạo các tập dữ liệu phân đoạn chất lượng cao, phù hợp với các nhà nghiên cứu và nhà phát triển muốn đẩy nhanh tiến độ dự án.

Hạn chế#

Dù có nhiều ưu điểm, SAM 2 vẫn có một số hạn chế:

  • Độ ổn định khi theo dõi: SAM 2 có thể mất dấu đối tượng trong các chuỗi kéo dài hoặc khi góc nhìn thay đổi đáng kể.
  • Nhầm lẫn đối tượng: Đôi khi model có thể nhầm lẫn các đối tượng trông giống nhau, đặc biệt trong những cảnh đông đúc.
  • Hiệu quả khi xử lý nhiều đối tượng: Hiệu quả phân đoạn giảm khi xử lý đồng thời nhiều đối tượng do thiếu cơ chế giao tiếp giữa các đối tượng.
  • Độ chính xác chi tiết Accuracy: Có thể bỏ sót chi tiết nhỏ, nhất là với các đối tượng chuyển động nhanh. Prompt bổ sung có thể khắc phục phần nào vấn đề này, nhưng không đảm bảo độ mượt theo thời gian.

Trích dẫn và lời cảm ơn#

Nếu SAM 2 là một phần quan trọng trong công việc nghiên cứu hoặc phát triển của bạn, vui lòng trích dẫn theo tài liệu tham khảo sau:

Trích dẫn
@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
}

Chúng tôi xin cảm ơn Meta AI vì những đóng góp cho cộng đồng AI thông qua model và tập dữ liệu mang tính đột phá này.

Câu hỏi thường gặp#

  • SAM 2, phiên bản kế nhiệm Model Phân đoạn Mọi thứ (SAM) của Meta, là một công cụ tiên tiến được thiết kế để phân đoạn đối tượng toàn diện trong cả ảnh và video. Model này xử lý hiệu quả dữ liệu hình ảnh phức tạp nhờ kiến trúc model thống nhất, có thể điều khiển bằng prompt, hỗ trợ xử lý thời gian thực và khả năng khái quát hóa zero-shot. SAM 2 có một số cải tiến so với SAM ban đầu, bao gồm:

    • Kiến trúc model thống nhất: Kết hợp khả năng phân đoạn ảnh và video trong một model duy nhất.
    • Hiệu năng thời gian thực: Xử lý khoảng 44 khung hình mỗi giây, phù hợp với các ứng dụng cần phản hồi tức thì.
    • Khả năng khái quát hóa zero-shot: Phân đoạn các đối tượng model chưa từng gặp, hữu ích trong nhiều miền hình ảnh khác nhau.
    • Tinh chỉnh tương tác: Cho phép người dùng tinh chỉnh kết quả phân đoạn theo từng bước bằng cách cung cấp prompt bổ sung.
    • Xử lý nâng cao các thách thức hình ảnh: Xử lý các thách thức thường gặp trong phân đoạn video như đối tượng bị che khuất và xuất hiện trở lại.

    Để biết thêm chi tiết về kiến trúc và khả năng của SAM 2, hãy xem bài báo nghiên cứu về SAM 2.

  • Có thể sử dụng SAM 2 để phân đoạn video thời gian thực bằng cách tận dụng giao diện có thể điều khiển bằng prompt và khả năng suy luận thời gian thực. Đây là một ví dụ cơ bản:

    Phân đoạn bằng prompt

    Dùng prompt để phân đoạn các đối tượng cụ thể trong ảnh hoặc video.

    from ultralytics import SAM
    
    # Tải model
    model = SAM("sam2_b.pt")
    
    # Hiển thị thông tin model (không bắt buộc)
    model.info()
    
    # Phân đoạn bằng prompt hộp giới hạn
    results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
    
    # Phân đoạn bằng prompt điểm
    results = model("path/to/image.jpg", points=[150, 150], labels=[1])

    Để tìm hiểu cách sử dụng đầy đủ hơn, hãy tham khảo mục Cách sử dụng SAM 2.

  • SAM 2 được huấn luyện trên tập dữ liệu SA-V, một trong những tập dữ liệu phân đoạn video lớn nhất và đa dạng nhất hiện có. Tập dữ liệu SA-V bao gồm:

    • Hơn 51.000 video: Được ghi hình tại 47 quốc gia, cung cấp nhiều tình huống thực tế đa dạng.
    • Hơn 600.000 chú giải mask: Các chú giải mask không gian-thời gian chi tiết, được gọi là "masklet", bao phủ toàn bộ đối tượng và các bộ phận của chúng.
    • Quy mô tập dữ liệu: Có số video nhiều gấp 4,5 lần và số chú thích nhiều gấp 53 lần so với các tập dữ liệu lớn nhất trước đó, mang lại mức độ đa dạng và phức tạp chưa từng có.

    Tập dữ liệu phong phú này giúp SAM 2 đạt hiệu năng vượt trội trên các benchmark phân đoạn video chính và nâng cao khả năng khái quát hóa zero-shot. Để biết thêm thông tin, xem mục Tập dữ liệu SA-V.

  • SAM 2 có cơ chế bộ nhớ tinh vi để xử lý các phụ thuộc theo thời gian và tình trạng che khuất trong dữ liệu video. Cơ chế bộ nhớ gồm:

    • Bộ mã hóa bộ nhớ và ngân hàng bộ nhớ: Lưu trữ đặc trưng từ các khung hình trước.
    • Module attention bộ nhớ: Sử dụng thông tin đã lưu trữ để duy trì việc theo dõi đối tượng nhất quán theo thời gian.
    • Đầu dự đoán che khuất: Xử lý riêng các tình huống đối tượng không hiển thị, dự đoán khả năng đối tượng bị che khuất.

    Cơ chế này đảm bảo tính liên tục ngay cả khi đối tượng tạm thời bị che khuất hoặc rời khỏi rồi quay lại cảnh. Để biết thêm chi tiết, hãy tham khảo mục Cơ chế bộ nhớ và xử lý che khuất.

  • Các model SAM 2 như SAM2-t và SAM2-b của Meta có khả năng phân đoạn zero-shot mạnh mẽ, nhưng lớn hơn và chậm hơn đáng kể so với các model YOLO. Chẳng hạn, YOLO26n-seg nhỏ hơn khoảng 24 lần và nhanh hơn hơn 1145 lần so với SAM2-b trên CPU. SAM 2 nổi trội trong các tình huống phân đoạn đa dụng, dựa trên prompt và zero-shot, trong khi YOLO26 được tối ưu về tốc độ, hiệu quả và ứng dụng thời gian thực với suy luận end-to-end không cần NMS, nhờ đó phù hợp hơn để triển khai trong môi trường hạn chế tài nguyên.

Bình luận