Meet YOLO26: next-gen vision AI.

Link to this sectionSegment Anything Model (SAM)#

Sự phát triển của SAM

Đây là model SAM gốc từ Meta. Để có khả năng tốt hơn, hãy xem SAM 2 cho phân đoạn video hoặc SAM 3 cho Phân đoạn Khái niệm có thể nhắc (Promptable Concept Segmentation) với các lời nhắc ví dụ bằng văn bản và hình ảnh.

Cách sử dụng Segment Anything trong Colab

Chào mừng bạn đến với biên giới của phân đoạn ảnh với Segment Anything Model, hay SAM. Model mang tính cách mạng này đã thay đổi cuộc chơi bằng cách giới thiệu phân đoạn ảnh có thể nhắc với hiệu suất thời gian thực, thiết lập các tiêu chuẩn mới trong lĩnh vực này.

Link to this sectionGiới thiệu về SAM: Segment Anything Model#

Segment Anything Model, hay SAM, là một model phân đoạn ảnh tiên tiến cho phép phân đoạn theo lời nhắc (promptable segmentation), mang lại sự linh hoạt chưa từng có trong các tác vụ phân tích ảnh. SAM tạo thành trái tim của sáng kiến Segment Anything, một dự án đột phá giới thiệu một model, tác vụ và tập dữ liệu mới cho phân đoạn ảnh.

Thiết kế tiên tiến của SAM cho phép nó thích nghi với các phân phối ảnh và tác vụ mới mà không cần kiến thức trước đó, một tính năng được gọi là chuyển đổi zero-shot. Được huấn luyện trên tập dữ liệu SA-1B mở rộng, chứa hơn 1 tỷ mặt nạ trải rộng trên 11 triệu ảnh được tuyển chọn kỹ lưỡng, SAM đã thể hiện hiệu suất zero-shot ấn tượng, vượt qua các kết quả có giám sát đầy đủ trước đây trong nhiều trường hợp.

Mẫu tập dữ liệu SA-1B với các mặt nạ phân đoạn tự động Hình ảnh ví dụ SA-1B. Các hình ảnh trong tập dữ liệu phủ lên các mặt nạ từ tập dữ liệu SA-1B mới được giới thiệu. SA-1B chứa 11 triệu hình ảnh đa dạng, độ phân giải cao, có bản quyền và bảo mật quyền riêng tư cùng 1,1 tỷ mặt nạ phân đoạn chất lượng cao. Các mặt nạ này được chú thích hoàn toàn tự động bởi SAM, và như đã được xác minh bởi đánh giá của con người và vô số thử nghiệm, chúng có chất lượng và sự đa dạng cao. Hình ảnh được nhóm theo số lượng mặt nạ mỗi ảnh để trực quan hóa (trung bình có khoảng 100 mặt nạ mỗi ảnh).

Link to this sectionCác tính năng chính của Segment Anything Model (SAM)#

  • Tác vụ phân đoạn có thể nhắc: SAM được thiết kế với tư duy về tác vụ phân đoạn có thể nhắc, cho phép nó tạo ra các mặt nạ phân đoạn hợp lệ từ bất kỳ lời nhắc nào được cung cấp, chẳng hạn như gợi ý không gian hoặc văn bản xác định một đối tượng.
  • Kiến trúc tiên tiến: Segment Anything Model sử dụng một bộ mã hóa hình ảnh mạnh mẽ, một bộ mã hóa lời nhắc và một bộ giải mã mặt nạ gọn nhẹ. Kiến trúc độc đáo này cho phép nhắc linh hoạt, tính toán mặt nạ thời gian thực và nhận diện sự mơ hồ trong các tác vụ phân đoạn.
  • Tập dữ liệu SA-1B: Được giới thiệu bởi dự án Segment Anything, tập dữ liệu SA-1B có hơn 1 tỷ mặt nạ trên 11 triệu hình ảnh. Là tập dữ liệu phân đoạn lớn nhất cho đến nay, nó cung cấp cho SAM một nguồn dữ liệu huấn luyện quy mô lớn và đa dạng.
  • Hiệu suất Zero-Shot: SAM hiển thị hiệu suất zero-shot xuất sắc trên nhiều tác vụ phân đoạn khác nhau, biến nó thành một công cụ sẵn sàng sử dụng cho các ứng dụng đa dạng với nhu cầu tối thiểu về kỹ thuật nhắc.

Để có cái nhìn sâu sắc về Segment Anything Model và tập dữ liệu SA-1B, vui lòng truy cập Segment Anything GitHub và xem bài báo nghiên cứu Segment Anything.

SAM trên nền tảng Ultralytics

SAM hỗ trợ tính năng chú thích thông minh trên Ultralytics Platform, cho phép tạo mặt nạ thông minh dựa trên cú nhấp chuột để gắn nhãn tập dữ liệu nhanh chóng. Xem hướng dẫn chú thích để biết chi tiết.

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

