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.

lb Tensor

Optional tensor for multilabel NMS.

Example
from ultralytics import NAS

model = NAS('yolo_nas_s')
validator = model.validator
# Assumes that raw_preds are available
final_preds = validator.postprocess(raw_preds)
Note

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 model with necessary variables and settings."""
    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, on_plot=self.on_plot)
    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:
        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])
    preds = torch.cat((boxes, preds_in[0][1]), -1).permute(0, 2, 1)
    return ops.non_max_suppression(
        preds,
        self.args.conf,
        self.args.iou,
        labels=self.lb,
        multi_label=False,
        agnostic=self.args.single_cls,
        max_det=self.args.max_det,
        max_time_img=0.5,
    )





Created 2023-11-12, Updated 2024-07-21
Authors: glenn-jocher (6), Burhan-Q (1)