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

के लिए संदर्भ ultralytics/data/build.py

नोट

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



ultralytics.data.build.InfiniteDataLoader

का रूप: DataLoader

डेटालोडर जो श्रमिकों का पुन: उपयोग करता है।

वेनिला डेटालोडर के समान सिंटैक्स का उपयोग करता है।

में स्रोत कोड ultralytics/data/build.py
29 बांग्लादेश 29 बांग्लादेश बांग्लादेश 29 बांग्लादेश बांग्लादेश 29 बांग्लादेश बांग्लादेश में 29 बांग्लादेश बांग्लादेश के साथ 29 बांग्लादेश बांग्लादेश में 29 बांग्लादेश के साथ 19 रुपये का स्तर 30 31 32 33 34 35 39 40 41 29 30 31 32  33 33 34 35 35 3940 41 42435455 5657
class InfiniteDataLoader(dataloader.DataLoader):
    """
    Dataloader that reuses workers.

    Uses same syntax as vanilla DataLoader.
    """

    def __init__(self, *args, **kwargs):
        """Dataloader that infinitely recycles workers, inherits from DataLoader."""
        super().__init__(*args, **kwargs)
        object.__setattr__(self, "batch_sampler", _RepeatSampler(self.batch_sampler))
        self.iterator = super().__iter__()

    def __len__(self):
        """Returns the length of the batch sampler's sampler."""
        return len(self.batch_sampler.sampler)

    def __iter__(self):
        """Creates a sampler that repeats indefinitely."""
        for _ in range(len(self)):
            yield next(self.iterator)

    def reset(self):
        """
        Reset iterator.

        This is useful when we want to modify settings of dataset while training.
        """
        self.iterator = self._get_iterator()

__init__(*args, **kwargs)

डेटालोडर जो श्रमिकों को असीम रूप से रीसायकल करता है, डेटालोडर से विरासत में मिला है।

में स्रोत कोड ultralytics/data/build.py
def __init__(self, *args, **kwargs):
    """Dataloader that infinitely recycles workers, inherits from DataLoader."""
    super().__init__(*args, **kwargs)
    object.__setattr__(self, "batch_sampler", _RepeatSampler(self.batch_sampler))
    self.iterator = super().__iter__()

__iter__()

एक नमूना बनाता है जो अनिश्चित काल तक दोहराता है।

में स्रोत कोड ultralytics/data/build.py
def __iter__(self):
    """Creates a sampler that repeats indefinitely."""
    for _ in range(len(self)):
        yield next(self.iterator)

__len__()

बैच सैंपलर के सैंपलर की लंबाई लौटाता है।

में स्रोत कोड ultralytics/data/build.py
def __len__(self):
    """Returns the length of the batch sampler's sampler."""
    return len(self.batch_sampler.sampler)

reset()

इटरेटर रीसेट करें।

यह तब उपयोगी होता है जब हम प्रशिक्षण के दौरान डेटासेट की सेटिंग्स को संशोधित करना चाहते हैं।

में स्रोत कोड ultralytics/data/build.py
def reset(self):
    """
    Reset iterator.

    This is useful when we want to modify settings of dataset while training.
    """
    self.iterator = self._get_iterator()



ultralytics.data.build._RepeatSampler

नमूना जो हमेशा के लिए दोहराता है।

पैरामीटर:

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

दोहराने के लिए नमूना।

आवश्यक
में स्रोत कोड ultralytics/data/build.py
60 61 62 63 64 65 666768 6970 7172737475
class _RepeatSampler:
    """
    Sampler that repeats forever.

    Args:
        sampler (Dataset.sampler): The sampler to repeat.
    """

    def __init__(self, sampler):
        """Initializes an object that repeats a given sampler indefinitely."""
        self.sampler = sampler

    def __iter__(self):
        """Iterates over the 'sampler' and yields its contents."""
        while True:
            yield from iter(self.sampler)

__init__(sampler)

एक ऑब्जेक्ट को इनिशियलाइज़ करता है जो किसी दिए गए सैंपलर को अनिश्चित काल तक दोहराता है।

में स्रोत कोड ultralytics/data/build.py
def __init__(self, sampler):
    """Initializes an object that repeats a given sampler indefinitely."""
    self.sampler = sampler

__iter__()

'नमूना' पर पुनरावृत्त करता है और इसकी सामग्री उत्पन्न करता है।

में स्रोत कोड ultralytics/data/build.py
def __iter__(self):
    """Iterates over the 'sampler' and yields its contents."""
    while True:
        yield from iter(self.sampler)



ultralytics.data.build.seed_worker(worker_id)

डेटालोडर वर्कर सीड https:// सेट करेंpytorch.org/docs/stable/notes/randomness.html#dataloader का उपयोग करें।

में स्रोत कोड ultralytics/data/build.py
def seed_worker(worker_id):  # noqa
    """Set dataloader worker seed https://pytorch.org/docs/stable/notes/randomness.html#dataloader."""
    worker_seed = torch.initial_seed() % 2**32
    np.random.seed(worker_seed)
    random.seed(worker_seed)



ultralytics.data.build.build_yolo_dataset(cfg, img_path, batch, data, mode='train', rect=False, stride=32)

निर्माण कर YOLO डेटासेट।

