Bỏ để qua phần nội dung

Mô hình phân khúc bất cứ thứ gì (SAM)

Chào mừng bạn đến với biên giới của phân đoạn hình ảnh với Mô hình phân đoạn bất cứ điều gì, hoặc SAM. Mô hình mang tính cách mạng này đã thay đổi cuộc chơi bằng cách giới thiệu phân đoạn hình ảnh nhanh chóng với hiệu suất thời gian thực, thiết lập các tiêu chuẩn mới trong lĩnh vực này.

Giới thiệu về SAM: Mô hình phân khúc bất cứ thứ gì

Phân khúc bất cứ mô hình nào, hoặc SAM, là một mô hình phân đoạn hình ảnh tiên tiến cho phép phân đoạn nhanh chóng, cung cấp tính linh hoạt vô song trong các tác vụ phân tích hình ảnh. SAM tạo thành trung tâm của sáng kiến Segment Anything, một dự án đột phá giới thiệu một mô hình, nhiệm vụ và bộ dữ liệu mới để phân đoạn hình ảnh.

SAMThiết kế tiên tiến của nó cho phép nó thích ứng với các phân phối hình ảnh và tác vụ mới mà không cần biết trước, một tính năng được gọi là zero-shot transfer. Được đào tạo về bộ dữ liệu SA-1B mở rộng, chứa hơn 1 tỷ mặt nạ trải rộng trên 11 triệu hình ảnh được quản lý cẩn thận, SAM đã thể hiện hiệu suất zero-shot ấn tượng, vượt qua kết quả giám sát đầy đủ trước đó trong nhiều trường hợp.

Hình ảnh mẫu tập dữ liệu SA-1B Hình ảnh ví dụ. Hình ảnh tập dữ liệu phủ lên mặt nạ từ bộ dữ liệu SA-1B mới được giới thiệu. SA-1B chứa 11M hình ảnh đa dạng, độ phân giải cao, được cấp phép và bảo vệ quyền riêng tư và mặt nạ phân đoạn chất lượng cao 1.1B. Những mặt nạ này được chú thích hoàn toàn tự động bởi SAM, và được xác minh bởi xếp hạng của con người và nhiều thí nghiệm, có chất lượng cao và đa dạng. Hình ảnh được nhóm theo số lượng mặt nạ trên mỗi hình ảnh để hiển thị (trung bình có ∼100 mặt nạ trên mỗi hình ảnh).

Các tính năng chính của mô hình phân khúc bất cứ điều gì (SAM)

  • Nhiệm vụ phân đoạn có thể nhắc nhở: SAM được thiết kế với một nhiệm vụ phân đoạn có thể nhắc nhở trong tâm trí, cho phép nó tạo mặt nạ phân đoạn hợp lệ từ bất kỳ lời nhắc nhất định nào, chẳng hạn như manh mối không gian hoặc văn bản xác định một đối tượng.
  • Kiến trúc nâng cao: Mô hình phân đoạn bất cứ điều gì sử dụng bộ mã hóa hình ảnh mạnh mẽ, bộ mã hóa nhắc nhở và bộ giải mã mặt nạ nhẹ. Kiến trúc độc đáo này cho phép nhắc nhở linh hoạt, tính toán mặt nạ thời gian thực và nhận thức mơ hồ trong các tác vụ phân đoạn.
  • Bộ dữ liệu SA-1B: Được giới thiệu bởi dự án Segment Anything, bộ dữ liệu SA-1B có hơn 1 tỷ mặt nạ trên 11 triệu hình ảnh. Là bộ dữ liệu phân khúc lớn nhất cho đến nay, nó cung cấp SAM với nguồn dữ liệu đào tạo đa dạng, quy mô lớn.
  • Hiệu suất Zero-Shot: SAM Hiển thị hiệu suất zero-shot vượt trội trên các tác vụ phân đoạn khác nhau, làm cho nó trở thành một công cụ sẵn sàng sử dụng cho các ứng dụng đa dạng với nhu cầu tối thiểu về kỹ thuật nhanh chóng.

