Files
roboflow--rf-detr/tests/inference/test_inference.py
T
wehub-resource-sync 16031aae96
CPU tests Workflow / Testing (ubuntu-latest, 3.12) (push) Failing after 1s
CPU tests Workflow / Testing (ubuntu-latest, 3.13) (push) Failing after 0s
Mypy Type Check / Type Check (push) Failing after 0s
Docs/Test WorkFlow / Test docs build (push) Failing after 1s
PR Conflict Labeler / labeling (push) Failing after 1s
Dependency resolution / Resolve [tflite] extra — Python 3.12 (push) Failing after 0s
Smoke Tests / try-all-models (ubuntu-latest, 3.10) (push) Failing after 0s
Smoke Tests / try-all-models (ubuntu-latest, 3.13) (push) Failing after 1s
CPU tests Workflow / build-pkg (push) Failing after 1s
CPU tests Workflow / Testing (ubuntu-latest, 3.10) (push) Failing after 0s
CPU tests Workflow / Testing (ubuntu-latest, 3.11) (push) Failing after 0s
Smoke Tests / try-all-models (macos-latest, 3.10) (push) Has been cancelled
Smoke Tests / try-all-models (macos-latest, 3.13) (push) Has been cancelled
Smoke Tests / try-all-models (windows-latest, 3.10) (push) Has been cancelled
Smoke Tests / try-all-models (windows-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / Testing (macos-latest, 3.10) (push) Has been cancelled
CPU tests Workflow / Testing (macos-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / Testing (windows-latest, 3.10) (push) Has been cancelled
CPU tests Workflow / Testing (windows-latest, 3.13) (push) Has been cancelled
CPU tests Workflow / testing-guardian (push) Has been cancelled
GPU tests Workflow / Testing (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:26:24 +08:00

55 lines
1.9 KiB
Python

# ------------------------------------------------------------------------
# RF-DETR
# Copyright (c) 2025 Roboflow. All Rights Reserved.
# Licensed under the Apache License, Version 2.0 [see LICENSE for details]
# ------------------------------------------------------------------------
"""Unit tests for rfdetr.inference weight-adaptation helpers."""
import pytest
import torch
from rfdetr.inference import _adapt_input_conv
@pytest.fixture(autouse=True)
def reset_random_seeds():
"""Ensure reproducible random state for every test in this module."""
torch.manual_seed(0)
class TestAdaptInputConv:
@pytest.mark.parametrize(
("num_channels", "expected_shape", "expected_builder"),
[
pytest.param(3, (8, 3, 3, 3), lambda weight: weight, id="identity_3ch"),
pytest.param(1, (8, 1, 3, 3), lambda weight: weight.mean(dim=1, keepdim=True), id="mean_1ch"),
pytest.param(
4,
(8, 4, 3, 3),
lambda weight: torch.cat([weight, weight], dim=1)[:, :4] * (3.0 / 4.0),
id="tile_4ch",
),
pytest.param(
6,
(8, 6, 3, 3),
lambda weight: torch.cat([weight, weight], dim=1)[:, :6] * (3.0 / 6.0),
id="tile_6ch",
),
pytest.param(
2,
(8, 2, 3, 3),
lambda weight: weight[:, :2] * (3.0 / 2.0),
id="tile_2ch",
),
],
)
def test_adapt_input_conv(self, num_channels, expected_shape, expected_builder):
"""Verify shape and values for each _adapt_input_conv branch."""
conv_weight = torch.randn(8, 3, 3, 3)
adapted_weight = _adapt_input_conv(num_channels, conv_weight)
expected_weight = expected_builder(conv_weight)
assert adapted_weight.shape == expected_shape
torch.testing.assert_close(adapted_weight, expected_weight)