Skip to content

Register now for

# Reference for `ultralytics/models/nas/val.py`

Note

This file is available at https://github.com/ultralytics/ultralytics/blob/main/ultralytics/models/nas/val.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!

## `` ultralytics.models.nas.val.NASValidator

    NASValidator(dataloader=None, save_dir=None, args=None, _callbacks=None)

Bases: `DetectionValidator`

Ultralytics YOLO NAS Validator for object detection.

Extends DetectionValidator from the Ultralytics models package and is designed to post-process the raw predictions generated by YOLO NAS models. It performs non-maximum suppression to remove overlapping and low-confidence boxes, ultimately producing the final detections.

Attributes:

Name | Type | Description
--- | --- | ---
`args` | `Namespace` | Namespace containing various configurations for post-processing, such as confidence and IoU thresholds.
`lb` | `Tensor` | Optional tensor for multilabel NMS.

Examples:

    >>> from ultralytics import NAS
    >>> model = NAS("yolo_nas_s")
    >>> validator = model.validator
    >>> # Assumes that raw_preds are available
    >>> final_preds = validator.postprocess(raw_preds)

Notes

This class is generally not instantiated directly but is used internally within the NAS class.

Source code in `ultralytics/models/yolo/detect/val.py`

    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None) -> None:
        """
        Initialize detection validator with necessary variables and settings.

        Args:
            dataloader (torch.utils.data.DataLoader, optional): Dataloader to use for validation.
            save_dir (Path, optional): Directory to save results.
            args (dict[str, Any], optional): Arguments for the validator.
            _callbacks (list[Any], optional): List of callback functions.
        """
        super().__init__(dataloader, save_dir, args, _callbacks)
        self.is_coco = False
        self.is_lvis = False
        self.class_map = None
        self.args.task = "detect"
        self.iouv = torch.linspace(0.5, 0.95, 10)  # IoU vector for mAP@0.5:0.95
        self.niou = self.iouv.numel()
        self.metrics = DetMetrics()

### `` postprocess

    postprocess(preds_in)

Apply Non-maximum suppression to prediction outputs.

Source code in `ultralytics/models/nas/val.py`

    35
    36
    37
    38
    39
    def postprocess(self, preds_in):
        """Apply Non-maximum suppression to prediction outputs."""
        boxes = ops.xyxy2xywh(preds_in[0][0])  # Convert bounding box format from xyxy to xywh
        preds = torch.cat((boxes, preds_in[0][1]), -1).permute(0, 2, 1)  # Concatenate boxes with scores and permute
        return super().postprocess(preds)

📅 Created 1 year ago ✏️ Updated 1 year ago