Reference for ultralytics/models/rtdetr/train.py#
This page is sourced from https://github.com/ultralytics/ultralytics/blob/main/ultralytics/models/rtdetr/train.py. Have an improvement or example to add? Open a Pull Request — thank you! 🙏
Class ultralytics.models.rtdetr.train.RTDETRTrainer#
RTDETRTrainer()Bases: DetectionTrainer
Trainer class for the RT-DETR model developed by Baidu for real-time object detection.
This class extends the DetectionTrainer class for YOLO to adapt to the specific features and architecture of RT-DETR. The model leverages Vision Transformers and has capabilities like IoU-aware query selection and adaptable inference speed.
Attributes
| Name | Type | Description |
|---|---|---|
loss_names | tuple | Names of the loss components, derived from the loss dict returned by the criterion. |
data | dict | Dataset configuration containing class count and other parameters. |
args | dict | Training arguments and hyperparameters. |
save_dir | Path | Directory to save training results. |
test_loader | DataLoader | DataLoader for validation/testing data. |
Methods
| Name | Description |
|---|---|
build_dataset | Build and return an RT-DETR dataset for training or validation. |
get_model | Initialize and return an RT-DETR model for object detection tasks. |
get_validator | Return an RTDETRValidator suitable for RT-DETR model validation. |
Examples
>>> from ultralytics.models.rtdetr.train import RTDETRTrainer
>>> args = dict(model="rtdetr-l.yaml", data="coco8.yaml", imgsz=640, epochs=3)
>>> trainer = RTDETRTrainer(overrides=args)
>>> trainer.train()- F.grid_sample used in RT-DETR does not support the
deterministic=Trueargument. - AMP training can lead to NaN outputs and may produce errors during bipartite graph matching.
ultralytics/models/rtdetr/train.py
class RTDETRTrainer(DetectionTrainer):
"""Trainer class for the RT-DETR model developed by Baidu for real-time object detection.
This class extends the DetectionTrainer class for YOLO to adapt to the specific features and architecture of
RT-DETR. The model leverages Vision Transformers and has capabilities like IoU-aware query selection and adaptable
inference speed.
Attributes:
loss_names (tuple): Names of the loss components, derived from the loss dict returned by the criterion.
data (dict): Dataset configuration containing class count and other parameters.
args (dict): Training arguments and hyperparameters.
save_dir (Path): Directory to save training results.
test_loader (DataLoader): DataLoader for validation/testing data.
Methods:
get_model: Initialize and return an RT-DETR model for object detection tasks.
build_dataset: Build and return an RT-DETR dataset for training or validation.
get_validator: Return a DetectionValidator suitable for RT-DETR model validation.
Examples:
>>> from ultralytics.models.rtdetr.train import RTDETRTrainer
>>> args = dict(model="rtdetr-l.yaml", data="coco8.yaml", imgsz=640, epochs=3)
>>> trainer = RTDETRTrainer(overrides=args)
>>> trainer.train()
Notes:
- F.grid_sample used in RT-DETR does not support the `deterministic=True` argument.
- AMP training can lead to NaN outputs and may produce errors during bipartite graph matching.
"""Method ultralytics.models.rtdetr.train.RTDETRTrainer.build_dataset#
def build_dataset(self, img_path: str, mode: str = "val", batch: int | None = None)Build and return an RT-DETR dataset for training or validation.
Args
| Name | Type | Description | Default |
|---|---|---|---|
img_path | str | Path to the folder containing images. | required |
mode | str | Dataset mode, either 'train' or 'val'. | "val" |
batch | int, optional | Batch size for rectangle training. | None |
Returns
| Type | Description |
|---|---|
RTDETRDataset | Dataset object for the specific mode. |
ultralytics/models/rtdetr/train.py
def build_dataset(self, img_path: str, mode: str = "val", batch: int | None = None):
"""Build and return an RT-DETR dataset for training or validation.
Args:
img_path (str): Path to the folder containing images.
mode (str): Dataset mode, either 'train' or 'val'.
batch (int, optional): Batch size for rectangle training.
Returns:
(RTDETRDataset): Dataset object for the specific mode.
"""
return RTDETRDataset(
img_path=img_path,
imgsz=self.args.imgsz,
batch_size=batch,
augment=mode == "train",
hyp=self.args,
rect=False,
cache=self.args.cache or None,
single_cls=self.args.single_cls or False,
prefix=colorstr(f"{mode}: "),
classes=self.args.classes,
data=self.data,
fraction=self.args.fraction if mode == "train" else 1.0,
)Method ultralytics.models.rtdetr.train.RTDETRTrainer.get_model#
def get_model(self, cfg: dict | None = None, weights: str | None = None, verbose: bool = True)Initialize and return an RT-DETR model for object detection tasks.
Args
| Name | Type | Description | Default |
|---|---|---|---|
cfg | dict, optional | Model configuration. | None |
weights | str, optional | Path to pre-trained model weights. | None |
verbose | bool | Verbose logging if True. | True |
Returns
| Type | Description |
|---|---|
RTDETRDetectionModel | Initialized model. |
ultralytics/models/rtdetr/train.py
def get_model(self, cfg: dict | None = None, weights: str | None = None, verbose: bool = True):
"""Initialize and return an RT-DETR model for object detection tasks.
Args:
cfg (dict, optional): Model configuration.
weights (str, optional): Path to pre-trained model weights.
verbose (bool): Verbose logging if True.
Returns:
(RTDETRDetectionModel): Initialized model.
"""
model = self.set_model_names_for_load(
RTDETRDetectionModel(cfg, nc=self.data["nc"], ch=self.data["channels"], verbose=verbose and RANK == -1)
)
if weights:
model.load(weights)
return modelMethod ultralytics.models.rtdetr.train.RTDETRTrainer.get_validator#
def get_validator(self)Return an RTDETRValidator suitable for RT-DETR model validation.
ultralytics/models/rtdetr/train.py
def get_validator(self):
"""Return an RTDETRValidator suitable for RT-DETR model validation."""
return RTDETRValidator(self.test_loader, save_dir=self.save_dir, args=copy(self.args))