Để có cái nhìn sâu sắc về Mô hình phân đoạn bất cứ điều gì và bộ dữ liệu SA-1B, vui lòng truy cập trang web Phân đoạn bất cứ điều gì và xem tài liệu nghiên cứu Phân đoạn bất cứ điều gì.

Các kiểu máy có sẵn, tác vụ được hỗ trợ và chế độ hoạt động

Bảng này trình bày các mô hình có sẵn với trọng số cụ thể được đào tạo trước, các tác vụ mà chúng hỗ trợ và khả năng tương thích của chúng với các chế độ hoạt động khác nhau như Suy luận, Xác thực, Đào tạoXuất, được biểu thị bằng ✅ biểu tượng cảm xúc cho các chế độ được hỗ trợ và ❌ biểu tượng cảm xúc cho các chế độ không được hỗ trợ.

Loại mô hình Trọng lượng được đào tạo trước Các tác vụ được hỗ trợ Suy luận Xác nhận Đào tạo Xuất khẩu
SAM căn cứ sam_b.pt Phân đoạn phiên bản
SAM lớn sam_l.pt Phân đoạn phiên bản

Cách sử dụng SAM: Tính linh hoạt và sức mạnh trong phân đoạn hình ảnh

Mô hình phân đoạn bất cứ điều gì có thể được sử dụng cho vô số nhiệm vụ xuôi dòng vượt ra ngoài dữ liệu đào tạo của nó. Điều này bao gồm phát hiện cạnh, tạo đề xuất đối tượng, phân đoạn phiên bản và dự đoán sơ bộ từ văn bản đến mặt nạ. Với kỹ thuật nhanh chóng, SAM có thể nhanh chóng thích ứng với các tác vụ mới và phân phối dữ liệu theo cách zero-shot, thiết lập nó như một công cụ linh hoạt và mạnh mẽ cho tất cả các nhu cầu phân đoạn hình ảnh của bạn.

SAM Ví dụ dự đoán

Phân đoạn bằng lời nhắc

Hình ảnh phân đoạn với lời nhắc nhất định.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

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

Phân đoạn toàn bộ hình ảnh.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
# Run inference with a SAM model
yolo predict model=sam_b.pt source=path/to/image.jpg
  • Logic ở đây là phân đoạn toàn bộ hình ảnh nếu bạn không vượt qua bất kỳ lời nhắc nào (hộp / điểm / mặt nạ).

Ví dụ về SAMPredictor

Bằng cách này, bạn có thể đặt hình ảnh một lần và chạy lời nhắc suy luận nhiều lần mà không cần chạy bộ mã hóa hình ảnh nhiều lần.

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])
results = predictor(points=[900, 370], labels=[1])

# Reset image
predictor.reset_image()

Phân đoạn mọi thứ với các arg bổ sung.

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)

SAM So sánh với YOLOv8

Ở đây chúng tôi so sánh nhỏ nhất của Meta SAM mẫu SAM-b, với Ultralytics mô hình phân khúc nhỏ nhất, YOLOv8n-Seg:

Mẫu Kích thước Thông số Tốc độ (CPU)
Của Meta SAM-b 358 MB 94.7 M 51096 ms/im
MobileSAM 40.7 MB 10.1 M 46122 ms/im
FastSAM-s với YOLOv8 xương sống 23.7 MB 11.8 M 115 ms/im
Ultralytics YOLOv8n-Seg 6.7 MB (nhỏ hơn 53.4 lần) 3,4 M (ít hơn 27,9 lần) 59 ms/im (nhanh hơn 866 lần)

So sánh này cho thấy sự khác biệt về thứ tự cường độ trong kích thước mô hình và tốc độ giữa các mô hình. Trong khi đó: SAM Trình bày các khả năng độc đáo để 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. Để tái tạo thử nghiệm này:

