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

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

नोट

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



ultralytics.models.rtdetr.predict.RTDETRPredictor

का रूप: BasePredictor

RT-DETR (रीयल-टाइम डिटेक्शन ट्रांसफार्मर) भविष्यवाणियां करने के लिए BasePredictor वर्ग का विस्तार करने वाला प्रेडिक्टर Baidu का RT-DETR को गढ़ना।

यह वर्ग बनाए रखते हुए वास्तविक समय वस्तु का पता लगाने के लिए विजन ट्रांसफॉर्मर की शक्ति का लाभ उठाता है उच्च सटीकता। यह कुशल हाइब्रिड एन्कोडिंग और IoU-जागरूक क्वेरी चयन जैसी प्रमुख विशेषताओं का समर्थन करता है।

उदाहरण
from ultralytics.utils import ASSETS
from ultralytics.models.rtdetr import RTDETRPredictor

args = dict(model='rtdetr-l.pt', source=ASSETS)
predictor = RTDETRPredictor(overrides=args)
predictor.predict_cli()

विशेषताएँ:

नाम प्रकार विवरण: __________
imgsz int

अनुमान के लिए छवि का आकार (चौकोर और स्केल से भरा होना चाहिए)।

args dict

तर्क भविष्यवक्ता के लिए ओवरराइड करता है।

में स्रोत कोड ultralytics/models/rtdetr/predict.py
11बांग्लादेश 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36373839 404142434445 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 686970717273747576 77787980 818283
class RTDETRPredictor(BasePredictor):
    """
    RT-DETR (Real-Time Detection Transformer) Predictor extending the BasePredictor class for making predictions using
    Baidu's RT-DETR model.

    This class leverages the power of Vision Transformers to provide real-time object detection while maintaining
    high accuracy. It supports key features like efficient hybrid encoding and IoU-aware query selection.

    Example:
        ```python
        from ultralytics.utils import ASSETS
        from ultralytics.models.rtdetr import RTDETRPredictor

        args = dict(model='rtdetr-l.pt', source=ASSETS)
        predictor = RTDETRPredictor(overrides=args)
        predictor.predict_cli()
        ```

    Attributes:
        imgsz (int): Image size for inference (must be square and scale-filled).
        args (dict): Argument overrides for the predictor.
    """

    def postprocess(self, preds, img, orig_imgs):
        """
        Postprocess the raw predictions from the model to generate bounding boxes and confidence scores.

        The method filters detections based on confidence and class if specified in `self.args`.

        Args:
            preds (torch.Tensor): Raw predictions from the model.
            img (torch.Tensor): Processed input images.
            orig_imgs (list or torch.Tensor): Original, unprocessed images.

        Returns:
            (list[Results]): A list of Results objects containing the post-processed bounding boxes, confidence scores,
                and class labels.
        """
        nd = preds[0].shape[-1]
        bboxes, scores = preds[0].split((4, nd - 4), dim=-1)

        if not isinstance(orig_imgs, list):  # input images are a torch.Tensor, not a list
            orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)

        results = []
        for i, bbox in enumerate(bboxes):  # (300, 4)
            bbox = ops.xywh2xyxy(bbox)
            score, cls = scores[i].max(-1, keepdim=True)  # (300, 1)
            idx = score.squeeze(-1) > self.args.conf  # (300, )
            if self.args.classes is not None:
                idx = (cls == torch.tensor(self.args.classes, device=cls.device)).any(1) & idx
            pred = torch.cat([bbox, score, cls], dim=-1)[idx]  # filter
            orig_img = orig_imgs[i]
            oh, ow = orig_img.shape[:2]
            pred[..., [0, 2]] *= ow
            pred[..., [1, 3]] *= oh
            img_path = self.batch[0][i]
            results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
        return results

    def pre_transform(self, im):
        """
        Pre-transforms the input images before feeding them into the model for inference. The input images are
        letterboxed to ensure a square aspect ratio and scale-filled. The size must be square(640) and scaleFilled.

        Args:
            im (list[np.ndarray] |torch.Tensor): Input images of shape (N,3,h,w) for tensor, [(h,w,3) x N] for list.

        Returns:
            (list): List of pre-transformed images ready for model inference.
        """
        letterbox = LetterBox(self.imgsz, auto=False, scaleFill=True)
        return [letterbox(image=x) for x in im]

