SAM 2: Mô hình phân đoạn mọi thứ 2#
SAM 2, phiên bản kế nhiệm của Mô hình 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ả hình ảnh và video. Model này nổi bật trong việc xử lý dữ liệu hình ảnh phức tạp thông qua kiến trúc model thống nhất, có thể nhắc lệnh, hỗ trợ xử lý theo thời gian thực và khả năng tổng quát hóa zero-shot.
Các model SAM 2.1 cung cấp năng lượng cho tính năng chú thích 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ú thích để biết thêm chi tiết.

Tính năng chính#
Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉
Kiến trúc model thống nhất#
SAM 2 kết hợp khả năng phân đoạn hình ảnh và video trong một model duy nhất. Sự thống nhất này đơn giản hóa việc triển khai và cho phép duy trì hiệu suất nhất quán trên các loại phương tiện khác nhau. Model tận dụng interface 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 thông qua nhiều loại prompt, chẳng hạn như điểm, bounding box hoặc mask.
Hiệu suất theo thời gian thực#
Model đạt tốc độ suy luận theo thời gian thực, xử lý khoảng 44 khung hình mỗi giây. Điều này khiến SAM 2 phù hợp với các ứng dụng yêu cầu 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 tổng quát hóa zero-shot#
SAM 2 có thể phân đoạn các đối tượng mà model chưa từng gặp trước đó, thể hiện khả năng tổng 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 thay đổi, nơi các danh mục được định nghĩa trước có thể không bao quá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ể lặp lại việc tinh chỉnh kết quả phân đoạn bằng cách cung cấp thêm prompt, cho phép kiểm soát chính xác đầu ra. Tính 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ư chú thích video hoặc chẩn đoán hình ảnh y khoa.
Xử lý nâng cao các thách thức về hình ảnh#
SAM 2 bao gồm các cơ chế xử lý những thách thức phổ biến trong phân đoạn video, chẳng hạn như che khuất và tái xuất hiện của đối tượng. Model sử dụng cơ chế memory tinh vi để theo dõi đối tượng qua các khung hình, đả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à khả năng của SAM 2, hãy tham khảo bài báo nghiên cứu về SAM 2.
Hiệu suất và chi tiết kỹ thuật#
SAM 2 thiết lập một benchmark mới trong lĩnh vực này, vượt qua các model trước đây trên nhiều metric khác nhau:
| Chỉ số | SAM 2 | SOTA trước đây |
|---|---|---|
| Phân đoạn video tương tác | Tốt nhất | - |
| Số lần tương tác cần thiết của con người | Ít hơn 3 lần | Baseline |
| Độ chính xác phân đoạn hình ảnh | Cải thiện | SAM |
| Tốc độ suy luận | Nhanh hơn 6 lần | SAM |
Kiến trúc model#
Các thành phần cốt lõi#
- Bộ mã hóa hình ả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ả hình ảnh và khung hình 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 thời điểm.
- Bộ mã hóa prompt: Xử lý các prompt do người dùng cung cấp (điểm, box, mask) để định hướng tác vụ phân đoạn. Điều này cho phép SAM 2 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 một cảnh.
- Cơ chế memory: Bao gồm bộ mã hóa memory, memory bank và module attention của memory. Các thành phần này cùng lưu trữ và sử dụng thông tin từ những khung hình trước đó, cho phép model duy trì việc theo dõi đối tượng nhất quán theo thời gian.
- Bộ giải mã mask: Tạo các mask phân đoạn cuối cùng dựa trên đặc trưng hình ảnh và prompt đã được mã hóa. Trong video, bộ giải mã cũng sử dụng ngữ cảnh memory để đảm bảo theo dõi chính xác qua các khung hình.

