Sloucher-boy

Extra resourcesRessources

The details.Les détails.

Every measurement, a checklist for building on the NPU, and what's inside. Measured on one AMD Ryzen laptop (Phoenix / Hawk Point NPU, 16 logical CPUs) with nine recorded desk clips.Chaque mesure, une liste pour développer sur le NPU, et ce qu'il y a dedans. Mesuré sur un portable AMD Ryzen (NPU Phoenix / Hawk Point, 16 processeurs logiques) avec neuf vidéos enregistrées au bureau.

NumbersChiffres

Are the shoulders in the right place?Les épaules sont-elles au bon endroit ?

Share of frames per clip where both shoulders are found, below the nose, and at least a quarter of the frame apart. Both models INT8 on the NPU.Part des images par vidéo où les deux épaules sont trouvées, sous le nez, et écartées d'au moins un quart de l'image. Les deux modèles en INT8 sur le NPU.

YOLOv8n-poseMoveNet

How much CPU does an "NPU app" use?Combien de CPU une « appli NPU » utilise-t-elle ?

The whole app (camera, NPU worker, logic) as a share of all 16 logical CPUs, by camera frame rate. The same model on the NPU in both cases; only one ONNX Runtime setting changed.Toute l'appli (caméra, NPU, logique) en part des 16 processeurs logiques, selon la cadence de la caméra. Le même modèle sur le NPU dans les deux cas ; seul un réglage d'ONNX Runtime a changé.

ONNX Runtime defaultsONNX Runtime par défautThread spinning offAttente active désactivée

Does it catch slouching without crying wolf?Détecte-t-il l'avachissement sans fausse alerte ?

Share of frames called "slouch" or "lean in" per clip. The alert needs bad posture for 80% of the last 30 seconds (dashed line); yellow clips trigger it. Calibrated on the first half of the upright clip only.Part des images jugées « avachi » ou « penché » par vidéo. L'alerte exige une mauvaise posture pendant 80 % des 30 dernières secondes (ligne pointillée) ; les vidéos en jaune la déclenchent. Calibré sur la première moitié de la vidéo « droit » seulement.

Time per frameTemps par image

Median inference time. The CPU row is the same model in float, as a baseline only: the app never runs on the CPU. A power and battery benchmark is next.Temps d'inférence médian. La ligne CPU est le même modèle en virgule flottante, à titre de référence seulement : l'appli ne roule jamais sur le CPU. Un banc d'essai d'énergie et de batterie s'en vient.

Build for the NPU, not the CPU.Développez pour le NPU, pas le CPU.

What I wish I'd known on day one.Ce que j'aurais aimé savoir le premier jour.

  1. Trust only the log. "Test Finished" or a fast result doesn't mean the NPU ran it. On AMD, look for Actually running on NPU and the operator split, every time.Ne croyez que le journal. « Test Finished » ou un résultat rapide ne veut pas dire que le NPU a fait le travail. Chez AMD, cherchez Actually running on NPU et la répartition des opérateurs, à chaque fois.
  2. Match the SDK to the chip. Phoenix / Hawk Point needs Ryzen AI 1.6.1, not the newest release. Check that your NPU's binary actually ships in the package.Choisissez le SDK selon la puce. Phoenix / Hawk Point exige Ryzen AI 1.6.1, pas la dernière version. Vérifiez que le binaire de votre NPU est bien inclus.
  3. Pick plain convolutional models. CNNs like YOLOv8 map well. Attention layers can compile, then hang at run time on older NPUs.Choisissez des modèles convolutifs simples. Les CNN comme YOLOv8 s'adaptent bien. Les couches d'attention peuvent compiler, puis geler à l'exécution sur les NPU plus anciens.
  4. Quantize to INT8 on your real input. Calibrate with frames from the situation the app will see (AMD Quark, XINT8). Keep the final decode in float if it mixes coordinates and scores.Quantifiez en INT8 sur vos vraies données. Calibrez avec des images de la situation que verra l'appli (AMD Quark, XINT8). Gardez le décodage final en virgule flottante s'il mélange coordonnées et scores.
  5. Test on your own clips, with a metric that can fail. "Keypoint found" was 100% for a model that was completely wrong.Testez sur vos propres vidéos, avec une mesure qui peut échouer. « Point trouvé » donnait 100 % pour un modèle complètement dans le champ.
  6. Turn off ONNX Runtime thread spinning. Even with the model on the NPU, the default thread pool busy-waits: 7 CPU cores, and inference 8× slower at low frame rates.Désactivez l'attente active d'ONNX Runtime. Même avec le modèle sur le NPU, le bassin de fils par défaut tourne à vide : 7 cœurs du CPU, et une inférence 8× plus lente à basse cadence.
  7. Measure the whole app, and run slowly. Posture doesn't change 30 times a second. 2 frames a second took the app from 3% to 1%. The camera is now the biggest cost.Mesurez toute l'appli, et roulez lentement. La posture ne change pas 30 fois par seconde. Passer à 2 images par seconde a fait baisser l'appli de 3 % à 1 %. La caméra est maintenant le plus gros coût.
  8. Plan for sharing the NPU. Windows Studio Effects use it too. Keep a smaller configuration (1 NPU column) as the fallback, never the CPU.Prévoyez le partage du NPU. Les effets Windows Studio l'utilisent aussi. Gardez une configuration plus petite (1 colonne du NPU) comme repli, jamais le CPU.

What's insideSous le capot

Pose modelModèle de pose
YOLOv8n-pose (Ultralytics), INT8, quantized with AMD Quark on desk clips. 17 body points per frame.YOLOv8n-pose (Ultralytics), INT8, quantifié avec AMD Quark sur des vidéos au bureau. 17 points du corps par image.
On the NPUSur le NPU
1,042 of 1,080 operators (96.5%), 12.4 ms per frame on 4 NPU columns, ~22 ms on 11 042 opérateurs sur 1 080 (96,5 %), 12,4 ms par image sur 4 colonnes du NPU, ~22 ms sur 1
Whole appToute l'appli
1.0% of the CPU and about 480 MB of memory, looking twice a second1,0 % du CPU et environ 480 Mo de mémoire, deux images par seconde
Posture logicLogique de posture
Eye drop and face size compared with your own upright baseline. Alert after bad posture for 80% of 30 s.Baisse des yeux et taille du visage comparées à votre posture droite de référence. Alerte après une mauvaise posture pendant 80 % de 30 s.
HardwareMatériel
AMD Ryzen AI, Phoenix / Hawk Point NPU, Windows 11, Ryzen AI Software 1.6.1AMD Ryzen AI, NPU Phoenix / Hawk Point, Windows 11, Ryzen AI Software 1.6.1
CreditsCrédits
Pose model by Ultralytics (AGPL-3.0). Type: Big Shoulders Display (SIL Open Font License).Modèle de pose d'Ultralytics (AGPL-3.0). Police : Big Shoulders Display (SIL Open Font License).
Built onConstruit avec AMD Hugging Face Model card coming to Hugging FaceFiche du modèle bientôt sur Hugging Face

How it was builtComment il a été construit