Bảng này trình bày các model có sẵn với trọng số pretrained cụ thể của chúng, các tác vụ mà chúng hỗ trợ và khả năng tương thích với các chế độ vận hành khác nhau như Suy luận, Xác thực, Huấn luyệnXuất, được chỉ định bằng biểu tượng ✅ cho các chế độ được hỗ trợ và biểu tượng ❌ cho các chế độ không được hỗ trợ.

Loại modelTrọng số PretrainedCác tác vụ được hỗ trợSuy luậnXác thựcHuấn luyệnXuất (Export)
SAM basesam_b.ptPhân đoạn cá thể
SAM largesam_l.ptPhân đoạn cá thể

Link to this sectionCách sử dụng SAM: Sự linh hoạt và sức mạnh trong phân đoạn ảnh#

Segment Anything Model có thể được sử dụng cho vô số tác vụ hạ nguồn vượt ra ngoài dữ liệu huấn luyện của nó. Điều này bao gồm phát hiện cạnh, tạo đề xuất đối tượng, phân đoạn cá thể và dự đoán văn bản-sang-mặt nạ sơ bộ. Với kỹ thuật nhắc, SAM có thể nhanh chóng thích nghi với các tác vụ và phân phối dữ liệu mới theo cách zero-shot, thiết lập nó trở thành một công cụ linh hoạt và mạnh mẽ cho tất cả nhu cầu phân đoạn ảnh của bạn.

Link to this sectionVí dụ về dự đoán SAM#

Phân đoạn với các lời nhắc

Phân đoạn ảnh với các lời nhắc được cung cấp.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Phân đoạn mọi thứ

Phân đoạn toàn bộ hình ảnh.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
  • Logic ở đây là phân đoạn toàn bộ hình ảnh nếu bạn không truyền bất kỳ lời nhắc nào (bbox/điểm/mặt nạ).
Ví dụ về SAMPredictor

Bằng cách này, bạn có thể thiết lập hình ảnh một lần và chạy suy luận lời nhắc nhiều lần mà không cần chạy bộ mã hóa hình ảnh nhiều lần.

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])

# Run inference with single point prompt
results = predictor(points=[900, 370], labels=[1])

# Run inference with multiple points prompt
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with negative points prompt
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Reset image
predictor.reset_image()

Phân đoạn mọi thứ với các đối số bổ sung.

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
Lưu ý

Tất cả các results được trả về trong các ví dụ trên là các đối tượng Results cho phép truy cập dễ dàng vào các mặt nạ dự đoán và hình ảnh nguồn.

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

Tại đây chúng tôi so sánh model SAM-b của Meta với các model phân đoạn của Ultralytics bao gồm YOLO26n-seg:

ModelKích thước
(MB)
Tham số
(M)
Tốc độ (CPU)
(ms/im)
Meta SAM-b37593.741703
MobileSAM40.710.123802
FastSAM-s với YOLOv8 backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (nhỏ hơn 52.8x)3.4 (ít hơn 27.6x)24.8 (nhanh hơn 1682x)
Ultralytics YOLO11n-seg6.2 (nhỏ hơn 60.5x)2.9 (ít hơn 32.3x)24.3 (nhanh hơn 1716x)
Ultralytics YOLO26n-seg6.7 (nhỏ hơn 56.0x)2.7 (ít hơn 34.7x)25.2 (nhanh hơn 1655x)

So sánh này cho thấy sự khác biệt đáng kể về kích thước và tốc độ model giữa các biến thể SAM và các model phân đoạn YOLO. Trong khi SAM cung cấp các khả năng phân đoạn tự động độc đáo, các model YOLO, đặc biệt là YOLOv8n-seg, YOLO11n-seg và YOLO26n-seg, nhỏ hơn, nhanh hơn và hiệu quả tính toán hơn đáng kể.

Tốc độ SAM được đo bằng PyTorch, tốc độ YOLO được đo bằng ONNX Runtime. Các thử nghiệm chạy trên Apple M4 Air 2025 với 16GB RAM sử dụng torch==2.10.0, ultralytics==8.4.31onnxruntime==1.24.4. Để tái tạo thử nghiệm này:

Ví dụ
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM-b, MobileSAM
for file in ["sam_b.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 sectionTự động chú thích: Con đường nhanh chóng đến tập dữ liệu phân đoạn#

Tự động chú thích là một tính năng chính của SAM, cho phép người dùng tạo tập dữ liệu phân đoạn bằng cách sử dụng một model phát hiện đã được huấn luyện trước. Tính năng này cho phép chú thích nhanh chóng và chính xác một lượng lớn hình ảnh, loại bỏ nhu cầu gắn nhãn thủ công tốn thời gian.

Link to this sectionTạo tập dữ liệu phân đoạn của bạn bằng model phát hiện#

Để tự động chú thích 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="sam_b.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 confidence detection YOLO để lọc các kết quả dự đoán yếu.
ioufloat0.45Ngưỡng IoU cho Non-Maximum Suppression để lọc các box chồng lấp.
imgszint640Kích thước đầu vào để thay đổi kích thước ả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 ảnh để tối ưu hóa 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 & xe đạp).
output_dirstrNoneThư mục lưu các annotation (mặc định: thư mục con <data>_auto_annotate_labels).

