
Link to this sectionMobile Segment Anything (MobileSAM)#
MobileSAM은 모바일 및 에지 장치를 위해 특별히 제작된 작고 효율적인 이미지 세분화 모델입니다. Meta의 Segment Anything Model(SAM)의 기능을 컴퓨팅 자원이 제한된 환경에 제공하도록 설계된 MobileSAM은 기존 SAM 파이프라인과의 호환성을 유지하면서 거의 즉각적인 세분화를 제공합니다. 실시간 애플리케이션을 개발하든 경량 배포를 준비하든, MobileSAM은 이전 모델에 비해 훨씬 적은 크기와 속도 요구사항으로 인상적인 세분화 결과를 제공합니다.
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
MobileSAM은 Grounding-SAM, AnyLabeling, Segment Anything in 3D을 포함한 다양한 프로젝트에 채택되었습니다.
MobileSAM은 단일 GPU를 사용하여 100k 이미지 데이터셋(원본 이미지의 1%)으로 하루가 채 안 되는 시간에 학습되었습니다. 학습 코드는 향후 공개될 예정입니다.
Link to this section사용 가능한 모델, 지원 작업 및 운영 모드#
아래 표는 사용 가능한 MobileSAM 모델, 사전 학습된 가중치, 지원되는 작업, 그리고 추론(Inference), 검증(Validation), 학습(Training), 내보내기(Export)와 같은 다양한 작동 모드와의 호환성을 요약합니다. 지원되는 모드는 ✅로, 지원되지 않는 모드는 ❌로 표시됩니다.
| 모델 유형 | 사전 학습된 가중치 | 지원되는 작업 | 추론 | 검증 | 학습 | 내보내기(Export) |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | 인스턴스 세분화(Instance Segmentation) | ✅ | ❌ | ❌ | ❌ |
Link to this sectionMobileSAM 대 YOLO 비교#
다음 비교는 Meta의 SAM 변형, MobileSAM, 그리고 YOLO26n-seg를 포함한 Ultralytics 세분화 모델 간의 차이점을 강조합니다:
| 모델 | 크기 (MB) | 매개변수 (M) | 속도 (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| YOLOv8 백본(backbone)을 사용한 FastSAM-s | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0배 작음) | 3.4 (11.4배 적음) | 24.8 (945배 빠름) |
| Ultralytics YOLO11n-seg | 6.2 (12.6배 작음) | 2.9 (13.4배 적음) | 24.3 (964배 빠름) |
| Ultralytics YOLO26n-seg | 6.7 (11.7배 작음) | 2.7 (14.4배 적음) | 25.2 (930배 빠름) |
이 비교는 SAM 변형 모델과 YOLO 세분화 모델 간의 모델 크기 및 속도에서의 상당한 차이를 보여줍니다. SAM 모델은 고유한 자동 세분화 기능을 제공하지만, YOLO 모델(특히 YOLOv8n-seg, YOLO11n-seg 및 YOLO26n-seg)은 훨씬 더 작고 빠르며 계산 효율성이 높습니다.
SAM 속도는 PyTorch로 측정되었으며, YOLO 속도는 ONNX Runtime으로 측정되었습니다. 테스트는 torch==2.10.0, ultralytics==8.4.31, onnxruntime==1.24.4를 사용하여 16GB RAM이 탑재된 2025 Apple M4 Air에서 실행되었습니다. 이 결과를 재현하려면:
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 sectionSAM에서 MobileSAM으로 전환하기#
MobileSAM은 전처리, 후처리 및 모든 인터페이스를 포함하여 원본 SAM과 동일한 파이프라인을 유지합니다. 즉, 워크플로를 거의 변경하지 않고도 SAM에서 MobileSAM으로 전환할 수 있습니다.
주요 차이점은 이미지 인코더에 있습니다. MobileSAM은 기존 ViT-H 인코더(637M 파라미터)를 훨씬 작은 Tiny-ViT 인코더(5M 파라미터)로 대체합니다. 단일 GPU에서 MobileSAM은 이미지를 약 12ms(인코더 8ms, 마스크 디코더 4ms) 만에 처리합니다.
Link to this sectionViT 기반 이미지 인코더 비교#
| 이미지 인코더 | 원본 SAM | MobileSAM |
|---|---|---|
| 매개변수 | 637M | 5M |
| 속도 | 452ms | 8ms |
Link to this section프롬프트 유도 마스크 디코더#
| 마스크 디코더 | 원본 SAM | MobileSAM |
|---|---|---|
| 매개변수 | 3.876M | 3.876M |
| 속도 | 4ms | 4ms |
Link to this section전체 파이프라인 비교#
| 전체 파이프라인 (인코더+디코더) | 원본 SAM | MobileSAM |
|---|---|---|
| 매개변수 | 641M | 9.66M |
| 속도 | 456ms | 12ms |
MobileSAM과 원본 SAM의 성능은 포인트 및 박스 프롬프트를 사용하여 아래에 설명되어 있습니다.


