Bêta précoce (0.1.0), pas encore pour un process critique. Voir la roadmap
PNeX logo

Caméras & vision

Vidéo live ESP32-CAM, enregistrement continu et détection d'objets dans les flows

Une caméra est un appareil comme les autres : un ESP32-CAM flashé avec le firmware caméra générique s'enregistre, puis envoie ses images JPEG chiffrées au serveur sur un canal vidéo dédié. Tout le reste se passe dans l'interface : direct, réglages de capture, enregistrement, détection d'objets et relecture avec les détections dessinées sur la vidéo.

La chaîne tient en trois briques indépendantes, toutes câblées dans un flow :

  1. Source caméra — transforme le flux de la caméra en messages de flow (une référence vers l'image, jamais les octets eux-mêmes).
  2. Enregistrement vidéo — écrit les images dans le stockage en courts segments MJPEG-AVI.
  3. Détection d'objets — exécute un modèle ONNX sur les images et émet les détections ; peut les conserver en calque de détection à côté de l'enregistrement.

Pas de nœud d'enregistrement = rien n'est stocké : le direct et la détection fonctionnent sans écrire une seule image.

Caméras

Données › Caméras liste chaque appareil qui a annoncé une caméra, avec son état de streaming, ses réglages de capture et l'âge de la dernière image.

Liste des caméras : état, réglages de capture, dernière image

  • Direct ouvre le flux dans le navigateur. Les images sont poussées dès leur arrivée ; rien n'est stocké, aucun polling.
  • Enregistrements ouvre la timeline du jour et le lecteur (voir plus bas).
  • La clé ouvre les réglages de capture : résolution, qualité JPEG, images par seconde, retournements et mode de capture.

Direct d'un ESP32-CAM

Réglages de capture d'une caméra

Le mode de capture décide quand la caméra envoie des images :

ModeLa caméra envoie…
À la demande (défaut)seulement pendant qu'on regarde le direct, ou qu'un flow déployé la lit
Continutant qu'elle est connectée — le bon choix pour une caméra enregistrée en permanence

Un flow déployé contenant une Source caméra garde toujours sa caméra éveillée, même en mode À la demande.

Modèles

Données › Modèles est le registre des modèles de vision utilisables par les flows. Un modèle = un fichier ONNX rangé dans la médiathèque + ses réglages d'inférence : famille (YOLOX), taille d'entrée, labels, seuil de score et IoU NMS.

Registre des modèles avec statut de vérification et vitesse mesurée

Ajouter un modèle

Cliquer Ajouter un modèle, puis téléverser un fichier .onnx ou en choisir un déjà présent dans la médiathèque.

Formulaire d'ajout de modèle

  • Le fichier impose la taille d'entrée. Quand le fichier ONNX déclare des dimensions fixes (416×416 pour YOLOX-nano/tiny, 640×640 pour s/m/l), elles sont appliquées à l'enregistrement, quoi qu'on ait saisi.
  • Les labels : un par ligne, dans l'ordre des classes. COCO-80 est prérempli ; le nombre de labels doit correspondre au nombre de classes du fichier.
  • Le modèle est vérifié à l'enregistrement : il est chargé et exécuté une fois sur ce serveur. Un modèle qui ne tourne pas est refusé avec l'erreur réelle, jamais stocké à moitié fonctionnel.
  • La colonne Vérification affiche le temps d'inférence mesuré et le débit soutenable (≈ images par seconde). Un modèle plus lent que la caméra saute des images.

Préférer les modèles Apache-2.0 comme YOLOX. Les modèles AGPL (YOLOv8, YOLO11) imposent leur licence à tout votre déploiement.

Tester un modèle

  • Tester avec une image exécute le modèle sur un JPEG ou PNG et dessine les cadres.
  • Tester en live l'exécute sur les dernières images d'une caméra. Les cadres au-dessus du seuil sont pleins, ceux en dessous en pointillés : déplacer le curseur de seuil pour voir ce que le modèle a presque vu, puis Appliquer ce seuil au modèle. Des avertissements signalent une image périmée, trop sombre, ou un modèle plus lent que la caméra.

Test live d'un modèle sur une caméra

Le flow de détection et d'enregistrement

Un seul flow enregistre la caméra et détecte les objets. Ouvrir Automation › Flows, créer un flow, et ajouter depuis la palette :

  1. Source caméra — choisir la caméra. Images par seconde max échantillonne le flux (0 = toutes les images).
  2. Détection d'objets — câblée après la source caméra ; choisir le modèle et les classes à garder.
  3. Enregistrement vidéo — câblé après la même source caméra.
  4. Éventuellement un nœud Debug après la détection pour voir les résultats, puis Déployer.

Flow caméra : source, détection, enregistrement et debug, avec badges d'état live

Une fois déployé, chaque nœud affiche un badge d'état sous lui : Streaming avec le nombre d'images pour la source, Running avec les compteurs analysées/émises pour la détection. Un modèle qui ne se charge pas ou une caméra muette y apparaît en ambre ou en rouge — inutile de fouiller les logs.

Détection d'objets

Réglages du nœud de détection d'objets

RéglageRôle
ModèleUn modèle du registre (vérifié valide, sinon le déploiement est refusé)
Classes à garderCliquer des classes pour ne garder que ces détections (aucun = tous)
Score minimalFiltre sous ce score ; 0 = le seuil du modèle
ÉmissionPour chaque image analysée, ou Seulement quand quelque chose est détecté
Images par seconde maxImages analysées par seconde (défaut 1, 0 = toutes)
Enregistrer les détections comme calque de la caméraConserve les cadres à côté de l'enregistrement (voir plus bas)

Le payload de sortie porte detections — label, score et bbox par objet — plus un court summary (« chair 80%, tv 78% ») affiché par un nœud Debug. Le chaîner à une Notification pour être alerté quand une person apparaît, ou à un nœud Journal d'événements pour garder un historique cherchable dans Automation › Événements.

Enregistrement vidéo

Réglages du nœud d'enregistrement vidéo

RéglageDéfautRôle
Durée d'un segment60 sUn segment est fermé après cette durée…
Taille max d'un segment32 Mo…ou cette taille…
Coupure avant clôture10 s…ou après ce temps sans image
Images par seconde max0Cadence enregistrée (0 = toutes les images)
Rétention7 joursLes segments plus anciens sont supprimés (0 = pour toujours)
Nom du fluxnom de la caméraNom logique optionnel

Les segments sont des fichiers MJPEG-AVI, lisibles par VLC ou ffmpeg, rangés dans le stockage média (système de fichiers ou compatible S3). Des segments courts évitent de perdre plus d'une minute en cas de crash, et la rétention s'applique à la minute près.

Une caméra a exactement un enregistreur dans une organisation : un second Enregistrement vidéo alimenté par la même caméra est refusé à la sauvegarde (même flow) ou au déploiement (autre flow). La détection, elle, peut tourner dans autant de flows que voulu.

Enregistrements et calques de détection

Enregistrements présente une journée comme un enregistrement continu, même s'il est stocké en segments :

  • la timeline marque les périodes enregistrées ; le curseur saute n'importe où ;
  • le lecteur enchaîne les segments (le suivant est préchargé), de ×1 à ×8 ;
  • exporter une plage horaire en un seul fichier AVI, ou supprimer la journée ;
  • Calques de détection liste chaque nœud de détection qui a enregistré des cadres ce jour-là. Cocher un calque dessine ses cadres sur la vidéo, une couleur par calque.

Enregistrement relu avec le calque de détection yolox_nano

Un calque ne stocke que les cadres (label, score, position) dans OpenObserve — quelques centaines d'octets par image analysée au lieu d'une seconde vidéo annotée. Les calques ne demandent aucun câblage vers l'enregistreur : tout nœud de détection avec Enregistrer les détections comme calque de la caméra, dans n'importe quel flow, ajoute son propre calque, nommé d'après le nœud (ou le modèle). Leur rétention suit celle d'OpenObserve pour l'organisation.

Dimensionnement

Un ESP32-CAM en VGA qualité 12 envoie 15 à 30 Ko par image. À 5 images/s, cela fait environ 360 Mo par heure d'enregistrement continu par caméra. YOLOX-nano analyse une image en ~30 ms sur un CPU de bureau ; les modèles plus gros (YOLOX-l, ~1,4 s) conviennent à une cadence échantillonnée plutôt qu'à chaque image.

On this page