SAM 2.1
Chúng tôi vừa hỗ trợ chính xác hơn SAM2 Mô hình .1. Hãy thử xem!
SAM 2: Phân đoạn bất kỳ mô hình 2
SAM 2, phiên bản kế thừa của Meta's Segment Anything Model ( SAM ) , 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 hình ảnh phức tạp thông qua kiến trúc mô hình thống nhất, có thể nhắc nhở, 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
Đồng hồ: Làm thế nào để chạy suy luận với Meta SAM2 sử dụng Ultralytics | Hướng dẫn từng bước 🎉
Kiến trúc mô hình 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 mô hình duy nhất. Sự hợp 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 thời gian thực
Mô hình đạt được tốc độ suy luận thời gian thực, xử lý khoảng 44 khung hình mỗi giây. Điều này làm cho SAM 2 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.
Tổng quát Zero-Shot
SAM 2 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 miền thị giác đ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ể.
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 lần lặp lại bằng cách cung cấp các lời nhắc bổ sung, 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 về thị giác
SAM 2 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ư che khuất và xuất hiện lại đối tượng. Nó sử dụng cơ chế bộ nhớ tinh vi để 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à nhập lại vào cảnh.
Để hiểu sâu hơn về SAM Kiến trúc và khả năng của SAM 2, hãy khám phá bài nghiên cứu SAM 2 .
Hiệu suất 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 mô hình trước đây về nhiều chỉ số:
Hệ mét | SAM 2 | SOTA trước đó |
---|---|---|
Phân đoạn video tương tác | Tốt nhất | - |
Tương tác của con người là cần thiết | Ít hơn 3 lần | Đường cơ sở |
Độ 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 mô hình
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 bộ biến đổi để trích xuất các tính năng cấp cao từ cả hình ảnh và khung 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 nhắc nhở : Xử lý các nhắc nhở do người dùng cung cấp (điểm, hộp, mặt nạ) để hướng dẫn nhiệm vụ phân đoạn. Điều này cho phép SAM 2 để thích ứng với dữ liệu đầu vào của người dùng và nhắm mục tiêu vào 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.
- Mask Decoder : Tạo mặt nạ phân đoạn cuối cùng dựa trên các đặc điểm và lời nhắc của hình ảnh đượ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ý che khuất
Cơ chế bộ nhớ cho phép SAM 2 để xử lý các phụ thuộc thời gian và 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ác đặc điểm của chúng trong một ngân hàng bộ nhớ. Khi một vật thể 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. Đầu che khuất xử lý cụ thể các tình huống mà các vật thể không nhìn thấy được, dự đoán khả năng vật thể bị che khuất.
Giải quyết sự mơ hồ đa mặt nạ
Trong những 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 khi 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
Bộ dữ liệu SA-V, được phát triển cho SAM Đào tạo 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 ghi lại ở 47 quốc gia, cung cấp nhiều tình huống thực tế khác nhau.
- Hơn 600.000 chú thích mặt nạ : Chú thích mặt nạ chi tiết về không gian-thời gian, được gọi là "masklet", bao gồm toàn bộ và một phần đối tượng.
- Quy mô tập dữ liệu : Nó có số lượng video gấp 4,5 lần và số chú thích gấp 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ó.
Tiêu 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 tiêu chuẩn 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 nhiệm 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 | KhôngC@90 | AUC |
---|---|---|
DAVIS Tương tác | 1.54 | 0.872 |
Cài đặt
Để cài đặt SAM 2, sử dụng lệnh sau. Tất cả SAM 2 mô hình sẽ tự động tải xuống khi sử dụng lần đầu.
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 nêu chi tiết các sản phẩm có sẵn SAM 2 mô hình, trọng số được đào tạo trước, các tác vụ được hỗ trợ và khả năng tương thích với các chế độ vận hành khác nhau như Suy luận , Xác thực , Đào tạo và Xuất .
Kiểu mẫu | Tạ đã được tập luyện trước | Nhiệm vụ được hỗ trợ | Suy luận | Xác thực | Đào tạo | Xuất khẩu |
---|---|---|---|---|---|---|
SAM 2 nhỏ xíu | sam2_t.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2 nhỏ | sam2_s.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2 cơ sở | sam2_b.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2 lớn | sam2_l.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 nhỏ xíu | sam2.1_t.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 nhỏ | sam2.1_s.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 cơ sở | sam2.1_b.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 lớn | sam2.1_l.pt | Phân đoạn trường hợp | ✅ | ❌ | ❌ | ❌ |
SAM 2 Ví dụ dự đoán
SAM 2 có thể được sử dụng trong nhiều tác vụ, bao gồm chỉnh sửa video thời gian thực, hình ảnh y tế và hệ thống tự động. Khả năng phân đoạn cả dữ liệu hình ảnh tĩnh và động giúp nó trở thành công cụ đa năng cho các nhà nghiên cứu và nhà phát triển.
Phân đoạn với lời nhắc
Phân đoạn với lời nhắc
Sử dụng lời 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ộ hình ảnh hoặc nội dung video mà không cần lời nhắc cụ thể.
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 lời 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 chứng minh 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ó lời nhắc (hộp/điểm/mặt nạ) nào được cung cấp.
SAM 2 so sánh vs YOLOv8
Ở đây chúng ta so sánh Meta nhỏ nhất SAM 2 mô hình, SAM2 -t, với Ultralytics mô hình phân đoạn nhỏ nhất, YOLOv8n -seg :
Người mẫu | Kích cỡ (MB) |
Các tham số (Nam) |
Tốc độ ( CPU ) (cô/anh) |
---|---|---|---|
Siêu dữ liệu SAM -b | 375 | 93.7 | 161440 |
Siêu dữ liệu SAM2 -b | 162 | 80.8 | 121923 |
Siêu dữ liệu SAM2 -t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM -s với YOLOv8 xương sống | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n -phân đoạn | 6,7 (nhỏ hơn 11,7 lần) | 3.4 (giảm 11,4 lần) | 79,5 (nhanh hơn 1071 lần) |
So sánh này cho thấy sự khác biệt về kích thước và tốc độ của các mô hình theo cấp số nhân. Trong khi SAM cung cấp khả năng độc đáo cho phân đoạn tự động, nó không phải là đối thủ cạnh tranh trực tiếp với YOLOv8 mô hình phân khúc nhỏ hơn, nhanh hơn và hiệu quả hơn.
Các thử nghiệm chạy trên Macbook Apple M2 2023 với RAM 16GB sử dụng torch==2.3.1
Và ultralytics==8.3.82
. Để thực hiện lại 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 YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)
Chú thích tự động: 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 các 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 mô hình được đào tạo trước. Khả năng này đặc biệt hữu ích để tạo các tập dữ liệu lớn, chất lượng cao mà không cần nỗ lực thủ công nhiều.
Làm thế nào để tự động chú thích với SAM 2
Đồng hồ: Tự động chú thích với mô hình Segment Anything 2 của Meta bằng cách sử dụng Ultralytics | Nhãn dữ liệu
Để tự động chú thích tập dữ liệu của bạn bằng cách sử dụng SAM 2, hãy làm theo ví dụ này:
Ví dụ về chú thích tự động
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
data |
str |
required | Path to directory containing target images/videos for annotation or segmentation. |
det_model |
str |
"yolo11x.pt" |
YOLO detection model path for initial object detection. |
sam_model |
str |
"sam2_b.pt" |
SAM2 model path for segmentation (supports t/s/b/l variants and SAM2.1 models). |
device |
str |
"" |
Computation device (e.g., 'cuda:0', 'cpu', or '' for automatic device detection). |
conf |
float |
0.25 |
YOLO detection confidence threshold for filtering weak detections. |
iou |
float |
0.45 |
IoU threshold for Non-Maximum Suppression to filter overlapping boxes. |
imgsz |
int |
640 |
Input size for resizing images (must be multiple of 32). |
max_det |
int |
300 |
Maximum number of detections per image for memory efficiency. |
classes |
list[int] |
None |
List of class indices to detect (e.g., [0, 1] for person & bicycle). |
output_dir |
str |
None |
Save directory for annotations (defaults to './labels' relative to data path). |
Chức năng này giúp tạo nhanh các tập 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 đẩy nhanh dự án của mình.
Hạn chế
Mặc dù có những điểm mạnh, SAM 2 có một số hạn chế sau:
- Theo dõi độ ổn định : SAM 2 có thể mất dấu các đối tượng trong các chuỗi sự kiện kéo dài hoặc thay đổi góc 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 có vẻ ngoài 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ý nhiều đối tượng cùng lúc do thiếu 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 là với các vật thể chuyển động nhanh. Các lời nhắc 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 mà về mặt thời gian.
Trích dẫn và Lời cảm ơn
Nếu như SAM 2 là một phần quan trọng trong công trình nghiên cứu hoặc phát triển của bạn, vui lòng trích dẫn bằng cách sử dụ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 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à tập dữ liệu mang tính đột phá này.
CÂU HỎI THƯỜNG GẶP
Là gì SAM 2 và nó cải thiện như thế nào so với Mô hình Phân đoạn Bất kỳ ban đầu ( SAM )?
SAM 2, phiên bản kế thừa của Meta's Segment Anything Model ( SAM ) , 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 hình ảnh phức tạp thông qua kiến trúc mô hình thống nhất, có thể nhắc nhở, hỗ trợ xử lý thời gian thực và khái quát hóa zero-shot. SAM 2 cung cấp một số cải tiến so với bản gốc SAM , 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 với các ứng dụng yêu cầu phản hồi ngay lập tức.
- Tổng 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 nhiều phạm vi 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 lần bằng cách cung cấp thêm lời nhắc.
- Xử lý nâng cao các thách thức về hình ảnh : Quản lý các thách thức phân đoạn video phổ biến như đối tượng bị che khuất và xuất hiện lại.
Để biết thêm chi tiết về SAM Kiến trúc và khả năng của SAM 2, hãy khám phá bài nghiên cứu SAM 2 .
Tôi có thể sử dụng như thế nào? SAM 2 để 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ể nhắc nhở và khả năng suy luận theo thời gian thực. Sau đây là một ví dụ cơ bản:
Phân đoạn với lời nhắc
Sử dụng lời 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])
Để biết cách 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 tập dữ liệu nào được sử dụng để đào tạo SAM 2, và họ nâng cao hiệu suất của nó như thế nào?
SAM 2 được đào tạo 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 lại ở 47 quốc gia, cung cấp nhiều tình huống thực tế khác nhau.
- Hơn 600.000 chú thích mặt nạ : Chú thích mặt nạ chi tiết về không gian-thời gian, được gọi là "masklet", bao gồm toàn bộ và một phần đối tượng.
- Quy mô tập dữ liệu : Có số lượng video nhiều hơn 4,5 lần và số 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ó.
Bộ 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 phân đoạn video chính và tăng cường khả năng khái quát hóa zero-shot của nó. Để biết thêm thông tin, hãy xem phần Bộ dữ liệu SA-V .
Làm thế nào SAM 2 xử lý hiện tượng che khuất và xuất hiện lại đối tượng trong phân đoạn video?
SAM 2 bao gồm một cơ chế bộ nhớ tinh vi để quản lý sự phụ thuộc và che khuất thời gian 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 tính nă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ì việc theo dõi đối tượng một cách nhất quán theo thời gian.
- Occlusion Head : Xử lý cụ thể các tình huống mà vật thể không nhìn thấy được, dự đoán khả năng vật thể 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 tạm thời bị che khuất hoặc thoát ra và nhập lại vào 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 .
Làm thế nào SAM 2 so sánh với các mô hình phân khúc khác như YOLOv8 ?
SAM 2 và Ultralytics YOLOv8 phục vụ các mục đích khác nhau và xuất sắc trong các lĩnh vực khác nhau. Trong khi SAM 2 được thiết kế để phân đoạn đối tượng toàn diện với các tính năng tiên tiến như tổng quát hóa không cần bắn và hiệu suất thời gian thực, YOLOv8 được tối ưu hóa về tốc độ và hiệu quả trong các nhiệm vụ phát hiện và phân đoạn đối tượng . Sau đây là so sánh:
Người mẫu | Kích cỡ (MB) |
Các tham số (Nam) |
Tốc độ ( CPU ) (cô/anh) |
---|---|---|---|
Siêu dữ liệu SAM -b | 375 | 93.7 | 161440 |
Siêu dữ liệu SAM2 -b | 162 | 80.8 | 121923 |
Siêu dữ liệu SAM2 -t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM -s với YOLOv8 xương sống | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n -phân đoạn | 6,7 (nhỏ hơn 11,7 lần) | 3.4 (giảm 11,4 lần) | 79,5 (nhanh hơn 1071 lần) |
Để biết thêm chi tiết, hãy xem phần so sánh SAM 2 với YOLOv8 .