Logo mô hình phân đoạn hình ảnh gọn nhẹ MobileSAM

Mobile Segment Anything (MobileSAM)

MobileSAM là một mô hình phân đoạn hình ảnh nhỏ gọn, hiệu quả được xây dựng có mục đích cho thiết bị di động và biên. Được thiết kế để mang sức mạnh của Segment Anything Model (SAM) từ Meta đến các môi trường có tài nguyên tính toán hạn chế, MobileSAM cung cấp khả năng phân đoạn gần như tức thời trong khi vẫn duy trì khả năng tương thích với pipeline SAM gốc. Cho dù bạn đang phát triển các ứng dụng thời gian thực hay các triển khai gọn nhẹ, MobileSAM mang lại kết quả phân đoạn ấn tượng với yêu cầu về kích thước và tốc độ chỉ bằng một phần nhỏ so với các phiên bản tiền nhiệm.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

MobileSAM đã được áp dụng trong nhiều dự án khác nhau, bao gồm Grounding-SAM, AnyLabelingSegment Anything in 3D.

MobileSAM được huấn luyện trên một GPU duy nhất sử dụng tập dữ liệu 100 nghìn ảnh (1% số ảnh gốc) trong chưa đầy một ngày. Mã huấn luyện sẽ được phát hành trong tương lai.

Các model khả dụng, tác vụ được hỗ trợ và chế độ vận hành

Bảng dưới đây phác thảo các mô hình MobileSAM khả dụng, 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ế độ vận hành khác nhau như Inference, Validation, Training, và Export. Các chế độ được hỗ trợ được chỉ báo bởi ✅ và các chế độ không được hỗ trợ bởi ❌.

Loại ModelWeights Tiền huấn luyệnTác vụ được hỗ trợInferenceValidationTrainingExport
MobileSAMmobile_sam.ptInstance Segmentation

So sánh MobileSAM với YOLO

Bảng so sánh dưới đây làm nổi bật sự khác biệt giữa các biến thể SAM của Meta, MobileSAM và các mô hình phân đoạn Ultralytics bao gồm YOLO26n-seg:

