CV / YOLO11

YOLO11

Version nano de la série de détection d'objets YOLO11, légère et efficace, adaptée au déploiement sur l'edge.

753 téléchargements
Taille
~5MB
Mémoire
1GB+
Précision
FP16

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Aperçu

Pour commencer

Déployer
sudo docker run --rm \
  --name rk3588-yolo11n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  -e RKNN_LOG_LEVEL=0 \
  --device /dev/video1:/dev/video1 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolo11:latest \
  python web_detection.py --model_path model/yolo11n.rknn --video video/test.mp4

Détails du modèle

reComputer RK

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer Docker :

bash
# Télécharger le script d'installation
curl -fsSL https://get.docker.com -o get-docker.sh
# Installer en utilisant le miroir Aliyun
sudo sh get-docker.sh --mirror Aliyun
# Démarrer Docker et activer le démarrage automatique
sudo systemctl enable docker
sudo systemctl start docker

2. Exécuter le projet (Une commande, aperçu double mode)

Ce projet prend en charge l'aperçu via un navigateur web. Le projet peut être exécuté avec une seule commande. De plus, une interface Fast-API est fournie pour faciliter le développement et les tests personnalisés des utilisateurs.

Étape A : Télécharger les images

bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolo:latest

Étape B : Exécuter en un clic

Pour RK3588 :

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD129:/dev/dri/renderD129 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo11:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1

Pour RK3576 :

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD128:/dev/dri/renderD128 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolo11:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1

Accès via : http://<Board_IP>:8000

Remarque : Si vous avez besoin de classes personnalisées, vous pouvez ajouter le montage -v $(pwd)/class_config.txt:/app/class_config.txt \ et le paramètre --class_path. Le programme utilise par défaut les 80 classes COCO.

Exemple :

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    -v $(pwd)/class_config.txt:/app/class_config.txt \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD129:/dev/dri/renderD129 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1 --class_path class_config.txt

🔌 Documentation de l'API

Ce projet fournit des interfaces RESTful compatibles avec la norme API Ultralytics Cloud, prenant en charge la détection d'objets via le téléchargement d'images en utilisant des requêtes HTTP POST.

1. Interface d'inférence de modèle (Predict)

Point de terminaison : POST /api/models/yolo11/predict

Paramètres de la requête (Multipart/Form-Data) :

  • file : (Optionnel) Fichier image à détecter.
  • video : (Optionnel) Fichier vidéo MP4 à détecter.
  • timestamp : (Optionnel) Horodatage dans le fichier vidéo (secondes), retourne les résultats de détection pour la trame à ce point. La valeur par défaut est 0.
  • realtime : (Optionnel) Booléen. Si true ou si aucun paramètre file/video n'est fourni, retourne les résultats de détection pour la trame actuelle de la caméra.
  • conf : (Optionnel) Seuil de confiance pour une requête unique, plage 0.0-1.0.
  • iou : (Optionnel) Seuil IOU NMS pour une requête unique, plage 0.0-1.0.

Exemples d'utilisation :

1. Détection d'image :

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "file=@/home/cat/001.jpg"

2. Détection de trame vidéo spécifique :

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"

3. Obtenir la détection de la trame caméra actuelle :

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "realtime=true"
# Ou sans paramètres de fichier
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict"

Format de réponse (JSON) :

json
{
  "success": true,
  "source": "video frame at 5.5s",
  "predictions": [
    {
      "class": "person",
      "confidence": 0.92,
      "box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 }
    }
  ],
  "image": { "width": 1280, "height": 720 }
}

2. Interface de configuration système (Config)

Utilisée pour ajuster dynamiquement les seuils pour les flux vidéo en temps réel et l'inférence par défaut.

Obtenir la configuration actuelle

  • Point de terminaison : GET /api/config
  • Réponse : {"obj_thresh": 0.25, "nms_thresh": 0.45}

Mettre à jour la configuration système

  • Point de terminaison : POST /api/config
  • Corps de la requête (JSON) : {"obj_thresh": 0.3, "nms_thresh": 0.5}
  • Réponse : {"status": "success"}

3. Arguments de ligne de commande

web_detection.py prend en charge les arguments suivants :

ArgumentDescriptionValeur par défaut
--model_pathChemin vers le fichier modèle RKNN(Requis)
--camera_idID du périphérique caméra (par exemple, mettre 1 pour /dev/video1)1
--video_pathChemin vers le fichier vidéo (remplace camera_id si fourni)Aucun
--class_pathChemin vers le fichier de configuration de classes personnalisées (class_config.txt)Aucun (COCO 80 par défaut)
--hostAdresse d'écoute du serveur web0.0.0.0
--portPort du serveur web8000

Format de configuration de classes personnalisées (class_config.txt) :

Nommez les classes avec des guillemets doubles, séparés par des virgules, par exemple : "person", "bicycle", "car", "motorbike"


Interface de flux vidéo en temps réel (Video Feed)

Obtenez un flux vidéo MJPEG en temps réel avec les boîtes de détection dessinées, pouvant être directement intégré dans les balises HTML <img>.

  • Point de terminaison : GET /api/video_feed
  • Exemple d'utilisation : <img src="http://<Board_IP>:8000/api/video_feed">