Skip to content

Conversation

@yashwantbezawada
Copy link
Contributor

What does this PR do?

Fixes #42219

This PR fixes an UnboundLocalError that occurs in RTDetrForObjectDetectionLoss when config.auxiliary_loss is set to False.

Problem

The function RTDetrForObjectDetectionLoss in src/transformers/loss/loss_rt_detr.py always returns auxiliary_outputs at line 468, but this variable is only initialized inside the if config.auxiliary_loss: block (line 451). When auxiliary_loss=False, the variable is never initialized, causing:

UnboundLocalError: variable 'auxiliary_outputs' referenced before assignment

Solution

Initialize auxiliary_outputs = None before the conditional block (line 450) to ensure it always has a value when returned.

Changes:

  • Added auxiliary_outputs = None initialization at line 450

This is a minimal, defensive fix that ensures the function works correctly regardless of the auxiliary_loss configuration.

Testing

The fix ensures that:

  • When auxiliary_loss=True: auxiliary_outputs is set to the computed values (existing behavior)
  • When auxiliary_loss=False: auxiliary_outputs is None (fixed behavior)

Additional context

The auxiliary_loss parameter defaults to True in RTDetrConfig, which is why this bug may not have been caught in standard testing scenarios. The bug only manifests when users explicitly set auxiliary_loss=False.

Initialize auxiliary_outputs to None before conditional block to prevent
UnboundLocalError when config.auxiliary_loss is False. The function always
returns auxiliary_outputs, but it was only initialized inside the
if config.auxiliary_loss block, causing an error when the condition is False.

Fixes huggingface#42219
@yashwantbezawada
Copy link
Contributor Author

Closing this PR due to branch divergence issues. The branch has accumulated 800+ changed files from main, causing unrelated test failures.

I'll create a new clean PR with only the RT-DETR fix shortly.

Issue: UnboundLocalError when auxiliary_loss=False in RT-DETR
Fix: Initialize auxiliary_outputs = None before conditional use

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rt_DETR loss attempts returning auxiliary_outputs when auxiliary_loss=False

1 participant