ModelKích thước
(MB)
Tham số
(M)
Tốc độ (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s với YOLOv8 backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (nhỏ hơn 11.0x)3.4 (ít hơn 11.4x)24.8 (nhanh hơn 945x)
Ultralytics YOLO11n-seg6.2 (nhỏ hơn 12.6x)2.9 (ít hơn 13.4x)24.3 (nhanh hơn 964x)
Ultralytics YOLO26n-seg6.7 (nhỏ hơn 11.7x)2.7 (ít hơn 14.4x)25.2 (nhanh hơn 930x)

Bảng so sánh này chứng minh 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. Trong khi các mô hình SAM cung cấp khả năng phân đoạn tự động độc đáo, các mô hình YOLO—đặc biệt là YOLOv8n-seg, YOLO11n-seg và YOLO26n-seg—nhỏ hơn, nhanh hơn và hiệu quả hơn đáng kể về mặt tính toán.

Tốc độ SAM được đo bằng PyTorch, tốc độ YOLO được đo bằng ONNX Runtime. Các thử nghiệm được chạy trên Apple M4 Air 2025 với 16GB RAM sử dụng torch==2.10.0, ultralytics==8.4.31, và onnxruntime==1.24.4. Để tái tạo các kết quả 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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

Chuyển đổi từ SAM sang MobileSAM

MobileSAM giữ nguyên pipeline như SAM gốc, bao gồm tiền xử lý, hậu xử lý và tất cả giao diện. Điều này có nghĩa là bạn có thể chuyển từ SAM sang MobileSAM với những thay đổi tối thiểu trong quy trình làm việc của mình.

Điểm khác biệt chính là bộ mã hóa hình ảnh: MobileSAM thay thế bộ mã hóa ViT-H gốc (632 triệu tham số) bằng một bộ mã hóa Tiny-ViT nhỏ hơn nhiều (5 triệu tham số). Trên một GPU duy nhất, MobileSAM xử lý một hình ảnh trong khoảng 12ms (8ms cho bộ mã hóa, 4ms cho bộ giải mã mặt nạ).

So sánh bộ mã hóa hình ảnh dựa trên ViT

Bộ mã hóa hình ảnhSAM gốcMobileSAM
Tham số611M5M
Speed452ms8ms

Bộ giải mã mặt nạ có hướng dẫn nhắc (Prompt-Guided)

Bộ giải mã mặt nạSAM gốcMobileSAM
Tham số3.876M3.876M
Speed4ms4ms

So sánh toàn bộ pipeline

Toàn bộ pipeline (Enc+Dec)SAM gốcMobileSAM
Tham số615M9.66M
Speed456ms12ms

Hiệu suất của MobileSAM và SAM gốc được minh họa dưới đây bằng cách sử dụng cả nhắc nhở điểm (point prompt) và hộp (box prompt).

Hình ảnh với Điểm làm nhắc nhở

Hình ảnh với Hộp làm nhắc nhở

MobileSAM nhỏ hơn khoảng 7 lần và nhanh hơn 5 lần so với FastSAM. Để biết thêm chi tiết, hãy truy cập trang dự án MobileSAM.

Kiểm thử MobileSAM trong Ultralytics

Cũng giống như SAM gốc, Ultralytics cung cấp một giao diện đơn giản để kiểm thử MobileSAM, hỗ trợ cả nhắc nhở Điểm và Hộp.

Tải xuống mô hình

Tải xuống trọng số đã được huấn luyện trước của MobileSAM từ tài nguyên Ultralytics.

Nhắc nhở Điểm

Ví dụ
from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Nhắc nhở Hộp

Ví dụ
from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Cả MobileSAMSAM đều chia sẻ chung một API. Để biết thêm chi tiết sử dụng, hãy xem tài liệu SAM.

Tự động xây dựng tập dữ liệu phân đoạn bằng mô hình phát hiện

Để tự động gắn nhãn tập dữ liệu của bạn với framework Ultralytics, hãy sử dụng hàm auto_annotate như hiển thị bên dưới:

Ví dụ
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
Đối sốLoạiMặc địnhMô tả
datastrbắt buộcĐường dẫn đến thư mục chứa các hình ảnh mục tiêu để gán nhãn hoặc phân đoạn.
det_modelstr'yolo26x.pt'Đường dẫn model phát hiện YOLO cho phát hiện đối tượng ban đầu.
sam_modelstr'sam_b.pt'Đường dẫn model SAM cho phân đoạn (hỗ trợ SAM, các biến thể SAM2, và các model MobileSAM).
devicestr''Thiết bị tính toán (ví dụ: 'cuda:0', 'cpu', hoặc '' để tự động phát hiện thiết bị).
conffloat0.25Ngưỡng tin cậy phát hiện YOLO để lọc các kết quả phát hiện yếu.
ioufloat0.45Ngưỡng IoU cho NMS để lọc các hộp chồng chéo.
imgszint640Kí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_detint300Số lượng phát hiện tối đa trên mỗi hình ảnh để tối ưu hóa bộ nhớ.
classeslist[int]NoneDanh sách các chỉ số lớp để phát hiện (ví dụ: [0, 1] cho người & xe đạp).
output_dirstrNoneThư mục lưu cho các nhãn (mặc định là './labels' tương đối với đường dẫn dữ liệu).

Trích dẫn và Ghi nhận

Nếu MobileSAM hữu ích cho nghiên cứu hoặc phát triển của bạn, vui lòng cân nhắc trích dẫn bài báo sau:

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 toàn bộ bài báo MobileSAM trên arXiv.

Câu hỏi thường gặp (FAQ)

MobileSAM là gì và nó khác biệt thế nào với mô hình SAM gốc?

MobileSAM là một mô hình phân đoạn hình ảnh gọn nhẹ, nhanh chóng được tối ưu hóa cho các ứng dụng di động và biên. Nó duy trì cùng một pipeline như SAM gốc nhưng thay thế bộ mã hóa ViT-H lớn (632 triệu tham số) bằng một bộ mã hóa Tiny-ViT nhỏ gọn (5 triệu tham số). Kết quả là MobileSAM nhỏ hơn khoảng 5 lần và nhanh hơn 7 lần so với SAM gốc, hoạt động ở mức khoảng 12ms mỗi hình ảnh so với 456ms của SAM. Khám phá thêm về triển khai của MobileSAM trên kho lưu trữ GitHub của MobileSAM.

Làm thế nào để tôi có thể kiểm thử MobileSAM bằng Ultralytics?

Việc kiểm thử MobileSAM trong Ultralytics rất đơn giản. Bạn có thể sử dụng các nhắc nhở Điểm và Hộp để dự đoán các phân đoạn. Ví dụ, sử dụng nhắc nhở Điểm:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

Để biết thêm chi tiết, hãy xem phần Kiểm thử MobileSAM trong Ultralytics.

Tại sao tôi nên sử dụng MobileSAM cho ứng dụng di động của mình?

MobileSAM là lựa chọn lý tưởng cho các ứng dụng di động và biên nhờ thiết kế gọn nhẹ và tốc độ suy luận nhanh chóng. So với SAM gốc, MobileSAM nhỏ hơn khoảng 5 lần và nhanh hơn 7 lần, khiến nó phù hợp để phân đoạn thời gian thực trên các thiết bị có tài nguyên tính toán hạn chế. Hiệu quả của nó cho phép các thiết bị di động thực hiện phân đoạn hình ảnh thời gian thực mà không có độ trễ đáng kể. Ngoài ra, MobileSAM hỗ trợ chế độ Inference được tối ưu hóa cho hiệu suất di động.

MobileSAM đã được huấn luyện như thế nào và mã huấn luyện có sẵn không?

MobileSAM đã được huấn luyện trên một GPU duy nhất với tập dữ liệu 100 nghìn ảnh (1% số ảnh gốc) trong chưa đầy một ngày. Mặc dù mã huấn luyện sẽ được phát hành trong tương lai, bạn hiện có thể truy cập các trọng số đã được huấn luyện trước và chi tiết triển khai từ kho lưu trữ GitHub của MobileSAM.

Các trường hợp sử dụng chính cho MobileSAM là gì?

MobileSAM được thiết kế để phân đoạn hình ảnh nhanh chóng và hiệu quả trong môi trường di động và biên. Các trường hợp sử dụng chính bao gồm:

  • Phát hiện và phân đoạn đối tượng thời gian thực cho các ứng dụng di động
  • Xử lý hình ảnh độ trễ thấp trên các thiết bị có tài nguyên tính toán hạn chế
  • Tích hợp trong các ứng dụng di động hỗ trợ AI cho thực tế tăng cường (AR), phân tích, v.v.

Để biết thêm chi tiết về các trường hợp sử dụng và hiệu suất, hãy xem Chuyển đổi từ SAM sang MobileSAMblog Ultralytics về các ứng dụng MobileSAM.

Bình luận