Bỏ để qua phần nội dung

Tài liệu tham khảo cho ultralytics/models/sam/model.py

Ghi

Tệp này có sẵn tại https://github.com/ultralytics/ultralytics/blob/main/ultralytics/Mô hình/sam/model.py. Nếu bạn phát hiện ra một vấn đề, vui lòng giúp khắc phục nó bằng cách đóng góp Yêu cầu 🛠️ kéo. Cảm ơn bạn 🙏 !



ultralytics.models.sam.model.SAM

Căn cứ: Model

SAM (Segment Anything Model) lớp giao diện.

SAM được thiết kế để phân đoạn hình ảnh theo thời gian thực nhanh chóng. Nó có thể được sử dụng với nhiều lời nhắc khác nhau như: giới hạn hộp, điểm hoặc nhãn. Mô hình này có khả năng thực hiện zero-shot và được huấn luyện trên SA-1B tập dữ liệu.

Mã nguồn trong ultralytics/models/sam/model.py
class SAM(Model):
    """
    SAM (Segment Anything Model) interface class.

    SAM is designed for promptable real-time image segmentation. It can be used with a variety of prompts such as
    bounding boxes, points, or labels. The model has capabilities for zero-shot performance and is trained on the SA-1B
    dataset.
    """

    def __init__(self, model="sam_b.pt") -> None:
        """
        Initializes the SAM model with a pre-trained model file.

        Args:
            model (str): Path to the pre-trained SAM model file. File should have a .pt or .pth extension.

        Raises:
            NotImplementedError: If the model file extension is not .pt or .pth.
        """
        if model and Path(model).suffix not in {".pt", ".pth"}:
            raise NotImplementedError("SAM prediction requires pre-trained *.pt or *.pth model.")
        super().__init__(model=model, task="segment")

    def _load(self, weights: str, task=None):
        """
        Loads the specified weights into the SAM model.

        Args:
            weights (str): Path to the weights file.
            task (str, optional): Task name. Defaults to None.
        """
        self.model = build_sam(weights)

    def predict(self, source, stream=False, bboxes=None, points=None, labels=None, **kwargs):
        """
        Performs segmentation prediction on the given image or video source.

        Args:
            source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
            stream (bool, optional): If True, enables real-time streaming. Defaults to False.
            bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
            points (list, optional): List of points for prompted segmentation. Defaults to None.
            labels (list, optional): List of labels for prompted segmentation. Defaults to None.

        Returns:
            (list): The model predictions.
        """
        overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
        kwargs.update(overrides)
        prompts = dict(bboxes=bboxes, points=points, labels=labels)
        return super().predict(source, stream, prompts=prompts, **kwargs)

    def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
        """
        Alias for the 'predict' method.

        Args:
            source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
            stream (bool, optional): If True, enables real-time streaming. Defaults to False.
            bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
            points (list, optional): List of points for prompted segmentation. Defaults to None.
            labels (list, optional): List of labels for prompted segmentation. Defaults to None.

        Returns:
            (list): The model predictions.
        """
        return self.predict(source, stream, bboxes, points, labels, **kwargs)

    def info(self, detailed=False, verbose=True):
        """
        Logs information about the SAM model.

        Args:
            detailed (bool, optional): If True, displays detailed information about the model. Defaults to False.
            verbose (bool, optional): If True, displays information on the console. Defaults to True.

        Returns:
            (tuple): A tuple containing the model's information.
        """
        return model_info(self.model, detailed=detailed, verbose=verbose)

    @property
    def task_map(self):
        """
        Provides a mapping from the 'segment' task to its corresponding 'Predictor'.

        Returns:
            (dict): A dictionary mapping the 'segment' task to its corresponding 'Predictor'.
        """
        return {"segment": {"predictor": Predictor}}

task_map property

Cung cấp ánh xạ từ nhiệm vụ 'phân đoạn' đến 'Công cụ dự đoán' tương ứng của nó.

Trở lại:

Kiểu Sự miêu tả
dict

Một từ điển ánh xạ nhiệm vụ 'phân đoạn' đến 'Người dự đoán' tương ứng của nó.

__call__(source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs)

Bí danh cho phương pháp 'dự đoán'.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
source str

Đường dẫn đến tệp hình ảnh hoặc video hoặc PIL. Đối tượng hình ảnh hoặc đối tượng numpy.ndarray.

None
stream bool

Nếu True, cho phép phát trực tuyến theo thời gian thực. Mặc định là False.

