Distillation

This page outlines the unit test coverage for the distillation.py module, which handles knowledge distillation between YOLO teacher and student models. The tests focus on validating loss computation, feature decoding, gradient monitoring, and layer freezing utilities.


Coverage Overview

This test suite includes coverage for:

  • Loading model components and datasets

  • Calculating distillation loss

  • Decoding head features into bounding boxes

  • Computing gradient norms

  • Freezing model layers


Fixtures

test_config

Loads a distillation-specific YAML configuration file from src/distillation_config.yaml.

mock_teacher_model

Returns a mock convolutional teacher model using PyTorch nn.Sequential.

mock_student_model

Returns a simplified convolutional student model for testing distillation and gradient behavior.


Function Tests

calculate_gradient_norm

  • test_calculate_gradient_norm:
    Computes the L2 norm of gradients after a backward pass on a dummy model. Asserts the value is positive and a float.


freeze_layers

  • test_freeze_layers:
    Confirms that specified layers in the model are frozen (i.e., requires_grad = False) while others remain trainable.


head_features_decoder

  • test_head_features_decoder:
    Passes dummy head feature maps and simulates decoding into bounding boxes using a mocked detection criterion. Ensures the result is a tensor of the expected shape.


compute_distillation_loss

  • test_compute_distillation_loss:
    Computes the loss between teacher and student predictions with matching shape and format. Confirms the result is a scalar tensor greater than zero.


Summary

This page outlines a focused test suite that ensures:

  • Distillation loss calculations are stable and positive

  • Bounding box decoding works across feature map scales

  • Model layers can be frozen selectively for fine-tuning

  • Gradient norms are measurable during training

These tests support reliable implementation of student-teacher training in the AutoML pipeline.