Ví dụ

from ultralytics import SAM, YOLO, FastSAM

# Profile SAM-b
model = SAM("sam_b.pt")
model.info()
model("ultralytics/assets")

# Profile MobileSAM
model = SAM("mobile_sam.pt")
model.info()
model("ultralytics/assets")

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model("ultralytics/assets")

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model("ultralytics/assets")

Tự động chú thích: Đường dẫn nhanh đến bộ dữ liệu phân đoạn

Tự động chú thích là một tính năng chính của SAM, cho phép người dùng tạo tập dữ liệu phân đoạn bằng mô hình phát hiện được đào tạo trước. Tính năng này cho phép chú thích nhanh chóng và chính xác một số lượng lớn hình ảnh, bỏ qua nhu cầu ghi nhãn thủ công tốn thời gian.

Tạo tập dữ liệu phân đoạn của bạn bằng mô hình phát hiện

Để tự động chú thích tập dữ liệu của bạn bằng Ultralytics framework, sử dụng auto_annotate Chức năng như hình dưới đây:

Ví dụ

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")
Lý lẽ Kiểu Sự miêu tả Mặc định
dữ liệu Str Đường dẫn đến thư mục chứa hình ảnh cần chú thích.
det_model str, tùy chọn Đào tạo trước YOLO mô hình phát hiện. Mặc định là 'yolov8x.pt'. 'yolov8x.pt'
sam_mẫu str, tùy chọn Đào tạo trước SAM mô hình phân khúc. Mặc định là 'sam_b.pt'. 'sam_b.pt'
thiết bị str, tùy chọn Thiết bị để chạy các mô hình trên. Mặc định là một chuỗi trống (CPU hoặc GPU, nếu có).
output_dir str, Không có, tùy chọn Thư mục để lưu các kết quả được chú thích. Mặc định là thư mục 'labels' trong cùng thư mục với 'data'. Không ai

Các auto_annotate Chức năng đưa đường dẫn đến hình ảnh của bạn, với các đối số tùy chọn để chỉ định phát hiện được đào tạo trước và SAM Mô hình phân đoạn, thiết bị để chạy các mô hình và thư mục đầu ra để lưu các kết quả được chú thích.

Chú thích tự động với các mô hình được đào tạo trước có thể cắt giảm đáng kể thời gian và công sức cần thiết để tạo bộ dữ liệu phân đoạn chất lượng cao. Tính năng này đặc biệt có lợi cho các nhà nghiên cứu và nhà phát triển xử lý các bộ sưu tập hình ảnh lớn, vì nó cho phép họ tập trung vào phát triển và đánh giá mô hình thay vì chú thích thủ công.

Trích dẫn và xác nhận

Nếu bạn tìm thấy SAM Hữu ích trong công việc nghiên cứu hoặc phát triển của bạn, vui lòng xem xét trích dẫn bài báo của chúng tôi:

@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Chúng tôi muốn bày tỏ lòng biết ơn đến Meta AI vì đã tạo ra và duy trì nguồn tài nguyên quý giá này cho cộng đồng thị giác máy tính.

từ khóa: Phân đoạn bất cứ điều gì, Phân đoạn bất cứ điều gì Mô hình, SAMMeta SAM, phân đoạn hình ảnh, phân đoạn nhắc nhở, hiệu suất zero-shot, tập dữ liệu SA-1B, kiến trúc nâng cao, chú thích tự động, Ultralytics, mô hình được đào tạo trước, SAM căn cứ SAM lớn, phân khúc phiên bản, thị giác máy tính, AI, trí tuệ nhân tạo, học máy, chú thích dữ liệu, mặt nạ phân đoạn, mô hình phát hiện, YOLO mô hình phát hiện, bibtex, Meta AI.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (13), Burhan-Q (1), ChaoningZhang (1), Laughing-q (1)

Ý kiến