Meet YOLO26: next-gen vision AI.

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

Link to this sectionMobile 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 chuyên biệt cho các thiết bị di động và biên (edge devices). Được thiết kế để mang sức mạnh của Segment Anything Model (SAM) từ Meta đến những 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ì trong khi vẫn duy trì sự 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 đều mang lại kết quả phân đoạn ấn tượng với kích thước và yêu cầu tốc độ chỉ bằng một phần 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, bao gồm Grounding-SAM, AnyLabeling, và Segment 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 100k hình ảnh (1% số hình ả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.

Link to this sectionCác model có sẵn, tác vụ được hỗ trợ và chế độ vận hành#

Bảng dưới đây liệt kê các mô hình MobileSAM khả dụng, trọng số 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 đánh dấu bằng ✅ và chế độ không được hỗ trợ được đánh dấu bằng ❌.

Loại modelTrọng số PretrainedCác tác vụ được hỗ trợSuy luậnValidationHuấn luyệnXuất (Export)
MobileSAMmobile_sam.ptPhân đoạn Instance

Link to this sectionSo sánh MobileSAM với YOLO#

Bảng so sánh sau đâ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:

Mô hìnhKí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 backbone YOLOv823.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 thể hiện 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—có kích thước nhỏ hơn đáng kể, nhanh hơn và hiệu quả hơn về mặt tính toán.

Tốc độ của SAM được đo bằng PyTorch, tốc độ của YOLO được đo bằng ONNX Runtime. Các thử nghiệm được thực hiện 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)

Link to this sectionChuyể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ả các giao diện. Điều này có nghĩa là bạn có thể chuyển đổi từ SAM sang MobileSAM với những thay đổi tối thiểu đối với quy trình làm việc của mình.

Sự khác biệt chính nằm ở image encoder: MobileSAM thay thế encoder ViT-H gốc (637M tham số) bằng một encoder Tiny-ViT nhỏ hơn nhiều (5M tham số). Trên một GPU duy nhất, MobileSAM xử lý một ảnh trong khoảng 12ms (8ms cho encoder, 4ms cho mask decoder).

Link to this sectionSo 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ố637M5M
Tốc độ452ms8ms

Link to this sectionBộ giải mã mặt nạ hướng dẫn bằng gợi ý (Prompt-Guided Mask Decoder)#

Bộ giải mã mặt nạSAM gốcMobileSAM
Tham số3.876M3.876M
Tốc độ4ms4ms

Link to this sectionSo sánh toàn bộ Pipeline#

Toàn bộ Pipeline (Enc+Dec)SAM gốcMobileSAM
Tham số641M9.66M
Tốc độ456ms12ms

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ả gợi ý điểm (point) và hộp (box).

Hình ảnh với Điểm làm Gợi ý

Hình ảnh với Hộp làm Gợi ý

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.

Link to this sectionKiể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ả gợi ý Điểm và Hộp.

Link to this sectionTải xuống mô hình#

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

Link to this sectionGợi ý Đ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]])

Link to this sectionGợi ý Hộp#

Ví dụ
from ultralytics import SAM

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

# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

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.

Link to this sectionTự độ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ư được hiển thị dưới đây:

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 để chú thích 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ợ trọng số SAM, SAM 2, MobileSAM và SAM 3).
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 của phát hiện YOLO để lọc các kết quả phát hiện yếu.
ioufloat0.45Ngưỡng IoU cho Non-Maximum Suppression để 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 bộ nhớ.
classeslist[int]NoneDanh sách các chỉ số lớp cần phát hiện (ví dụ: [0, 1] cho người và xe đạp).
output_dirstrNoneThư mục lưu các nhãn (mặc định: thư mục ngang hàng <data>_auto_annotate_labels).

Link to this sectionTrích dẫn và Ghi nhận#

Nếu MobileSAM hữu ích trong 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.

Link to this sectionCâu hỏi thường gặp#

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

MobileSAM là một model image segmentation nhẹ và nhanh, được tối ưu hóa cho các ứng dụng mobile và edge. Nó duy trì cùng pipeline với SAM gốc nhưng thay thế encoder ViT-H lớn (637M tham số) bằng một encoder Tiny-ViT nhỏ gọn (5M 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 ảnh so với 456ms của SAM. Tìm hiểu thêm về triển khai của MobileSAM trên MobileSAM GitHub repository.

Link to this sectionLà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 gợi ý Điểm và Hộp để dự đoán phân đoạn. Ví dụ, sử dụng gợi ý Đ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.

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

MobileSAM 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. 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 cho 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 suất 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 gặp độ trễ đáng kể. Ngoài ra, MobileSAM còn hỗ trợ chế độ Inference được tối ưu hóa cho hiệu suất di động.

Link to this sectionMobileSAM đã đượ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 100k hình ảnh (1% số hình ả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ố đã huấn luyện trước và chi tiết triển khai từ kho lưu trữ GitHub MobileSAM.

Link to this sectionCác trường hợp sử dụng chính của MobileSAM là gì?#

MobileSAM được thiết kế cho phân đoạn hình ảnh nhanh, hiệu quả trong các 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 theo thời gian thực cho ứ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 vào các ứng dụng di động AI cho thực tế tăng cường (AR), phân tích dữ liệu và hơn thế nữa

Để 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 Điều chỉnh từ SAM sang MobileSAMblog Ultralytics về các ứng dụng MobileSAM.

Bình luận