MobileSAM은 FastSAM보다 약 7배 작고 5배 빠릅니다. 자세한 내용은 MobileSAM 프로젝트 페이지를 방문하십시오.
Link to this sectionUltralytics에서 MobileSAM 테스트하기#
원본 SAM과 마찬가지로, Ultralytics는 포인트 및 박스 프롬프트를 모두 지원하여 MobileSAM을 테스트할 수 있는 간단한 인터페이스를 제공합니다.
Link to this section모델 다운로드#
Ultralytics 에셋에서 MobileSAM 사전 학습된 가중치를 다운로드하십시오.
Link to this section포인트 프롬프트#
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 section박스 프롬프트#
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]])MobileSAM과 SAM은 동일한 API를 공유합니다. 더 자세한 사용 방법은 SAM 문서를 참조하십시오.
Link to this section탐지 모델을 사용하여 자동으로 세분화 데이터셋 구축하기#
Ultralytics 프레임워크를 사용하여 데이터셋에 자동으로 주석을 달려면, 아래와 같이 auto_annotate 함수를 사용하십시오:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
data | str | 필수 | 주석 또는 세그멘테이션을 위한 대상 이미지가 포함된 디렉토리 경로. |
det_model | str | 'yolo26x.pt' | 초기 객체 탐지를 위한 YOLO 탐지 모델 경로입니다. |
sam_model | str | 'sam_b.pt' | 세그멘테이션을 위한 SAM 모델 경로입니다 (SAM, SAM 2, MobileSAM 및 SAM 3 가중치 지원). |
device | str | '' | 연산 장치입니다 (예: 'cuda:0', 'cpu', 또는 자동 장치 탐지를 위한 ''). |
conf | float | 0.25 | 약한 탐지를 필터링하기 위한 YOLO 탐지 신뢰도 임계값입니다. |
iou | float | 0.45 | 겹치는 박스를 필터링하기 위한 NMS(Non-Maximum Suppression) IoU 임계값입니다. |
imgsz | int | 640 | 이미지 크기 조정을 위한 입력 크기입니다(32의 배수여야 합니다). |
max_det | int | 300 | 메모리 효율을 위해 이미지당 허용되는 최대 탐지 수입니다. |
classes | list[int] | None | 탐지할 클래스 인덱스 목록입니다(예: 사람 및 자전거의 경우 [0, 1]). |
output_dir | str | None | 주석 저장 디렉토리입니다(기본값: <data>_auto_annotate_labels와 동일한 위치). |
Link to this section인용 및 감사의 글#
MobileSAM이 귀하의 연구나 개발에 도움이 되었다면 다음 논문을 인용해 주시기 바랍니다:
@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}
}전체 MobileSAM 논문(arXiv)을 읽어보십시오.
Link to this sectionFAQ#
Link to this sectionMobileSAM이란 무엇이며 기존 SAM 모델과 어떻게 다른가요?#
MobileSAM은 모바일 및 에지 애플리케이션에 최적화된 경량화되고 빠른 image segmentation 모델입니다. 기존 SAM과 동일한 파이프라인을 유지하지만, 대형 ViT-H 인코더(637M 파라미터)를 컴팩트한 Tiny-ViT 인코더(5M 파라미터)로 대체합니다. 그 결과 MobileSAM은 기존 SAM보다 약 5배 작고 7배 빠르며, 이미지당 약 12ms로 작동하여 SAM의 456ms와 비교됩니다. MobileSAM GitHub repository에서 MobileSAM 구현에 대해 더 자세히 알아보십시오.
Link to this sectionUltralytics를 사용하여 MobileSAM을 어떻게 테스트할 수 있나요?#
Ultralytics에서 MobileSAM을 테스트하는 방법은 간단합니다. 포인트(Point)와 박스(Box) 프롬프트를 사용하여 세그먼트를 예측할 수 있습니다. 예를 들어 포인트 프롬프트를 사용하는 방법은 다음과 같습니다:
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])자세한 내용은 Ultralytics에서 MobileSAM 테스트하기 섹션을 참조하십시오.
Link to this section모바일 애플리케이션에 MobileSAM을 사용해야 하는 이유는 무엇인가요?#
MobileSAM은 가벼운 설계와 빠른 추론 속도로 인해 모바일 및 엣지 애플리케이션에 이상적입니다. 기존 SAM과 비교했을 때 MobileSAM은 약 5배 작고 7배 빠르므로 연산 자원이 제한된 장치에서 실시간 세그멘테이션을 수행하기에 적합합니다. 이러한 효율성 덕분에 모바일 장치는 큰 지연 시간 없이 실시간 이미지 세그멘테이션을 수행할 수 있습니다. 또한 MobileSAM은 모바일 성능에 최적화된 추론 모드를 지원합니다.
Link to this sectionMobileSAM은 어떻게 학습되었으며 학습 코드를 사용할 수 있나요?#
MobileSAM은 단일 GPU에서 10만 장의 이미지 데이터셋(전체 이미지의 1%)으로 하루도 안 되어 학습되었습니다. 학습 코드는 향후 공개될 예정이지만, 현재는 MobileSAM GitHub 저장소에서 사전 학습된 가중치와 구현 세부 정보를 확인하실 수 있습니다.
Link to this sectionMobileSAM의 주요 사용 사례는 무엇인가요?#
MobileSAM은 모바일 및 엣지 환경에서 빠르고 효율적인 이미지 세그멘테이션을 위해 설계되었습니다. 주요 사용 사례는 다음과 같습니다:
- 모바일 앱을 위한 실시간 객체 탐지 및 세그멘테이션
- 연산 성능이 제한된 장치에서의 저지연 이미지 처리
- 증강 현실(AR), 분석 등을 위한 AI 기반 모바일 애플리케이션 통합
사용 사례 및 성능에 대한 자세한 내용은 SAM에서 MobileSAM으로 적응하기와 MobileSAM 애플리케이션에 대한 Ultralytics 블로그를 참조하십시오.