सामग्री पर जाएं

के लिए संदर्भ ultralytics/models/sam/model.py

नोट

यह फ़ाइल यहाँ उपलब्ध है https://github.com/ultralytics/ultralytics/बूँद/मुख्य/ultralytics/मॉडल/sam/model.py। यदि आप कोई समस्या देखते हैं तो कृपया पुल अनुरोध का योगदान करके इसे ठीक करने में मदद करें 🛠️। 🙏 धन्यवाद !



ultralytics.models.sam.model.SAM

का रूप: Model

SAM (सेगमेंट कुछ भी मॉडल) इंटरफ़ेस क्लास।

SAM शीघ्र वास्तविक समय छवि विभाजन के लिए डिज़ाइन किया गया है। इसका उपयोग विभिन्न प्रकार के संकेतों के साथ किया जा सकता है जैसे कि बाउंडिंग बॉक्स, पॉइंट्स या लेबल. मॉडल में शून्य-शॉट प्रदर्शन की क्षमता है और इसे SA-1B पर प्रशिक्षित किया गया है डेटासेट।

में स्रोत कोड ultralytics/models/sam/model.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38  39 40 41 42 43 44 45 46 47 48  49 50  51   52 53  54   55  56   57   58            59   60 61 62 63 64 65 66 67 68  69 70 71 72 73 74 75 76 77 78 79 80 81  82 83 84   85  86 87    88           89  90  91  92 93 94  95 96 97 98  99 100 101 102  103 104 105 106  107 108 109 110   111  112 113114 
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

'खंड' कार्य से इसके संबंधित 'प्रेडिक्टर' तक मैपिंग प्रदान करता है।

देता:

प्रकार विवरण: __________
dict

एक शब्दकोश 'खंड' कार्य को इसके संबंधित 'प्रेडिक्टर' में मैप करता है।

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

'भविष्यवाणी' विधि के लिए उपनाम।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
source str

छवि या वीडियो फ़ाइल, या एक जनहित याचिका का पथ। छवि ऑब्जेक्ट, या एक numpy.ndarray ऑब्जेक्ट।

None
stream bool

यदि सही है, तो रीयल-टाइम स्ट्रीमिंग सक्षम करता है। डिफ़ॉल्ट रूप से गलत है.

False
bboxes list

संकेत विभाजन के लिए बाउंडिंग बॉक्स निर्देशांक की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None
points list

संकेत विभाजन के लिए बिंदुओं की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None
labels list

संकेत विभाजन के लिए लेबल की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None

देता:

प्रकार विवरण: __________
list

मॉडल भविष्यवाणियां।

में स्रोत कोड 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')

इनक्वियलाइज़ करता है SAM एक पूर्व-प्रशिक्षित मॉडल फ़ाइल के साथ मॉडल।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
model str

पूर्व-प्रशिक्षित के लिए पथ SAM मॉडल फ़ाइल। फ़ाइल में .pt या .pth एक्सटेंशन होना चाहिए।

'sam_b.pt'

उठाती:

प्रकार विवरण: __________
NotImplementedError

यदि मॉडल फ़ाइल एक्सटेंशन .pt या .pth नहीं है।

में स्रोत कोड 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)

के बारे में जानकारी लॉग करता है SAM को गढ़ना।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
detailed bool

यदि सही है, तो मॉडल के बारे में विस्तृत जानकारी प्रदर्शित करता है। डिफ़ॉल्ट रूप से गलत है.

False
verbose bool

यदि सही है, तो कंसोल पर जानकारी प्रदर्शित करता है। सही करने के लिए डिफ़ॉल्ट।

True

देता:

प्रकार विवरण: __________
tuple

एक टपल जिसमें मॉडल की जानकारी होती है।

में स्रोत कोड ultralytics/models/sam/model.py
93 94  95 96 97 98 99 100 101 102   103 104 
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)

दिए गए चित्र या वीडियो स्रोत पर विभाजन पूर्वानुमान करता है.

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
source str

छवि या वीडियो फ़ाइल, या एक जनहित याचिका का पथ। छवि ऑब्जेक्ट, या एक numpy.ndarray ऑब्जेक्ट।

आवश्यक
stream bool

यदि सही है, तो रीयल-टाइम स्ट्रीमिंग सक्षम करता है। डिफ़ॉल्ट रूप से गलत है.

False
bboxes list

संकेत विभाजन के लिए बाउंडिंग बॉक्स निर्देशांक की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None
points list

संकेत विभाजन के लिए बिंदुओं की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None
labels list

संकेत विभाजन के लिए लेबल की सूची। कोई नहीं करने के लिए डिफ़ॉल्ट।

None

देता:

प्रकार विवरण: __________
list

मॉडल भविष्यवाणियां।

में स्रोत कोड ultralytics/models/sam/model.py
58 59 60 61 62 63 64 65 6667 6869 70 71 72 7374 75
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)





2023-11-12 बनाया गया, अपडेट किया गया 2023-11-25
लेखक: ग्लेन-जोचर (3)