Skip to content

Reference for ultralytics/utils/callbacks/neptune.py

Note

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


ultralytics.utils.callbacks.neptune._log_scalars

_log_scalars(scalars: dict, step: int = 0) -> None

Log scalars to the NeptuneAI experiment logger.

Parameters:

Name Type Description Default
scalars dict

Dictionary of scalar values to log to NeptuneAI.

required
step int

The current step or iteration number for logging.

0

Examples:

>>> metrics = {"mAP": 0.85, "loss": 0.32}
>>> _log_scalars(metrics, step=100)
Source code in ultralytics/utils/callbacks/neptune.py
def _log_scalars(scalars: dict, step: int = 0) -> None:
    """
    Log scalars to the NeptuneAI experiment logger.

    Args:
        scalars (dict): Dictionary of scalar values to log to NeptuneAI.
        step (int): The current step or iteration number for logging.

    Examples:
        >>> metrics = {"mAP": 0.85, "loss": 0.32}
        >>> _log_scalars(metrics, step=100)
    """
    if run:
        for k, v in scalars.items():
            run[k].append(value=v, step=step)





ultralytics.utils.callbacks.neptune._log_images

_log_images(imgs_dict: dict, group: str = '') -> None

Log images to the NeptuneAI experiment logger.

This function logs image data to Neptune.ai when a valid Neptune run is active. Images are organized under the specified group name.

Parameters:

Name Type Description Default
imgs_dict dict

Dictionary of images to log, with keys as image names and values as image data.

required
group str

Group name to organize images under in the Neptune UI.

''

Examples:

>>> # Log validation images
>>> _log_images({"val_batch": img_tensor}, group="validation")
Source code in ultralytics/utils/callbacks/neptune.py
def _log_images(imgs_dict: dict, group: str = "") -> None:
    """
    Log images to the NeptuneAI experiment logger.

    This function logs image data to Neptune.ai when a valid Neptune run is active. Images are organized
    under the specified group name.

    Args:
        imgs_dict (dict): Dictionary of images to log, with keys as image names and values as image data.
        group (str, optional): Group name to organize images under in the Neptune UI.

    Examples:
        >>> # Log validation images
        >>> _log_images({"val_batch": img_tensor}, group="validation")
    """
    if run:
        for k, v in imgs_dict.items():
            run[f"{group}/{k}"].upload(File(v))





ultralytics.utils.callbacks.neptune._log_plot

_log_plot(title: str, plot_path: str) -> None

Log plots to the NeptuneAI experiment logger.

Parameters:

Name Type Description Default
title str

Title of the plot.

required
plot_path str

Path to the saved image file.

required
Source code in ultralytics/utils/callbacks/neptune.py
def _log_plot(title: str, plot_path: str) -> None:
    """
    Log plots to the NeptuneAI experiment logger.

    Args:
        title (str): Title of the plot.
        plot_path (str): Path to the saved image file.
    """
    import matplotlib.image as mpimg
    import matplotlib.pyplot as plt

    img = mpimg.imread(plot_path)
    fig = plt.figure()
    ax = fig.add_axes([0, 0, 1, 1], frameon=False, aspect="auto", xticks=[], yticks=[])  # no ticks
    ax.imshow(img)
    run[f"Plots/{title}"].upload(fig)





ultralytics.utils.callbacks.neptune.on_pretrain_routine_start

on_pretrain_routine_start(trainer) -> None

Callback function called before the training routine starts.

Source code in ultralytics/utils/callbacks/neptune.py
def on_pretrain_routine_start(trainer) -> None:
    """Callback function called before the training routine starts."""
    try:
        global run
        run = neptune.init_run(
            project=trainer.args.project or "Ultralytics",
            name=trainer.args.name,
            tags=["Ultralytics"],
        )
        run["Configuration/Hyperparameters"] = {k: "" if v is None else v for k, v in vars(trainer.args).items()}
    except Exception as e:
        LOGGER.warning(f"NeptuneAI installed but not initialized correctly, not logging this run. {e}")





ultralytics.utils.callbacks.neptune.on_train_epoch_end

on_train_epoch_end(trainer) -> None

Callback function called at end of each training epoch.

Source code in ultralytics/utils/callbacks/neptune.py
def on_train_epoch_end(trainer) -> None:
    """Callback function called at end of each training epoch."""
    _log_scalars(trainer.label_loss_items(trainer.tloss, prefix="train"), trainer.epoch + 1)
    _log_scalars(trainer.lr, trainer.epoch + 1)
    if trainer.epoch == 1:
        _log_images({f.stem: str(f) for f in trainer.save_dir.glob("train_batch*.jpg")}, "Mosaic")





ultralytics.utils.callbacks.neptune.on_fit_epoch_end

on_fit_epoch_end(trainer) -> None

Callback function called at end of each fit (train+val) epoch.

Source code in ultralytics/utils/callbacks/neptune.py
def on_fit_epoch_end(trainer) -> None:
    """Callback function called at end of each fit (train+val) epoch."""
    if run and trainer.epoch == 0:
        from ultralytics.utils.torch_utils import model_info_for_loggers

        run["Configuration/Model"] = model_info_for_loggers(trainer)
    _log_scalars(trainer.metrics, trainer.epoch + 1)





ultralytics.utils.callbacks.neptune.on_val_end

on_val_end(validator) -> None

Callback function called at end of each validation.

Source code in ultralytics/utils/callbacks/neptune.py
def on_val_end(validator) -> None:
    """Callback function called at end of each validation."""
    if run:
        # Log val_labels and val_pred
        _log_images({f.stem: str(f) for f in validator.save_dir.glob("val*.jpg")}, "Validation")





ultralytics.utils.callbacks.neptune.on_train_end

on_train_end(trainer) -> None

Callback function called at end of training.

Source code in ultralytics/utils/callbacks/neptune.py
def on_train_end(trainer) -> None:
    """Callback function called at end of training."""
    if run:
        # Log final results, CM matrix + PR plots
        files = [
            "results.png",
            "confusion_matrix.png",
            "confusion_matrix_normalized.png",
            *(f"{x}_curve.png" for x in ("F1", "PR", "P", "R")),
        ]
        files = [(trainer.save_dir / f) for f in files if (trainer.save_dir / f).exists()]  # filter
        for f in files:
            _log_plot(title=f.stem, plot_path=f)
        # Log the final model
        run[f"weights/{trainer.args.name or trainer.args.task}/{trainer.best.name}"].upload(File(str(trainer.best)))



📅 Created 1 year ago ✏️ Updated 7 months ago