Cơ chế memory và xử lý che khuất#
Cơ chế memory 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 memory này để dự đoán vị trí và diện mạo của đối tượng khi nó xuất hiện trở lại. Head xử lý che khuất chuyên biệt xử lý các tình huống đối tượng không nhìn thấy, dự đoán khả năng đối tượng đang bị che khuất.
Giải quyết sự mơ hồ của nhiều mask#
Trong các tình huống mơ hồ (ví dụ: các đối tượng chồng lấn), SAM 2 có thể tạo 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, trong đó 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 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ú thích mask: Các chú thích 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 đối tượng.
- Quy mô dataset: Dataset 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 dataset lớn nhất trước đây, mang lại sự đ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 đã chứng minh hiệu suất vượt trội trên các benchmark phân đoạn video chính:
| Dataset | J&F | J | F |
|---|---|---|---|
| DAVIS 2017 | 82.5 | 79.8 | 85.2 |
| YouTube-VOS | 81.2 | 78.9 | 83.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ể:
| Dataset | NoC@90 | AUC |
|---|---|---|
| DAVIS Interactive | 1.54 | 0.872 |
Cài đặt#
Để cài đặt SAM 2, hãy sử dụng lệnh sau. Tất cả model SAM 2 sẽ tự động được tải xuống trong lần sử dụng đầu tiên.
pip install ultralyticsCách sử dụng SAM 2: Tính linh hoạt trong phân đoạn hình ảnh và video#
Bảng sau đây trình bày chi tiết các model SAM 2 hiện có, pretrained weights, các tác vụ được hỗ trợ và khả năng tương thích với những chế độ vận hành khác nhau như Suy luận, Xác thực, Huấn luyện và Xuất.
| Loại model | Pretrained weight | Các tác vụ được hỗ trợ | Training | Validation | Inference | Export |
|---|---|---|---|---|---|---|
| SAM 2 bản tiny | sam2_t.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2 bản small | sam2_s.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2 bản base | sam2_b.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2 bản large | sam2_l.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 bản tiny | sam2.1_t.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 bản small | sam2.1_s.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 bản base | sam2.1_b.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 bản large | sam2.1_l.pt | Phân đoạn instance | ❌ | ❌ | ✅ | ❌ |
Các ví dụ dự đoán với SAM 2#
SAM 2 có thể được sử dụng cho nhiều loại 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 khoa 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 và động khiến SAM 2 trở thành công cụ linh hoạt cho các nhà nghiên cứu và developer.
Phân đoạn bằng prompt#
Sử dụng prompt để phân đoạn các đối tượng cụ thể trong hình ảnh hoặc video.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])Phân đoạn mọi thứ#
Phân đoạn toàn bộ nội dung hình ảnh hoặc video mà không cần prompt cụ thể.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference
model("path/to/video.mp4")Phân đoạn video và theo dõi đối tượng#
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)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])- 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 hình ảnh hoặc video khi không cung cấp prompt (bbox/điểm/mask).
Phân đoạn và theo dõi tương tác động#
SAM2DynamicInteractivePredictor là một phần mở rộng tiên tiến không cần huấn luyện của SAM 2, cho phép tương tác động với nhiều khung hình và khả năng học tập liên tục. Trình dự đoán này hỗ trợ cập nhật prompt thời gian thực và quản lý bộ nhớ để cải thiện hiệu suất theo dõi qua một chuỗi hình ảnh. So với SAM 2 nguyên bản, SAM2DynamicInteractivePredictor xây dựng lại luồng suy luận để tận dụng tối đa các model SAM 2 đã huấn luyện trước mà không cần huấn luyện bổ sung.

