CV / YOLOv8
YOLOv8n_object
Version nano de la série de détection d'objets YOLOv8, 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.
Pour commencer
sudo docker run --rm \
--name rk3588-yolov8n-object \
--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-yolov8:latest \
python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov8n/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Dé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 simultané via Interface graphique locale et Navigateur Web. Le programme détecte automatiquement l'environnement d'affichage et passe en mode Web si aucun écran n'est connecté.
Étape A : Configurer les permissions d'affichage (Optionnel)
Si vous avez un moniteur connecté et souhaitez voir la fenêtre localement :
xhost +local:dockerÉ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/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8:latest \
python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4Pour RK3576 :
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov8:latest \
python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4Accè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/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8:latest \
python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4 --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, de vidéos ou l'appel direct de la caméra.
1. Interface d'inférence de modèle (Predict)
Point de terminaison : POST /api/models/yolov8/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/yolov8/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/yolov8/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/yolov8/predict" -F "realtime=true"
# Ou sans paramètres de fichier
curl -X POST "http://127.0.0.1:8000/api/models/yolov8/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. 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">
🛠️ Guide du développeur (Recommandations de production)
Description du code
web_detection.py:- Prise en charge double mode : Intègre FastAPI, prenant en charge à la fois le rendu local et la sortie de streaming MJPEG.
- Adaptatif à l'environnement : Détecte automatiquement la variable d'environnement
DISPLAY, ignorant silencieusement l'initialisation GUI si elle n'est pas présente. - Inférence RKNN : Encapsule l'initialisation RKNN, le chargement du modèle et la logique d'inférence multi-cœur.
- Chargement dynamique : Prend en charge le chargement dynamique de configuration de classes via
--class_path. - Post-traitement : Logique de décodage de boîtes et NMS spécifique à YOLOv8.
Modification des modèles
- Placez le modèle .rknn entraîné et converti dans le répertoire
model/. - Ajoutez l'argument
--model_pathà la commande d'exécution pour pointer vers le nouveau modèle.