में स्रोत कोड ultralytics/data/build.py
def build_yolo_dataset(cfg, img_path, batch, data, mode="train", rect=False, stride=32):
    """Build YOLO Dataset."""
    return YOLODataset(
        img_path=img_path,
        imgsz=cfg.imgsz,
        batch_size=batch,
        augment=mode == "train",  # augmentation
        hyp=cfg,  # TODO: probably add a get_hyps_from_cfg function
        rect=cfg.rect or rect,  # rectangular batches
        cache=cfg.cache or None,
        single_cls=cfg.single_cls or False,
        stride=int(stride),
        pad=0.0 if mode == "train" else 0.5,
        prefix=colorstr(f"{mode}: "),
        task=cfg.task,
        classes=cfg.classes,
        data=data,
        fraction=cfg.fraction if mode == "train" else 1.0,
    )



ultralytics.data.build.build_dataloader(dataset, batch, workers, shuffle=True, rank=-1)

प्रशिक्षण या सत्यापन सेट के लिए एक InfiniteDataLoader या DataLoader लौटाएं।

में स्रोत कोड ultralytics/data/build.py
106 107 108 109 110 111 112 113 114 115 116 117 118 119120 121 122123124
def build_dataloader(dataset, batch, workers, shuffle=True, rank=-1):
    """Return an InfiniteDataLoader or DataLoader for training or validation set."""
    batch = min(batch, len(dataset))
    nd = torch.cuda.device_count()  # number of CUDA devices
    nw = min([os.cpu_count() // max(nd, 1), workers])  # number of workers
    sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle)
    generator = torch.Generator()
    generator.manual_seed(6148914691236517205 + RANK)
    return InfiniteDataLoader(
        dataset=dataset,
        batch_size=batch,
        shuffle=shuffle and sampler is None,
        num_workers=nw,
        sampler=sampler,
        pin_memory=PIN_MEMORY,
        collate_fn=getattr(dataset, "collate_fn", None),
        worker_init_fn=seed_worker,
        generator=generator,
    )



ultralytics.data.build.check_source(source)

स्रोत प्रकार की जाँच करें और संबंधित ध्वज मान लौटाएँ।

में स्रोत कोड ultralytics/data/build.py
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
def check_source(source):
    """Check source type and return corresponding flag values."""
    webcam, screenshot, from_img, in_memory, tensor = False, False, False, False, False
    if isinstance(source, (str, int, Path)):  # int for local usb camera
        source = str(source)
        is_file = Path(source).suffix[1:] in (IMG_FORMATS + VID_FORMATS)
        is_url = source.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://"))
        webcam = source.isnumeric() or source.endswith(".streams") or (is_url and not is_file)
        screenshot = source.lower() == "screen"
        if is_url and is_file:
            source = check_file(source)  # download
    elif isinstance(source, LOADERS):
        in_memory = True
    elif isinstance(source, (list, tuple)):
        source = autocast_list(source)  # convert all list elements to PIL or np arrays
        from_img = True
    elif isinstance(source, (Image.Image, np.ndarray)):
        from_img = True
    elif isinstance(source, torch.Tensor):
        tensor = True
    else:
        raise TypeError("Unsupported image type. For supported types see https://docs.ultralytics.com/modes/predict")

    return source, webcam, screenshot, from_img, in_memory, tensor



ultralytics.data.build.load_inference_source(source=None, vid_stride=1, buffer=False)

ऑब्जेक्ट डिटेक्शन के लिए एक अनुमान स्रोत लोड करता है और आवश्यक परिवर्तन लागू करता है।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
source (str, Path, Tensor, Image, ndarray)

अनुमान के लिए इनपुट स्रोत।

None
vid_stride int

वीडियो स्रोतों के लिए फ्रेम अंतराल। डिफ़ॉल्ट 1 है।

1
buffer bool

निर्धारित किया गया कि स्ट्रीम फ़्रेम बफर किए जाएंगे या नहीं। डिफ़ॉल्ट ग़लत है.

False

देता:

नाम प्रकार विवरण: __________
dataset Dataset

निर्दिष्ट इनपुट स्रोत के लिए एक डेटासेट ऑब्जेक्ट।

में स्रोत कोड ultralytics/data/build.py
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178179 180181 182 183 184 185
def load_inference_source(source=None, vid_stride=1, buffer=False):
    """
    Loads an inference source for object detection and applies necessary transformations.

    Args:
        source (str, Path, Tensor, PIL.Image, np.ndarray): The input source for inference.
        vid_stride (int, optional): The frame interval for video sources. Default is 1.
        buffer (bool, optional): Determined whether stream frames will be buffered. Default is False.

    Returns:
        dataset (Dataset): A dataset object for the specified input source.
    """
    source, webcam, screenshot, from_img, in_memory, tensor = check_source(source)
    source_type = source.source_type if in_memory else SourceTypes(webcam, screenshot, from_img, tensor)

    # Dataloader
    if tensor:
        dataset = LoadTensor(source)
    elif in_memory:
        dataset = source
    elif webcam:
        dataset = LoadStreams(source, vid_stride=vid_stride, buffer=buffer)
    elif screenshot:
        dataset = LoadScreenshots(source)
    elif from_img:
        dataset = LoadPilAndNumpy(source)
    else:
        dataset = LoadImages(source, vid_stride=vid_stride)

    # Attach source types to the dataset
    setattr(dataset, "source_type", source_type)

    return dataset





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