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.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Aperçu
Pour commencer
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.mp4Détails du modèle
reComputer RKDémarrage rapide
1. Installer Docker
Exécutez les commandes suivantes sur la carte de développement pour installer Docker :
# 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 docker2. 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
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 :
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 1Pour RK3576 :
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 1Accè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 :
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. Sitrueou si aucun paramètrefile/videon'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 :
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 :
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 :
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) :
{
"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 :
| Argument | Description | Valeur par défaut |
|---|---|---|
--model_path | Chemin vers le fichier modèle RKNN | (Requis) |
--camera_id | ID du périphérique caméra (par exemple, mettre 1 pour /dev/video1) | 1 |
--video_path | Chemin vers le fichier vidéo (remplace camera_id si fourni) | Aucun |
--class_path | Chemin vers le fichier de configuration de classes personnalisées (class_config.txt) | Aucun (COCO 80 par défaut) |
--host | Adresse d'écoute du serveur web | 0.0.0.0 |
--port | Port du serveur web | 8000 |
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">