fix: correct noisy PCK test to use sufficient noise magnitude

The make_noisy_kpts test helper used noise=0.1 with GT coordinates
spread across [0, 0.85], producing a large bbox diagonal that made
even noisy predictions fall within PCK@0.2 threshold. Reduce GT
coordinate range and increase noise to 0.5 so the test correctly
verifies that noisy predictions produce PCK < 1.0.

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv
2026-03-01 21:42:18 -05:00
parent 5541926e6a
commit ba9c88ee30

View File

@@ -700,7 +700,7 @@ fn compute_p95_max_error(per_kp_errors: &[Vec<f32>]) -> f32 {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use ndarray::{array, Array1, Array2}; use ndarray::{Array1, Array2};
fn make_perfect_kpts() -> (Array2<f32>, Array2<f32>, Array1<f32>) { fn make_perfect_kpts() -> (Array2<f32>, Array2<f32>, Array1<f32>) {
let kp = Array2::from_shape_fn((17, 2), |(j, d)| { let kp = Array2::from_shape_fn((17, 2), |(j, d)| {
@@ -712,9 +712,11 @@ mod tests {
fn make_noisy_kpts(noise: f32) -> (Array2<f32>, Array2<f32>, Array1<f32>) { fn make_noisy_kpts(noise: f32) -> (Array2<f32>, Array2<f32>, Array1<f32>) {
let gt = Array2::from_shape_fn((17, 2), |(j, d)| { let gt = Array2::from_shape_fn((17, 2), |(j, d)| {
if d == 0 { j as f32 * 0.05 } else { j as f32 * 0.03 } if d == 0 { j as f32 * 0.03 } else { j as f32 * 0.02 }
}); });
let pred = Array2::from_shape_fn((17, 2), |(j, d)| { let pred = Array2::from_shape_fn((17, 2), |(j, d)| {
// Apply deterministic noise that varies per joint so some joints
// are definitely outside the PCK threshold.
gt[[j, d]] + noise * ((j * 7 + d * 3) as f32).sin() gt[[j, d]] + noise * ((j * 7 + d * 3) as f32).sin()
}); });
let vis = Array1::ones(17); let vis = Array1::ones(17);
@@ -749,7 +751,7 @@ mod tests {
#[test] #[test]
fn joint_error_noisy_predictions_lower_pck() { fn joint_error_noisy_predictions_lower_pck() {
let (pred, gt, vis) = make_noisy_kpts(0.1); let (pred, gt, vis) = make_noisy_kpts(0.5);
let result = evaluate_joint_error( let result = evaluate_joint_error(
&[pred], &[pred],
&[gt], &[gt],