Repository navigation
Releases: wloonis/animal-counter
Releases · wloonis/animal-counter
Release list
v1.2.0 — Standalone counting core, GPLv3, first public release
First public release of the standalone counting core, after the Android/companion layer was extracted into wloonis/animal-counter-companion at the monorepo's v1.1.0 split point.
Highlights
- Counting core only: OC-SORT tracking + custom anti-ID-switch guards, counting line-crossing, TensorRT inference, single-node K3s
countingapppod, Jetson system/K3s/RTC setup,validate_on_jetson.shreference-video validation. - License: GNU GPLv3 (canonical
LICENSE+ SPDX/copyright headers across the Python sources, Ansible, k3s templates, Dockerfile, shell scripts). - Repo made public; GitHub Sponsors enabled via
.github/FUNDING.yml(button activates once the wloonis Sponsors profile is approved). - Branch protection on
main(PR-only, linear history) + interaction limits + PR creation cap to prevent spam.
No counting-logic change since v1.1.0
The split is structural (companion/Android moved out); the counting decision code is unchanged. Validation: standard reference-video run still green.
v1.0.0 — Première version stable
v1.0.0 — Première version stable
Compteur de porcs bidirectionnel en temps réel sur NVIDIA Jetson Orin Nano (8 Go "Super"), déployé sur un K3s single-node via Ansible.
Ce que fait le projet
- Détection YOLO → TensorRT (640×480, 30 fps) sur caméra fixe.
- Suivi OC-SORT + garde anti-ID-switch sur-mesure (REID-SUPPRESS, recovery bidirectionnel, garde miroir, résurrection).
- Ligne de comptage verticale (offset 10%) ; porcs comptés droite→gauche (crossed LEFT = +1, crossed RIGHT = −1), compteur net bidirectionnel affiché en overlay.
- Enregistrement automatique des clips :
tmp-counting-*→tocompress-counting-*→counting-*(compression ffmpeg + trim de la queue sans détection), avec rétention roulante (cronvideo). - Interface opérateur (écran local) + filebrowser pour récupérer les clips.
Stack
- K3s (single-node, runtime Docker) + Ansible (playbooks
system/pour k3s/réseau/hotspot,app/pour le déploiement) + templatesk3s/templates/*.j2. - Déploiement direct par
kubectl applydes templates rendus. - Image
countingapp:local(Dockerfile build-time pip install ; serve =python3 src/main.py).
Validation
- 4/4 PASS, tolérance 0 sur le set vidéo prioritaire (
validation/expected_counts.json). - Counts de référence : 12 / 30 / 42 / 35.
Ce que contient v1.0.0
- Pipeline de comptage OC-SORT + gardes business (REID-SUPPRESS, recovery, miroir, résurrection).
- Fix BL-54 (#40) : plus aucun orphan
tmp-counting-*.mp4— finalize idempotent_finalize_recording()+ safety-net post-boucle sur tous les chemins de sortie (fin de source FILE, timeout 2 min CAMERAdelay_last_class, SIGTERM/redémarrage pod/arrêt web UI viastop()). PR #42. - cronvideo : compression + trim
delay_last_class(single source of truth), rétention roulante des clips. - Docs complètes (quickstart, deployment, configuration, counting pipeline, troubleshooting, reset, development workflow) alignées sur la stack réelle.
- README 24/7 + screenshot de comptage.
Limitations connues (suivies en issues)
- #43 (P1) — Saturation disque 24/7 : la rétention vidéo peut dépasser l'espace libre ; pas de garde total-size. Build cache Docker non pruné.
- #44 (P2) — Mémoire & disponibilité : pas de livenessProbe (l'app n'a pas de serveur HTTP), monitoring RSS à ajouter.
- Compteur non persisté au redémarrage du pod (revient à 0).
Artefacts
Pas de binaire distribué — projet déployé depuis le source sur Jetson. Voir docs/01_quickstart.md et docs/03_deployment.md pour la mise en route.
Tag : v1.0.0 sur main @ e1ac47d