Skip to content

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, pbar=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
def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=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.
        pbar (Any, optional): Progress bar for displaying progress.
        args (dict, optional): Arguments for the validator.
        _callbacks (list, optional): List of callback functions.
    """
    super().__init__(dataloader, save_dir, pbar, args, _callbacks)
    self.nt_per_class = None
    self.nt_per_image = None
    self.is_coco = False
    self.is_lvis = False
    self.class_map = None
    self.args.task = "detect"
    self.metrics = DetMetrics(save_dir=self.save_dir)
    self.iouv = torch.linspace(0.5, 0.95, 10)  # IoU vector for mAP@0.5:0.95
    self.niou = self.iouv.numel()
    self.lb = []  # for autolabelling
    if self.args.save_hybrid and self.args.task == "detect":
        LOGGER.warning(
            "WARNING ⚠️ 'save_hybrid=True' will append ground truth to predictions for autolabelling.\n"
            "WARNING ⚠️ 'save_hybrid=True' will cause incorrect mAP.\n"
        )

postprocess

postprocess(preds_in)

Apply Non-maximum suppression to prediction outputs.

Source code in ultralytics/models/nas/val.py
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,
        max_time_img=0.5,
    )



📅 Created 1 year ago ✏️ Updated 6 months ago