SAM 2.1
Chúng tôi vừa thêm hỗ trợ cho mô hình SAM2.1 chính xác hơn. Hãy dùng thử nhé!
SAM2: Segment Anything Model 2
SAM2, 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ả hình ảnh và video. Nó vượt trội trong việc xử lý dữ liệu trực quan phức tạp thông qua kiến trúc mô hình thống nhất, có thể điều khiển được, hỗ trợ xử lý thời gian thực và khái quát hóa zero-shot.
Các tính năng chính
Xem: Cách chạy suy luận với SAM2 của Meta bằng Ultralytics | Hướng dẫn từng bước 🎉
Kiến trúc Mô hình Thống nhất
SAM2 kết hợp khả năng phân đoạn hình ảnh và video trong một mô hình duy nhất. Sự thống nhất này đơn giản hóa việc triển khai và cho phép hiệu suất nhất quán trên các loại phương tiện khác nhau. Nó tận dụng giao diện dựa trên lời nhắc linh hoạt, cho phép người dùng chỉ định các đối tượng quan tâm thông qua nhiều loại lời nhắc khác nhau, chẳng hạn như điểm, hộp giới hạn hoặc mặt nạ.
Hiệu suất Theo thời gian thực
Mô hình đạt được 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 làm cho SAM2 phù hợp cho các ứng dụng yêu cầu phản hồi ngay lập tức, chẳng hạn như chỉnh sửa video và thực tế tăng cường.
Khái quát hóa Zero-Shot
SAM2 có thể phân đoạn các đối tượng mà nó chưa từng gặp trước đây, thể hiện 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 lĩnh vực trực quan đa dạng hoặc đang phát triển, nơi các danh mục được xác định trước có thể không bao gồm tất cả các đối tượng có thể có.
Tinh chỉnh Tương tác
Người dùng có thể tinh chỉnh lặp đi lặp lại kết quả phân đoạn bằng cách cung cấp thêm các lời nhắc, 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 hình ảnh y tế.
Xử lý Nâng cao các Thách thức Trực quan
SAM2 bao gồm các cơ chế để quản lý các thách thức phân đoạn video phổ biến, chẳng hạn như vật thể bị che khuất và xuất hiện trở lại. Nó sử dụng một cơ chế bộ nhớ phức tạp để theo dõi các đối tượng trên các khung hình, đảm bảo tính liên tục ngay cả khi các đối tượng bị che khuất tạm thời hoặc thoát ra và quay lại cảnh.
Để hiểu sâu hơn về kiến trúc và khả năng của SAM2, hãy khám phá bài nghiên cứu về SAM2.
Hiệu suất và Chi tiết Kỹ thuật
SAM2 đặt ra một chuẩn mực mới trong lĩnh vực này, vượt trội hơn các mô hình trước đó về nhiều chỉ số:
Chỉ số | SAM 2 | SOTA trước đây |
---|---|---|
Phân đoạn video tương tác | Tốt nhất | - |
Yêu cầu tương tác từ người dùng | Ít hơn 3 lần | Cơ sở |
Độ chính xác của 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 Mô hình
Các Thành phần Cốt lõi
- Bộ mã hóa Ả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à khung hình video. Thành phần này chịu trách nhiệm hiểu nội dung trực quan tại mỗi bước thời gian.
- Bộ mã hóa Prompt: Xử lý các prompt do người dùng cung cấp (điểm, hộp, mặt nạ) để hướng dẫn 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 mục tiêu các đối tượng cụ thể trong một cảnh.
- Cơ chế Bộ nhớ: Bao gồm bộ mã hóa bộ nhớ, ngân hàng bộ nhớ và mô-đun chú ý bộ nhớ. Các thành phần này cùng nhau lưu trữ và sử dụng thông tin từ các khung hình trước, cho phép mô hình duy trì theo dõi đối tượng nhất quán theo thời gian.
- Bộ giải mã Mặt nạ: Tạo ra các mặt nạ phân đoạn cuối cùng dựa trên các đặc trưng ảnh và prompt đã được mã hóa. Trong video, nó cũng sử dụng ngữ cảnh bộ nhớ để đảm bảo theo dõi chính xác trên các khung hình.
Cơ chế Bộ nhớ và Xử lý Tắc nghẽn
Cơ chế bộ nhớ cho phép SAM 2 xử lý các phụ thuộc thời gian và tắc nghẽn 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ác đặc trưng của chúng trong một ngân hàng bộ nhớ. Khi một đối tượng bị che khuất, mô hình có thể dựa vào bộ nhớ này để dự đoán vị trí và hình dạng của nó khi nó xuất hiện trở lại. Phần occlusion head đặc biệt xử lý các tình huống mà các đối tượng không hiển thị, dự đoán khả năng một đối tượng bị che khuất.
Giải quyết Sự mơ hồ Đa mặt nạ
Trong các tình huống có sự mơ hồ (ví dụ: các đối tượng chồng chéo), SAM 2 có thể tạo ra nhiều dự đoán mặt nạ. Tính năng này rất quan trọng để thể hiện chính xác các cảnh phức tạp, nơi một mặt nạ duy nhất có thể không mô tả đầy đủ các sắc thái của cảnh.
Bộ dữ liệu SA-V
Tập dữ liệu SA-V, được phát triển để đào tạo SAM 2, là 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ó. Nó bao gồm:
- Hơn 51.000 Video: Được thu thập trên 47 quốc gia, cung cấp một loạt các tình huống thực tế.
- Hơn 600.000 Chú thích Mặt nạ: Chú thích mặt nạ không-thời gian chi tiết, được gọi là "masklets", bao phủ toàn bộ đối tượng và các bộ phận.
- Quy mô Tập dữ liệu: Nó có số lượng video nhiều hơn 4,5 lần và số lượng chú thích nhiều hơn 53 lần so với các tập dữ liệu lớn nhất trước đây, mang lại sự đa dạng và phức tạp chưa từng có.
Điểm chuẩn
Phân đoạn Đối tượng Video
SAM 2 đã chứng minh hiệu suất vượt trội trên các chuẩn đo lường phân đoạn video chính:
Bộ dữ liệu | 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ể:
Bộ dữ liệu | 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ả các mô hình SAM 2 sẽ tự động tải xuống khi sử dụng lần đầu.
pip install ultralytics
Cá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 mô hình SAM 2 hiện có, trọng số đã được huấn luyện trước, 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, Xác thực, Huấn luyện và Xuất.
Loại mô hình | Trọng số được huấn luyện trước | Các tác vụ được hỗ trợ | Suy luận | Xác thực | Huấn luyện | Xuất |
---|---|---|---|---|---|---|
SAM 2 tiny | sam2_t.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2 small | sam2_s.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2 base | sam2_b.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2 large | sam2_l.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 tiny | sam2.1_t.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 small | sam2.1_s.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 base | sam2.1_b.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 large | sam2.1_l.pt | Phân đoạn thực thể | ✅ | ❌ | ❌ | ❌ |
Ví dụ Dự đoán của SAM 2
SAM 2 có thể được sử dụng trên một loạt các tác vụ, bao gồm chỉnh sửa video thời gian thực, xử lý ảnh y tế và các hệ thống tự động. Khả năng phân đoạn dữ liệu trực quan tĩnh và động của nó làm cho nó trở thành một công cụ linh hoạt cho các nhà nghiên cứu và nhà phát triển.
Phân đoạn theo gợi ý
Phân đoạn theo gợi ý
Sử dụng dấu nhắc để 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 mọi thứ
Phân đoạn toàn bộ nội dung hình ảnh hoặc video mà không cần dấu nhắc 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")
# Run inference with a SAM 2 model
yolo predict model=sam2.1_b.pt source=path/to/video.mp4
Phân đoạn video và theo dõi các đối tượng
Phân đoạn video
Phân đoạn toàn bộ nội dung video bằng các dấu nhắc cụ thể và theo dõi các đối tượng.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(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 SAM 2 có thể được sử dụng để phân đoạn toàn bộ nội dung của hình ảnh hoặc video nếu không có dấu nhắc nào (bboxes/điểm/mặt nạ) được cung cấp.
Phân đoạn và theo dõi tương tác động
SAM2DynamicInteractivePredictor là phần mở rộng đào tạo nâng cao miễn phí của SAM2 cho phép tương tác động với nhiều khung hình và khả năng học liên tục. Bộ dự đoán này hỗ trợ cập nhật tức thời theo thời gian thực và quản lý bộ nhớ để cải thiện hiệu suất theo dõi trên một chuỗi hình ảnh. So với bản gốc SAM2 , SAM2DynamicInteractivePredictor xây dựng lại luồng suy luận để tận dụng tối đa các dữ liệu được đào tạo trước SAM2 mô hình mà không cần đào tạo thêm.
Các tính năng chính
Nó cung cấp ba cải tiến đáng kể:
- Tương tác động : Thêm lời nhắc mới để hợp nhất/không theo dõi các trường hợp mới trong các khung hình tiếp theo bất kỳ lúc nào trong quá trình xử lý video
- Học tập liên tục : Thêm lời nhắc mới cho các phiên bản hiện có để cải thiện hiệu suất mô hình 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 phải từ một chuỗi video) với tính năng chia sẻ bộ nhớ và theo dõi đối tượng trên nhiều hình ảnh
Năng lực cốt lõi
- Tính linh hoạt của lời nhắc : Chấp nhận các hộp giới hạn, điểm và mặt nạ làm lời nhắc
- Quản lý ngân hàng bộ nhớ : Duy trì một ngân hàng bộ nhớ động để lưu trữ trạng thái đối tượng trên các khung hình
- Theo dõi nhiều đối tượng : Hỗ trợ theo dõi nhiều đối tượng cùng lúc với từng ID đối tượng riêng lẻ
- Cập nhật theo thời gian thực : Cho phép thêm lời nhắc mới trong quá trình suy luận mà không cần xử lý lại các khung hình trước đó
- Xử lý hình ảnh độc lập : Xử lý hình ảnh độc lập với bối cảnh bộ nhớ chia sẻ để đảm bảo tính nhất quán của đối tượng giữa các hình ảnh
Thêm đối tượng động
from ultralytics.models.sam import SAM2DynamicInteractivePredictor
# Create SAM2DynamicInteractivePredictor
overrides = dict(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.inference(img="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[1], 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=[2], # New object ID
update_memory=True, # Add to memory
)
# Perform inference
results = predictor.inference(img="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=[2], # Same object ID
update_memory=True, # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")
Lưu ý
Hàm SAM2DynamicInteractivePredictor
được thiết kế để làm việc với SAM2 các mô hình và hỗ trợ thêm/tinh chỉnh các danh mục theo tất cả các hộp/điểm/mặt nạ nhắc nhở bản chất là vậy SAM2 hỗ trợ. Nó đặc biệt hữu ích cho các tình huống mà các đối tượng xuất hiện hoặc thay đổi theo thời gian, chẳng hạn như trong chú thích video hoặc tác vụ chỉnh sửa tương tác.
Các đối số
Tên | Giá trị mặc định | Kiểu dữ liệu | Mô tả |
---|---|---|---|
max_obj_num |
3 |
str |
Số lượng danh mục tối đa được cài đặt trước |
update_memory |
False |
bool |
Có nên cập nhật bộ nhớ bằng lời nhắc mới không |
obj_ids |
None |
List[int] |
Danh sách ID đối tượng tương ứng với lời nhắc |
Các Trường hợp Sử dụng
SAM2DynamicInteractivePredictor
lý tưởng cho:
- Quy trình chú thích video trong đó các đối tượng mới xuất hiện trong suốt 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 với nhu cầu theo dõi đối tượng động
- Hình ảnh y tế để theo dõi các cấu trúc giải phẫu theo chuỗi thời gian
- Hệ thống tự động yêu cầu phát hiện và theo dõi đối tượng thích ứng
- Bộ dữ liệu nhiều hình ảnh để phân đoạn đối tượng nhất quán trên các hình ảnh độc lập
- Phân tích bộ sưu tập hình ảnh trong đó các đối tượng cần được theo dõi trên các cảnh khác nhau
- Phân đoạn đa miền tận dụng bộ nhớ từ nhiều bối cảnh hình ảnh khác nhau
- Chú thích bán tự động để tạo tập dữ liệu hiệu quả với sự can thiệp thủ công tối thiểu
So sánh SAM 2 với YOLO
Ở đây, chúng ta so sánh các mô hình SAM2 của Meta, bao gồm cả biến thể SAM2-t nhỏ nhất, với mô hình phân đoạn nhỏ nhất của Ultralytics, YOLO11n-seg:
Mô hình | Kích thước (MB) |
Tham số (M) |
Tốc độ (CPU) (ms/ảnh) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 49401 |
Meta SAM2-b | 162 | 80.8 | 31901 |
Meta SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
FastSAM-s với backbone YOLOv8 | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n-seg | 6.7 (nhỏ hơn 11.7 lần) | 3.4 (ít hơn 11.4 lần) | 24.5 (nhanh hơn 1061 lần) |
Ultralytics YOLO11n-seg | 5.9 (nhỏ hơn 13.2 lần) | 2.9 (ít hơn 13.4 lần) | 30.1 (nhanh hơn 864 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 độ mô hình giữa các biến thể SAM và các mô hình phân đoạn YOLO. Mặc dù SAM cung cấp các khả năng phân đoạn tự động độc đáo, nhưng các mô hình YOLO, đặc biệt là YOLOv8n-seg và YOLO11n-seg, nhỏ hơn, nhanh hơn và hiệu quả về mặt tính toán hơn đáng kể.
Các thử nghiệm được chạy trên Apple M4 Pro 2025 với RAM 24GB sử dụng torch==2.6.0
và ultralytics==8.3.90
. Để tái tạo thử nghiệm này:
Ví dụ
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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
Tự động chú thích: Tạo lập 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 SAM2, cho phép người dùng tạo bộ dữ liệu phân đoạn một cách nhanh chóng và chính xác bằng cách tận dụng các mô hình đã được huấn luyện trước. Khả năng này đặc biệt hữu ích để tạo ra các bộ dữ liệu lớn, chất lượng cao mà không cần nhiều nỗ lực thủ công.
Cách tự động chú thích với SAM2
Xem: Tự động Chú thích với Segment Anything 2 Model của Meta sử dụng Ultralytics | Gán nhãn dữ liệu
Để tự động gán nhãn cho bộ dữ liệu của bạn bằng SAM2, hãy làm theo ví dụ sau:
Ví dụ về Tự động gán nhãn
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
data |
str |
bắt buộc | Đường dẫn đến thư mục chứa hình ảnh mục tiêu để chú thích hoặc phân đoạn. |
det_model |
str |
'yolo11x.pt' |
Đường dẫn mô hình phát hiện YOLO để phát hiện đối tượng ban đầu. |
sam_model |
str |
'sam_b.pt' |
Đường dẫn mô hình SAM để phân đoạn (hỗ trợ các biến thể SAM, SAM2 và mô hình mobile_sam). |
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 phát hiện yếu. |
iou |
float |
0.45 |
Ngưỡng IoU cho Non-Maximum Suppression để lọc các hộp chồng chéo. |
imgsz |
int |
640 |
Kích thước đầu vào để thay đổi kích thước hình ảnh (phải là bội số của 32). |
max_det |
int |
300 |
Số lượng phát hiện tối đa trên mỗi ảnh để tiết kiệm bộ nhớ. |
classes |
list[int] |
None |
Danh sách các chỉ số lớp để phát hiện (ví dụ: [0, 1] cho người và xe đạp). |
output_dir |
str |
None |
Thư mục lưu trữ cho các chú thích (mặc định là '.\/labels' tương ứng với đường dẫn dữ liệu). |
Chức năng này tạo điều kiện thuận lợi cho việc tạo nhanh chóng 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à nhà phát triển muốn tăng tốc các dự án của họ.
Hạn chế
Mặc dù có những điểm mạnh, SAM2 vẫn có một số hạn chế nhất định:
- Tính ổn định khi theo dõi: SAM2 có thể mất dấu các đối tượng trong các chuỗi mở rộng hoặc thay đổi điểm nhìn đáng kể.
- Nhầm lẫn đối tượng: Đôi khi, mô hình có thể nhầm lẫn các đối tượng trông tương tự nhau, đặc biệt là trong các cảnh đông đúc.
- 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 giao tiếp giữa các đối tượng.
- Độ chính xác chi tiết: Có thể bỏ lỡ các chi tiết nhỏ, đặc biệt là với các đối tượng chuyển động nhanh. Các prompt bổ sung có thể giải quyết một phần vấn đề này, nhưng độ mượt mà về mặt thời gian không được đảm bảo.
Trích dẫn và ghi nhận
Nếu SAM2 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 nó bằng 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 xin gửi lời cảm ơn đến Meta AI vì những đóng góp của họ cho cộng đồng AI với mô hình và bộ dữ liệu đột phá này.
Câu hỏi thường gặp
SAM2 là gì và nó cải thiện như thế nào so với Segment Anything Model (SAM) ban đầu?
SAM2, 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ả hình ảnh và video. Nó vượt trội trong việc xử lý dữ liệu trực quan phức tạp thông qua kiến trúc mô hình thống nhất, có thể điều khiển được, hỗ trợ xử lý thời gian thực và khái quát hóa zero-shot. SAM2 cung cấp một số cải tiến so với SAM ban đầu, bao gồm:
- Kiến trúc mô hình thống nhất: Kết hợp khả năng phân đoạn hình ảnh và video trong một mô hình duy nhất.
- Hiệu suất thời gian thực: Xử lý khoảng 44 khung hình mỗi giây, phù hợp cho các ứng dụng yêu cầu phản hồi ngay lập tức.
- Khái quát hóa Zero-Shot: Phân đoạn các đối tượng mà nó chưa từng gặp trước đây, hữu ích trong các lĩnh vực trực quan đa dạng.
- Tinh chỉnh tương tác: Cho phép người dùng lặp đi lặp lại tinh chỉnh kết quả phân đoạn bằng cách cung cấp thêm các prompt.
- Xử lý nâng cao các thách thức trực quan: Quản lý các thách thức phân đoạn video phổ biến như che khuất và xuất hiện lại đối tượng.
Để biết thêm chi tiết về kiến trúc và khả năng của SAM2, hãy khám phá bài nghiên cứu về SAM2.
Làm cách nào tôi có thể sử dụng SAM2 để phân đoạn video theo thời gian thực?
SAM 2 có thể được sử dụng để phân đoạn video theo thời gian thực bằng cách tận dụng giao diện có thể điều khiển và khả năng suy luận theo thời gian thực. Dưới đây là một ví dụ cơ bản:
Phân đoạn theo gợi ý
Sử dụng dấu nhắc để 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])
Để sử dụng toàn diện hơn, hãy tham khảo phần Cách sử dụng SAM 2.
Những bộ dữ liệu nào được sử dụng để huấn luyện SAM2 và chúng nâng cao hiệu suất của nó như thế nào?
SAM 2 được đào tạo 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 thu thập trên 47 quốc gia, cung cấp một loạt các tình huống thực tế.
- Hơn 600.000 Chú thích Mặt nạ: Chú thích mặt nạ không-thời gian chi tiết, được gọi là "masklets", bao phủ toàn bộ đối tượng và các bộ phận.
- Quy Mô Tập Dữ Liệu: Có số lượng video nhiều hơn 4.5 lần và số lượng chú thích nhiều hơn 53 lần so với các tập dữ liệu lớn nhất trước đây, mang lại sự đa dạng và phức tạp chưa từng có.
Tập dữ liệu mở rộng này cho phép SAM 2 đạt được hiệu suất vượt trội trên các chuẩn đo lường phân đoạn video chính và tăng cường khả năng tổng quát hóa zero-shot của nó. Để biết thêm thông tin, hãy xem phần Tập dữ liệu SA-V.
SAM2 xử lý các trường hợp vật thể bị che khuất và xuất hiện trở lại trong phân đoạn video như thế nào?
SAM2 bao gồm một cơ chế bộ nhớ phức tạp để quản lý các phụ thuộc thời gian và tắc nghẽn trong dữ liệu video. Cơ chế bộ nhớ 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ừ các khung hình trước.
- Mô-đun Chú ý Bộ nhớ: Sử dụng thông tin được lưu trữ để duy trì theo dõi đối tượng nhất quán theo thời gian.
- Occlusion Head: Xử lý cụ thể các tình huống mà các đối tượng không hiển thị, dự đoán khả năng một đối tượng bị che khuất.
Cơ chế này đảm bảo tính liên tục ngay cả khi các đối tượng bị che khuất tạm thời hoặc thoát ra và quay lại cảnh. Để biết thêm chi tiết, hãy tham khảo phần Cơ chế bộ nhớ và xử lý tắc nghẽn.
SAM 2 so sánh với các mô hình phân đoạn khác như YOLO11 như thế nào?
Các mô hình SAM 2, chẳng hạn 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 mô hình YOLO11. Ví dụ: YOLO11n-seg nhỏ hơn khoảng 13 lần và nhanh hơn hơn 860 lần so với SAM2-b. Trong khi SAM 2 vượt trội trong các tình huống phân đoạn linh hoạt, dựa trên lời nhắc và zero-shot, thì YOLO11 được tối ưu hóa cho tốc độ, hiệu quả và các ứng dụng thời gian thực, khiến nó phù hợp hơn để triển khai trong các môi trường bị hạn chế về tài nguyên.