SAM

SAM (Segment Anything) biến một lần nhấp vào điểm hoặc box thành mask đối tượng. LibreYOLO tải mô hình qua factory LibreSAM chuyên dụng, tách biệt với factory detector LibreYOLO(), vì mô hình dùng prompt cần một dạng lời gọi khác.

Tác vụ
instance segmentation
Kích thước
base, large, huge at 1024 px
Cài đặt
pip install libreyolo
Bậc hỗ trợ
Bậc song hành, từ v. Một bề mặt sản phẩm riêng với factory và contract riêng.
Thượng nguồn
SAM (Segment Anything) của Meta AI Research (FAIR), Apache-2.0. Bài báo, mã nguồn
Giấy phép
Mã nguồn MIT, trọng số Apache-2.0. Sử dụng thương mại

Cài đặt

SAM cần extra sam, extra này sẽ cài thêm transformerstimm.

bash
pip install "libreyolo[sam]"

Dự đoán

LibreSAM(...) là một điểm vào riêng, khác với LibreYOLO(...): nó trả về một mô hình phân đoạn dùng prompt thay vì detector, vì forward pass ở đây không có ý nghĩa nếu thiếu prompt không gian. Không có lệnh CLI libreyolo predict cho họ này; hãy dùng Python API.

Prompt bằng điểm và box
from libreyolo import LibreSAM, SAMPLE_IMAGE # "base" tự động tải facebook/sam-vit-base ở lần dùng đầu tiên.# Các kích thước khác: "large", "huge" (cũng có thể dùng "b"/"l"/"h").model = LibreSAM("base") # Prompt điểm: [x, y] theo tọa độ pixel, nhãn 1 = tiền cảnh.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # đa giác cho mỗi maskprint(result.boxes.xyxy)    # box khít suy ra từ mask # Dùng prompt box thay cho điểm.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # Không có prompt sẽ phân đoạn toàn bộ ảnh (một trình tạo mask tự động# đơn giản hóa, không phải bản tham chiếu vét cạn).result = model.predict(SAMPLE_IMAGE)
Mã hóa một lần, dùng nhiều prompt
from libreyolo import LibreSAM, SAMPLE_IMAGE model = LibreSAM("base") # Bộ mã hóa ảnh là phần tốn kém. set_image() chạy nó một lần;# mỗi lời gọi predict() sau đó dùng lại embedding đã lưu trong bộ nhớ đệm.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

Prompt điểm nhận [x, y] cho một đối tượng, [[x, y], ...] cho nhiều đối tượng hoặc mảng numpy; labels đánh dấu từng điểm là 1 (tiền cảnh) hoặc 0 (hậu cảnh) và mặc định tất cả đều là tiền cảnh. Prompt box nhận [x1, y1, x2, y2] hoặc danh sách các box, mỗi box cho một mask. Nếu bỏ cả hai prompt, mô hình phân đoạn toàn bộ ảnh bằng cách đặt prompt trên một lưới dày và giữ lại các mask có độ tin cậy cao, không chồng lấn; chế độ "phân đoạn mọi thứ" này được đơn giản hóa so với trình tạo mask tự động tham chiếu và có thể phân đoạn thiếu trong cảnh đông đúc, vì vậy prompt điểm hoặc box thực sự là cách chính xác hơn. conf lọc theo chất lượng mask dự đoán (IoU), không phải độ tin cậy phát hiện: truyền 0.0 để giữ mọi ứng viên. multimask=True trả về cả ba mask biểu diễn sự nhập nhằng toàn thể so với bộ phận của SAM cho mỗi prompt thay vì chỉ mask tốt nhất. device= chuyển mô hình và, nếu đang có phiên set_image(), cả embedding đã lưu trong bộ nhớ đệm. Mỗi mask mang class id 0, tên "object", vì mask dùng prompt không có tập lớp cố định. train(), val(), export()track() đều phát sinh NotImplementedError cho họ này: SAM chỉ hỗ trợ dự đoán trong LibreYOLO và việc theo dõi video nằm ngoài phạm vi. Xem dự đoán để biết các loại nguồn.

Các biến thể

Ba kích thước bộ mã hóa ảnh ViT là base, large và huge, tất cả có đầu vào cố định 1024 px. Chưa có benchmark về độ chính xác hoặc độ trễ được công bố cho họ này, vì vậy việc chọn kích thước là sự đánh đổi trực tiếp giữa trọng lượng bộ mã hóa và chất lượng mask: base mã hóa nhanh nhất, huge nặng nhất.

Giấy phép

Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.

Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.

Công trình gốc
SAM (Segment Anything), Meta AI Research (FAIR)
Giấy phép thượng nguồn
Apache-2.0
Mã nguồn LibreYOLO
MIT
Trọng số
Apache-2.0, do tác giả phân phối. LibreYOLO không lưu trữ hoặc sao chép chúng.
Diễn giải
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO does not mirror SAM-1 weights on its own Hugging Face org: LibreSAM downloads the base, large and huge checkpoints directly from Meta's own facebook/sam-vit-base, facebook/sam-vit-large and facebook/sam-vit-huge repositories, each tagged Apache-2.0 there as well.

LibreYOLO không lưu trữ bản sao riêng của trọng số SAM-1. LibreSAM("base"), "large""huge" tải trực tiếp từ các repo facebook/sam-vit-base, facebook/sam-vit-largefacebook/sam-vit-huge của Meta trên Hugging Face; mỗi repo được gắn giấy phép Apache-2.0 tại đó, độc lập với LibreYOLO.

Trích dẫn

@article{kirillov2023segany,
  title={Segment Anything},
  author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
  journal={arXiv:2304.02643},
  year={2023}
}

Được sao chép từ khối trích dẫn của tác giả tại github.com/facebookresearch/segment-anything#citing-segment-anything.

Đã kiểm chứng với LibreYOLO v1.5.0. Các bảng hỗ trợ, checkpoint và số liệu benchmark trên trang này được tạo từ thư viện đã phát hành và trọng số đã công bố, không phải viết thủ công.