Hàm auto_annotate nhận đường dẫn đến các hình ảnh của bạn, với các đối số tùy chọn để chỉ định các model detection và model segmentation SAM đã được huấn luyện sẵn, thiết bị chạy model và thư mục đầu ra để lưu các kết quả đã được gán nhãn.

Auto-annotation với các model đã được huấn luyện sẵn có thể giảm đáng kể thời gian và công sức cần thiết để tạo các tập dữ liệu segmentation chất lượng cao. Tính năng này đặc biệt hữu ích cho các nhà nghiên cứu và lập trình viên làm việc với các bộ sưu tập ảnh lớn, vì nó cho phép họ tập trung vào việc phát triển và đánh giá model thay vì gán nhãn thủ công.

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

Nếu bạn thấy SAM hữu ích trong công việc nghiên cứu hoặc phát triển của mình, vui lòng cân nhắc trích dẫn bài báo của chúng tôi:

Trích dẫn
@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Chúng tôi muốn bày tỏ lòng biết ơn đến Meta AI vì đã tạo và duy trì tài nguyên giá trị này cho cộng đồng computer vision.

Link to this sectionFAQ#

Link to this sectionSegment Anything Model (SAM) từ Ultralytics là gì?#

Segment Anything Model (SAM) từ Ultralytics là một model segmentation hình ảnh mang tính cách mạng được thiết kế cho các tác vụ promptable segmentation. Nó tận dụng kiến trúc tiên tiến, bao gồm các bộ mã hóa ảnh và prompt kết hợp với bộ giải mã mask nhẹ, để tạo ra các mask segmentation chất lượng cao từ nhiều prompt khác nhau như các tín hiệu không gian hoặc văn bản. Được huấn luyện trên tập dữ liệu mở rộng SA-1B dataset, SAM vượt trội trong hiệu suất zero-shot, thích ứng với các phân phối hình ảnh và tác vụ mới mà không cần kiến thức trước đó.

Link to this sectionLàm thế nào để tôi có thể sử dụng Segment Anything Model (SAM) để thực hiện segmentation hình ảnh?#

Bạn có thể sử dụng Segment Anything Model (SAM) để thực hiện segmentation hình ảnh bằng cách chạy inference với nhiều prompt khác nhau như bounding box hoặc điểm. Dưới đây là ví dụ sử dụng Python:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Segment with multiple points prompt
model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Segment with multiple points prompt per object
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Segment with negative points prompt.
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Ngoài ra, bạn có thể chạy inference với SAM trong giao diện dòng lệnh (CLI):

yolo predict model=sam_b.pt source=path/to/image.jpg

Để biết thêm hướng dẫn sử dụng chi tiết, hãy truy cập Phần Segmentation.

Link to this sectionSAM và các model YOLO so sánh như thế nào về hiệu suất?#

So với các model YOLO, các biến thể SAM như SAM-b, MobileSAM và FastSAM-s thường lớn hơn và chậm hơn nhưng cung cấp các khả năng segmentation zero-shot độc đáo. Ví dụ, YOLO26n-seg nhỏ hơn 56 lầnnhanh hơn 1650 lần so với model SAM-b gốc của Meta trên CPU. Điều này làm cho các model YOLO trở nên lý tưởng cho các ứng dụng đòi hỏi sự nhanh chóng, nhẹ nhàng và hiệu quả về tính toán, trong khi các model SAM vượt trội trong các tác vụ segmentation linh hoạt, có thể prompt và zero-shot.

Link to this sectionLàm thế nào để tôi có thể tự động gán nhãn (auto-annotate) tập dữ liệu của mình bằng SAM?#

SAM của Ultralytics cung cấp tính năng auto-annotation cho phép tạo tập dữ liệu segmentation bằng cách sử dụng một model detection đã được huấn luyện sẵn. Dưới đây là ví dụ bằng Python:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")

Hàm này nhận đường dẫn đến các hình ảnh của bạn và các đối số tùy chọn cho các model detection và SAM segmentation đã huấn luyện sẵn, cùng với các thông số chỉ định thiết bị và thư mục đầu ra. Để có hướng dẫn đầy đủ, hãy xem Auto-Annotation.

Link to this sectionNhững tập dữ liệu nào được sử dụng để huấn luyện Segment Anything Model (SAM)?#

SAM được huấn luyện trên tập dữ liệu mở rộng SA-1B dataset bao gồm hơn 1 tỷ mask trên 11 triệu hình ảnh. SA-1B là tập dữ liệu segmentation lớn nhất cho đến nay, cung cấp training data chất lượng cao và đa dạng, đảm bảo hiệu suất zero-shot ấn tượng trong các tác vụ segmentation đa dạng. Để biết thêm chi tiết, hãy truy cập Phần Dataset.

Bình luận