MobileSAM
MobileSAM thay image encoder ViT-H của SAM bằng encoder TinyViT được chưng cất, vì vậy cùng quy trình theo prompt điểm và box có thể chạy trên phần cứng nhẹ hơn. LibreYOLO cung cấp bản port nguyên bản qua factory LibreSAM chuyên dụng, tách biệt với factory detector LibreYOLO().
- Tác vụ
- instance segmentation
- Kích thước
- tiny 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.
- Giấy phép
- Mã nguồn Apache-2.0, trọng số Apache-2.0. Sử dụng thương mại
Cài đặt
MobileSAM cần extra sam: quá trình tải trọng số riêng của LibreYOLO vẫn đi qua công cụ snapshot Hugging Face của transformers, dù inference chạy trên decoder nguyên bản không dùng transformers.
pip install "libreyolo[sam]"Dự đoán
LibreSAM(...) (hoặc LibreMobileSAM(...) dành riêng cho họ mô hình) là entry point tách biệt với LibreYOLO(...): hàm trả về segmenter theo 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ọ mô hình này; hãy dùng Python API.
from libreyolo import LibreSAM, SAMPLE_IMAGE # MobileSAM có một kích thước "tiny", vì vậy không cần bí danh khác.model = LibreSAM("mobilesam") # Prompt điểm: [x, y] theo tọa độ pixel, nhãn 1 = foreground.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy) # polygon cho mỗi mặt nạprint(result.boxes.xyxy) # box khít được suy ra từ mặt nạ # 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 ảnh (trình tạo mặt nạ tự động# đơn giản hóa, không phải bản tham chiếu toàn diện).result = model.predict(SAMPLE_IMAGE)from libreyolo import LibreMobileSAM, SAMPLE_IMAGE model = LibreMobileSAM() # Image encoder là phần tốn kém. set_image() chạy nó một lần;# mỗi lần gọi predict() sau đó dùng lại embedding 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 mỗi điểm là 1 (foreground) hoặc 0 (background), mặc định tất cả là foreground. Prompt box nhận [x1, y1, x2, y2] hoặc danh sách box, mỗi box một mặt nạ. Bỏ cả hai prompt sẽ phân đoạn toàn ảnh bằng cách đặt prompt trên lưới dense và giữ lại các mặt nạ có độ tin cậy cao, không chồng lấp; chế độ "phân đoạn mọi thứ" này được đơn giản hóa so với trình tạo mặt nạ tự động tham chiếu và có thể phân đoạn thiếu trong cảnh đông, vì vậy prompt điểm hoặc box thực là tuyến chính xác hơn. conf lọc theo chất lượng mặt nạ dự đoán (IoU), không phải độ tin cậy phát hiện: truyền 0.0 để giữ mọi candidate. multimask=True trả về cả ba mặt nạ biểu thị sự mơ hồ toàn thể so với bộ phận của SAM cho mỗi prompt thay vì chỉ mặt nạ tốt nhất. device= chuyển mô hình và nếu đang có phiên set_image(), cả embedding trong bộ nhớ đệm. Mọi mặt nạ mang ID lớp đối tượng 0, tên "object", vì mặt nạ theo prompt không có tập lớp đối tượng cố định. train(), val(), export() và track() đều phát sinh NotImplementedError cho họ mô hình này: MobileSAM chỉ dành cho dự đoán trong LibreYOLO. Xem dự đoán để biết các loại nguồn.
Biến thể
Có một kích thước tiny ở đầu vào cố định 1024 px: MobileSAM cung cấp một encoder TinyViT duy nhất thay vì dãy base/large/huge của SAM-1.
Checkpoint
Mọi tệp trọng số đã phát hành cho họ mô hình này.
| Tệp | Đầu vào (px) | Giấy phép trọng số |
|---|---|---|
| Instance segmentation | ||
| LibreMobileSAM.pt | apache-2.0 | |
Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.
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
- MobileSAM, Kyung Hee University
- Giấy phép thượng nguồn
- Apache-2.0
- Nguồn thượng nguồn
- github.com/ChaoningZhang/MobileSAM
- Mã nguồn LibreYOLO
- MIT
- Trọng số
- Apache-2.0, được phát hành lại tại huggingface.co/LibreYOLO
- 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 carries a native port of the TinyViT image encoder, prompt encoder, two-way transformer and mask decoder rather than vendoring upstream files unmodified, checked for bit-exact parity against the original Apache-2.0 implementation, with a NOTICE recording that provenance. The converted checkpoint is hosted as LibreMobileSAM.pt on the LibreYOLO Hugging Face org, tagged Apache-2.0 there as well.
Trích dẫn
@article{mobile_sam,
title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung-Ho and Lee, Seungkyu and Hong, Choong Seon},
journal={arXiv preprint arXiv:2306.14289},
year={2023}
}Được sao chép từ khối trích dẫn của tác giả tại github.com/ChaoningZhang/MobileSAM#bibtex-of-our-mobilesam.