feat(agent): implement real YOLO/ONNX inference in FrameAnalyzerService #148
No reviewers
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall!148
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/yolo-onnx-inference"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Replace the stub
FrameAnalyzerService.RunInference(returning[]) with a real ONNX Runtime inference pipeline for YOLOv8 object detection.Why
The entire detection chain was non-functional —
FrameAnalyzerServicereturned empty results,Microsoft.ML.OnnxRuntimewas not referenced, and no object detection was produced. This is the core AI feature of the Heimdall platform (issue #2, etape-3).How
Microsoft.ML.OnnxRuntime1.22.0 andSixLabors.ImageSharp4.1.0 toHeimdall.Agent.csprojInferenceSessionloaded in constructor with graceful fallback to passthrough mode when model is absentImage<Rgb24>→ resize 640×640 → NCHW tensor normalized [0,1]Session.Run()with the preprocessed tensor[1, 4+C, 8400]tensor → bounding boxes + class scores) with class-aware Non-Maximum Suppression (IoU threshold 0.45, confidence threshold 0.25)Testing
dotnet build— 0 errors (TreatWarningsAsErrors=true)dotnet test --filter "FullyQualifiedName!~E2E"— 1282 passed, 0 failedNotes
MODEL_PATHenv var (default:models/yolov8m.onnx)InferenceSession.Run()is thread-safe; session created once in constructor🤖 Résumé des tests
Tests unitaires
Pas de résultats (job skippé)
Tests Web (bUnit)
Skippé (aucun changement IHM)
Tests DB (Infrastructure)
Skippé (aucun changement DB/Domain)
Généré automatiquement par la CI.
📊 Rapport de couverture SonarQube
Statut : ✅ Couverture code ajouté ≥ 80%
Commentaire généré automatiquement par coverage-check cron.
Revue the-reviewer — Passe 1 (2026-08-19)
Statut : ✅ PR prête pour validation
Résumé
Implémentation complète de l'inférence ONNX YOLOv8 dans
FrameAnalyzerService— remplacement du stubRunInferencepar un vrai pipeline : décodage JPEG → resize 640×640 → tenseur NCHW normalisé → session ONNX Runtime → parsing sortie YOLOv8 → NMS (Non-Maximum Suppression).Code — ✅
PreprocessImage→RunInference→ParseYoloOutput→ApplyNms._session?.Dispose()).InferenceSession.Run()est thread-safe._session?.Dispose()dansDispose()— correct.Anomalies mineures
_session.InputMetadata.Keys.ToArray()[0]— préférer.First()(plus lisible, même perf)._session.OutputMetadata.Values.ToArray()[0]— idem.CI — ❌ (en attente)
bd195ef) : failure (2m34s) — à investiguer. Les commentaires CI indiquent "tests skippés" ce qui suggère un échec build, pas tests.Conformité — ✅
feat/yolo-onnx-inferencedepuis main.Microsoft.ML.OnnxRuntime1.22.0 +SixLabors.ImageSharp4.1.0.Verdict
Code de bonne qualité, tests solides. En attente du vert CI avant merge. Le build failure du run #2673 doit être corrigé.
Actions
🔒 CI Security Scan — Status
Évaluation
Verdict : Pas de CVE identifié sur cette PR. Aucune action requise.
Commentaire auto-généré par le CVE check agent — 2026-08-19
bd195ef8b674f2effada🤖 Résumé des tests
Tests unitaires
Pas de résultats (job skippé)
Tests Web (bUnit)
Skippé (aucun changement IHM)
Tests DB (Infrastructure)
Skippé (aucun changement DB/Domain)
Généré automatiquement par la CI.