Installe facilement YoloV9 et rend la détection intelligente
Cet Article a été vu ... fois
Sommaire
Yolo V9 est un gestionnaire de tâche, détecteur d’objet de pointe, gratuit et ultra performant il analysera les vidéos plus vite que l’éclair et t’évitera de nombreux faux positifs.
Dans ce tuto je vais te montrer comment l’installer facilement grâce à un répertoire github qui dans l’avenir devrait être intégré dans une futur mise à jour de frigate.
Prérequis
- un NAS debian Openmediavault de préférence en version 8
- un accélérateur matériel Google coral (pci ou usb) fonctionnel
- Un NVR, ici ce sera Frigate
- optionnel Home Assistant
Ce tutos est dédié aux utilisateurs linuxiens qui ont certaines connaissances en docker et qui ont préalablement installés un système debian avec une image frigate !
Installation
Pour commencer mon environnement est le suivant:
- j’ai OMV d’installé en natif sur un serveur NAS pricipal pas par le biais de proxmox, Docker et Docker compose sont paramétrés, avec une image Frigate fonctionnelle.
- Je possède un google Coral en version M.2 (A+E) installé à la place de la carte wifi. Si tu n’as pas encore paramétré cet accélérateur, il y a quelques temps j’ai fait un mini-tutos reprenant une installation en quelques clics.
Simple rapide et efficace, je te laisse consulter.
Répertoire Github
Pour réaliser cette installation facilement et rapidement dbro a créé un répertoire complet qui a été mergé sur frigate, cette installation est paramétré pour ne pas dépasser les 10ms d’analyses sur l’accélérateur google coral et frigate, il a réussi cette prouesse grâce à de nombreux tests qui sont mêmes argumentés sur son référentiel.
https://github.com/dbro/frigate-detector-edgetpu-yolo9
Mise en place
Partons du principe que ton installation Frigate est basée sur docker à l’aide d’un fichier docker-compose
Voici un exemple docker-compose basé sur une de mes installations.
---
services:
frigate:
container_name: frigate
privileged: true # this may not be necessary for all setups
restart: unless-stopped
stop_grace_period: 30s # allow enough time to shut down the various services
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "276mb" # update for your cameras based on calculation above
devices:
- /dev/apex_0:/dev/apex_0
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
volumes:
- /etc/localtime:/etc/localtime:ro
- /Frigate/config:/config
- /export/videosurveillance:/media/frigate
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000" # Internal unauthenticated access. Expose carefully.
- "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp
- "8971:8971"
environment:
FRIGATE_RTSP_PASSWORD: "password"Dans mon fichier tu retrouves les lignes d’accélérations matérielles pour le google coral /dev/apex_0:/dev/apex_0 et /dev/dri/renderD128:/dev/dri/renderD128
Voilà ce que propose Dbro
Tout d’abord installe sur ton NAS et non dans le container frigate les utilitaires après avoir effectué une mise à jour debian sudo apt update && sudo apt upgrade
sudo mkdir -p /opt/frigate-plugins
cd /opt/frigate-plugins
# download weights
sudo wget https://github.com/dbro/frigate-detector-edgetpu-yolo9/releases/download/v1.0/yolov9-s-relu6-best_320_int8_edgetpu.tflite
# download plugin
sudo wget https://raw.githubusercontent.com/dbro/frigate-detector-edgetpu-yolo9/main/edgetpu_tfl.py
# download labels
sudo wget https://raw.githubusercontent.com/dbro/frigate-detector-edgetpu-yolo9/main/labels-coco17.txtEnsuite met à jour ton docker files en intégrant 3 lignes dans l’onglet volume
# ... other services ...
frigate:
# ... other frigate configurations ...
volumes:
# ... existing volumes ...
- /opt/frigate-plugins/edgetpu_tfl.py:/opt/frigate/frigate/detectors/plugins/edgetpu_tfl.py:ro
- /opt/frigate-plugins/labels-coco17.txt:/opt/frigate/models/labels-coco17.txt:ro
- /opt/frigate-plugins/yolov9-s-relu6-best_320_int8_edgetpu.tflite:/opt/frigate/models/yolov9-s-relu6-best_320_int8_edgetpu.tflite:ro
# ... rest of frigate service ...Il ne te reste plus qu’à remonter les volumes
docker-compose down
docker-compose up -dDernière étape configurer Frigate
Maintenant que tout est installé sur ton image il ne te reste plus qu’à configurer le fichier config.yml de Frigate. Au dessus de tes ligne du detector intègre le model de détection:
model:
model_type: yolo-generic
labelmap_path: /opt/frigate/models/labels-coco17.txt
path: /opt/frigate/models/yolov9-s-relu6-best_320_int8_edgetpu.tflite
# Optionally specify the model dimensions (these are the same as Frigate's default 320x320)
width: 320
height: 320
# Google coral m2
detectors:
coral:
type: edgetpu
device: pciRedémarre frigate consulte les journaux et la métrique du système et le tour est joué.
Il ne te reste plus qu’à paramétrer correctement les détections d’objets dans le config.yaml de frigate pour te rendre compte des bonnes performances.
Pour les journaux systèmes tu dois retrouver le message: Initializing edgetpu detector with support for SSD and YOLOv9 models

Dans la métrique système tu pourras te rendre compte que la vitesse d’inférence du détecteur est en dessous de 10ms pour la capture ci-dessous c’est 9.34ms ce qui est bon. Et ceci grâce à un model bien défini en capture 320px.

Conclusion
Voilà en 2 manipulations tu a rendu ton NVR encore plus intelligent le combo Google Coral / Yolo V9 va sublimer les détections et optimiser les performances de frigate et rendre ta domotique Home Assistant plus subtile.
commentaires