Tính năng chính#
Extension này cung cấp ba cải tiến đáng kể:
- Tương tác động: Thêm prompt mới để hợp nhất/các instance mới chưa được theo dõi trong những khung hình tiếp theo bất kỳ lúc nào trong quá trình xử lý video
- Continual learning: Thêm prompt mới cho các instance hiện có để cải thiện hiệu suất của model theo thời gian
- Hỗ trợ nhiều hình ảnh độc lập: Xử lý nhiều hình ả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ẻ memory và theo dõi đối tượng xuyên suốt các hình ảnh
Các khả năng cốt lõi#
- Tính linh hoạt của prompt: Chấp nhận bounding box, điểm và mask làm prompt
- Quản lý memory bank: Duy trì memory bank động để lưu trữ trạng thái đối tượng qua các khung hình
- 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 mới trong quá trình inference 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 độc lập với ngữ cảnh bộ nhớ dùng chung để đảm bảo tính nhất quán của đối tượng giữa các ảnh
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)
# Define a category by box prompt
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)
# Detect this particular object in a new image
results = predictor(source="image2.jpg")
# Add new category with a new object ID
results = predictor(
source="image4.jpg",
bboxes=[[300, 300, 400, 400]], # New object
obj_ids=[1], # New object ID
update_memory=True, # Add to memory
)
# Perform inference
results = predictor(source="image5.jpg")
# Add refinement prompts to the same category to boost performance
# This helps when object appearance changes significantly
results = predictor(
source="image6.jpg",
points=[[150, 150]], # Refinement point
labels=[1], # Positive point
obj_ids=[1], # Same object ID
update_memory=True, # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")SAM2DynamicInteractivePredictor được thiết kế để hoạt động với các model SAM 2, đồng thời hỗ trợ thêm và tinh chỉnh các danh mục với tất cả các box, point, and mask prompts mà SAM 2 hỗ trợ nguyên bản. Nó đặc biệt hữu ích cho các kịch bản trong đó các đối tượng xuất hiện hoặc thay đổi theo thời gian, chẳng hạn như trong các tác vụ chú thích video hoặc chỉnh sửa tương tác.
Arguments#
| Tên | Giá trị mặc định | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
max_obj_num | 3 | int | Số danh mục tối đa được đặt trước |
update_memory | False | bool | Có cập nhật bộ nhớ bằng prompt mới hay không |
obj_ids | None | List[int] | Danh sách ID đối tượng tương ứng với các prompt |
Các trường hợp sử dụng#
SAM2DynamicInteractivePredictor lý tưởng cho:
- Quy trình gán nhãn video khi các đối tượng mới xuất hiện trong chuỗi
- Chỉnh sửa video tương tác yêu cầu thêm và tinh chỉnh đối tượng theo thời gian thực
- Ứng dụng giám sát có nhu cầu theo dõi đối tượng động
- Ảnh y khoa để theo dõi các cấu trúc giải phẫu qua các chuỗi thời gian
- Hệ thống tự hành yêu cầu phát hiện và theo dõi đối tượng thích ứng
- Bộ 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 bối cảnh khác nhau
- Phân đoạn xuyên miền tận dụng bộ nhớ từ các ngữ cảnh ảnh đa dạng
- Gán nhãn bán tự động để tạo bộ dữ liệu hiệu quả với tối thiểu sự can thiệp thủ công
So sánh SAM với YOLO#
Tại đâ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:
| Model | Kích thước (MB) | Số tham số (M) | Tốc độ (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s với backbone YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7,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-seg | 6.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-seg | 6,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 độ model giữa các biến thể SAM và các model phân đoạn YOLO. Mặc dù SAM cung cấp khả năng phân đoạn tự động độc đáo, 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 cao hơn đáng kể.
Tốc độ SAM được đo bằng PyTorch, còn tốc độ YOLO được đo bằng ONNX Runtime. Các phép thử được chạy trên Apple M4 Air 2025 với RAM 16GB bằng torch==2.10.0, ultralytics==8.4.31 và onnxruntime==1.24.4. Để tái hiện phép thử này:
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile 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)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLO models (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) # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
model = YOLO(onnx_path)
model(ASSETS)Tự động gán nhãn: Tạo bộ dữ liệu hiệu quả#
Tự động gán nhãn là một tính năng mạnh mẽ của SAM 2, cho phép người dùng nhanh chóng và chính xác tạo các bộ dữ liệu phân đoạn bằng cách tận dụng các model pretrained. Khả năng này đặc biệt hữu ích để tạo các bộ dữ liệu lớn, chất lượng cao mà không cần nhiều công sức thủ công.
Cách tự động gán nhãn bằng SAM 2#
Watch: Auto Annotation with Meta's Segment Anything 2 Model using Ultralytics | Data Labeling
Để tự động gán nhãn cho bộ dữ liệu bằng SAM 2, hãy làm theo ví dụ sau:
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ểu | Mặc định | Mô tả |
|---|---|---|---|
data | str | bắt buộc | Đường dẫn đến thư mục chứa các ảnh mục tiêu cần gán nhãn hoặc phân đoạn. |
det_model | str | 'yolo26x.pt' | Đường dẫn đến model phát hiện YOLO để phát hiện đối tượng ban đầu. |
sam_model | str | 'sam_b.pt' | Đường dẫn đến model SAM để phân đoạn (hỗ trợ trọng số SAM, SAM 2, MobileSAM và SAM 3). |
device | str | '' | Thiết bị tính toán (ví dụ: 'cuda:0', 'cpu' hoặc '' để tự động phát hiện thiết bị). |
conf | float | 0.25 | Ngưỡng độ tin cậy phát hiện YOLO để lọc các detection yếu. |
iou | float | 0.45 | Ngưỡng IoU cho Non-Maximum Suppression để lọc các box chồng lấp. |
imgsz | int | 640 | Kích thước đầu vào để resize ảnh (phải là bội số của 32). |
max_det | int | 300 | Số detection tối đa trên mỗi ảnh để sử dụng bộ nhớ hiệu quả. |
classes | list[int] | None | Danh sách index lớp cần phát hiện (ví dụ: [0, 1] cho người và xe đạp). |
output_dir | str | None | Thư mục lưu các annotation (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 bộ dữ liệu phân đoạn chất lượng cao, lý tưởng cho các nhà nghiên cứu và developer muốn đẩy nhanh dự án của mình.
Hạn chế#
Mặc dù có nhiều ưu điểm, SAM 2 vẫn có một số hạn chế nhất định:
- Độ ổ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: Model đôi khi có thể nhầm lẫn các đối tượng có ngoại hình tương tự, đặc biệt trong những cảnh đông người hoặc nhiều vật thể.
- Hiệu quả với 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: Có thể bỏ sót các chi tiết nhỏ, đặc biệt với các đối tượng chuyển động nhanh. Prompt bổ sung có thể giải quyết một phần vấn đề này, nhưng không đảm bảo độ mượt theo thời gian.
Trích dẫn và ghi nhận đóng góp#
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 bằng tài liệu tham khảo sau:
@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 chân thành cảm ơn Meta AI vì những đóng góp cho cộng đồng AI thông qua model và bộ dữ liệu đột phá này.
FAQ#
SAM 2, phiên bản kế nhiệm của Segment Anything Model (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ý dữ liệu hình ảnh phức tạp hiệu quả nhờ kiến trúc model thống nhất, có thể sử dụng prompt, hỗ trợ xử lý theo thời gian thực và khả năng khái quát zero-shot. SAM 2 cung cấp 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 theo thời gian thực: Xử lý khoảng 44 frame mỗi giây, phù hợp với các ứng dụng yêu cầu phản hồi tức thì.
- Khái quát zero-shot: Phân đoạn các đối tượng mà model chưa từng gặp, hữu ích trong nhiều miền hình ảnh đa dạng.
- Tinh chỉnh tương tác: Cho phép người dùng lặp lại việc tinh chỉnh kết quả phân đoạn bằng cách cung cấp thêm prompt.
- Xử lý nâng cao các thách thức về hình ảnh: Xử lý các thách thức phổ biến trong phân đoạn video như che khuất và xuất hiện trở lại của đối tượng.
Để 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 theo thời gian thực bằng cách tận dụng giao diện có thể sử dụng prompt và khả năng inference theo thời gian thực. Sau đây là một ví dụ cơ bản:
Phân đoạn bằng promptSử dụng prompt để phân đoạn các đối tượng cụ thể trong hình ảnh hoặc video.
from ultralytics import SAM # Load a model model = SAM("sam2_b.pt") # Display model information (optional) model.info() # Segment with bounding box prompt results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200]) # Segment with point prompt results = model("path/to/image.jpg", points=[150, 150], labels=[1])Để biết cách sử dụng đầy đủ hơn, hãy tham khảo phần Cách sử dụng SAM 2.
SAM 2 được huấn luyện trên bộ dữ liệu SA-V, một trong những bộ dữ liệu phân đoạn video lớn nhất và đa dạng nhất hiện có. Bộ 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ú thích mask: Các chú thích 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 đối tượng.
- Quy mô bộ dữ liệu: Có số lượng video nhiều hơn 4,5 lần và annotation nhiều hơn 53 lần so với các bộ dữ liệu 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ó.
Bộ dữ liệu mở rộng 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 lớn và nâng cao khả năng khái quát zero-shot. Để biết thêm thông tin, hãy xem phần Bộ dữ liệu SA-V.
SAM 2 bao gồm một cơ chế bộ nhớ tinh vi để quản lý các phụ thuộc theo thời gian và hiện tượng che khuất trong dữ liệu video. Cơ chế bộ nhớ này bao gồm:
- Bộ mã hóa bộ nhớ và ngân hàng bộ nhớ: Lưu trữ các đặc trưng từ những frame trước.
- Module attention của bộ nhớ: Sử dụng thông tin đã lưu để duy trì việc theo dõi đối tượng nhất quán theo thời gian.
- Head 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 xuất hiện lại trong cảnh. Để biết thêm chi tiết, hãy tham khảo phần Cơ chế bộ nhớ và xử lý che khuất.
Các model SAM 2 như SAM2-t và SAM2-b của Meta cung cấp 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 1145 lần so với SAM2-b trên CPU. Trong khi SAM 2 nổi bật trong các tình huống phân đoạn linh hoạt, dựa trên prompt và zero-shot, YOLO26 được tối ưu cho tốc độ, hiệu quả và các ứng dụng theo thời gian thực với inference end-to-end không cần NMS, phù hợp hơn để triển khai trong môi trường hạn chế tài nguyên.