postprocess(preds, img, orig_imgs)

बाउंडिंग बॉक्स और आत्मविश्वास स्कोर उत्पन्न करने के लिए मॉडल से कच्ची भविष्यवाणियों को पोस्टप्रोसेस करें।

विधि आत्मविश्वास और वर्ग के आधार पर पता लगाने को फ़िल्टर करती है यदि निर्दिष्ट है self.args.

पैरामीटर:

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

मॉडल से कच्ची भविष्यवाणियां।

आवश्यक
img Tensor

संसाधित इनपुट छवियां।

आवश्यक
orig_imgs list or Tensor

मूल, असंसाधित चित्र।

आवश्यक

देता:

प्रकार विवरण: __________
list[Results]

परिणाम वस्तुओं की एक सूची जिसमें पोस्ट-संसाधित बाउंडिंग बॉक्स, आत्मविश्वास स्कोर, और क्लास लेबल।

में स्रोत कोड ultralytics/models/rtdetr/predict.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5556 57 58 59 60616263 646566676869
def postprocess(self, preds, img, orig_imgs):
    """
    Postprocess the raw predictions from the model to generate bounding boxes and confidence scores.

    The method filters detections based on confidence and class if specified in `self.args`.

    Args:
        preds (torch.Tensor): Raw predictions from the model.
        img (torch.Tensor): Processed input images.
        orig_imgs (list or torch.Tensor): Original, unprocessed images.

    Returns:
        (list[Results]): A list of Results objects containing the post-processed bounding boxes, confidence scores,
            and class labels.
    """
    nd = preds[0].shape[-1]
    bboxes, scores = preds[0].split((4, nd - 4), dim=-1)

    if not isinstance(orig_imgs, list):  # input images are a torch.Tensor, not a list
        orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)

    results = []
    for i, bbox in enumerate(bboxes):  # (300, 4)
        bbox = ops.xywh2xyxy(bbox)
        score, cls = scores[i].max(-1, keepdim=True)  # (300, 1)
        idx = score.squeeze(-1) > self.args.conf  # (300, )
        if self.args.classes is not None:
            idx = (cls == torch.tensor(self.args.classes, device=cls.device)).any(1) & idx
        pred = torch.cat([bbox, score, cls], dim=-1)[idx]  # filter
        orig_img = orig_imgs[i]
        oh, ow = orig_img.shape[:2]
        pred[..., [0, 2]] *= ow
        pred[..., [1, 3]] *= oh
        img_path = self.batch[0][i]
        results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred))
    return results

pre_transform(im)

अनुमान के लिए मॉडल में फीड करने से पहले इनपुट छवियों को पूर्व-रूपांतरित करता है। इनपुट छवियां हैं एक वर्ग पहलू अनुपात और स्केल-भरा सुनिश्चित करने के लिए लेटरबॉक्स। आकार वर्ग (640) और स्केलभरा होना चाहिए।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
im list[ndarray] | Tensor

के लिए आकार की इनपुट छवियां (एन, 3, एच, डब्ल्यू) tensor, [(एच, डब्ल्यू, 3) एक्स एन] सूची के लिए।

आवश्यक

देता:

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

मॉडल अनुमान के लिए तैयार पूर्व-रूपांतरित छवियों की सूची।

में स्रोत कोड ultralytics/models/rtdetr/predict.py
def pre_transform(self, im):
    """
    Pre-transforms the input images before feeding them into the model for inference. The input images are
    letterboxed to ensure a square aspect ratio and scale-filled. The size must be square(640) and scaleFilled.

    Args:
        im (list[np.ndarray] |torch.Tensor): Input images of shape (N,3,h,w) for tensor, [(h,w,3) x N] for list.

    Returns:
        (list): List of pre-transformed images ready for model inference.
    """
    letterbox = LetterBox(self.imgsz, auto=False, scaleFill=True)
    return [letterbox(image=x) for x in im]





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