False
bboxes list

Danh sách tọa độ hộp giới hạn để phân đoạn được nhắc. Mặc định là Không có.

None
points list

Danh sách các điểm để nhắc phân đoạn. Mặc định là Không có.

None
labels list

Danh sách nhãn để phân đoạn được nhắc. Mặc định là Không có.

None

Trở lại:

Kiểu Sự miêu tả
list

Mô hình dự đoán.

Mã nguồn trong ultralytics/models/sam/model.py
def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
    """
    Alias for the 'predict' method.

    Args:
        source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
        stream (bool, optional): If True, enables real-time streaming. Defaults to False.
        bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
        points (list, optional): List of points for prompted segmentation. Defaults to None.
        labels (list, optional): List of labels for prompted segmentation. Defaults to None.

    Returns:
        (list): The model predictions.
    """
    return self.predict(source, stream, bboxes, points, labels, **kwargs)

__init__(model='sam_b.pt')

Khởi tạo các SAM mô hình với tệp mô hình được đào tạo trước.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
model str

Con đường đến với đào tạo trước SAM tệp mô hình. Tệp phải có phần mở rộng .pt hoặc .pth.

'sam_b.pt'

Tăng:

Kiểu Sự miêu tả
NotImplementedError

Nếu phần mở rộng tệp mô hình không phải là .pt hoặc .pth.

Mã nguồn trong ultralytics/models/sam/model.py
def __init__(self, model="sam_b.pt") -> None:
    """
    Initializes the SAM model with a pre-trained model file.

    Args:
        model (str): Path to the pre-trained SAM model file. File should have a .pt or .pth extension.

    Raises:
        NotImplementedError: If the model file extension is not .pt or .pth.
    """
    if model and Path(model).suffix not in {".pt", ".pth"}:
        raise NotImplementedError("SAM prediction requires pre-trained *.pt or *.pth model.")
    super().__init__(model=model, task="segment")

info(detailed=False, verbose=True)

Ghi nhật ký thông tin về SAM mẫu.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
detailed bool

Nếu True, hiển thị thông tin chi tiết về mô hình. Mặc định là False.

False
verbose bool

Nếu True, hiển thị thông tin trên bảng điều khiển. Mặc định là True.

True

Trở lại:

Kiểu Sự miêu tả
tuple

Một bộ chứa thông tin của mô hình.

Mã nguồn trong ultralytics/models/sam/model.py
def info(self, detailed=False, verbose=True):
    """
    Logs information about the SAM model.

    Args:
        detailed (bool, optional): If True, displays detailed information about the model. Defaults to False.
        verbose (bool, optional): If True, displays information on the console. Defaults to True.

    Returns:
        (tuple): A tuple containing the model's information.
    """
    return model_info(self.model, detailed=detailed, verbose=verbose)

predict(source, stream=False, bboxes=None, points=None, labels=None, **kwargs)

Thực hiện dự đoán phân đoạn trên nguồn hình ảnh hoặc video đã cho.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
source str

Đường dẫn đến tệp hình ảnh hoặc video hoặc PIL. Đối tượng hình ảnh hoặc đối tượng numpy.ndarray.

bắt buộc
stream bool

Nếu True, cho phép phát trực tuyến theo thời gian thực. Mặc định là False.

False
bboxes list

Danh sách tọa độ hộp giới hạn để phân đoạn được nhắc. Mặc định là Không có.

None
points list

Danh sách các điểm để nhắc phân đoạn. Mặc định là Không có.

None
labels list

Danh sách nhãn để phân đoạn được nhắc. Mặc định là Không có.

None

Trở lại:

Kiểu Sự miêu tả
list

Mô hình dự đoán.

Mã nguồn trong ultralytics/models/sam/model.py
def predict(self, source, stream=False, bboxes=None, points=None, labels=None, **kwargs):
    """
    Performs segmentation prediction on the given image or video source.

    Args:
        source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
        stream (bool, optional): If True, enables real-time streaming. Defaults to False.
        bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
        points (list, optional): List of points for prompted segmentation. Defaults to None.
        labels (list, optional): List of labels for prompted segmentation. Defaults to None.

    Returns:
        (list): The model predictions.
    """
    overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
    kwargs.update(overrides)
    prompts = dict(bboxes=bboxes, points=points, labels=labels)
    return super().predict(source, stream, prompts=prompts, **kwargs)





Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), Burhan-Q (1)