CV / YOLO11
YOLO11
YOLO11 Objekterkennungsserie Nano-Version, leichtgewichtig und effizient, geeignet für Edge-Bereitstellung.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Vorschau
Erste Schritte
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.mp4Modelldetails
reComputer RKSchnellstart
1. Docker installieren
Fuehren Sie die folgenden Befehle auf dem Entwicklungsboard aus, um Docker zu installieren:
# Installationsskript herunterladen
curl -fsSL https://get.docker.com -o get-docker.sh
# Mit Aliyun-Mirror-Source installieren
sudo sh get-docker.sh --mirror Aliyun
# Docker starten und Autostart beim Booten aktivieren
sudo systemctl enable docker
sudo systemctl start docker2. Projekt ausfuehren (Ein Befehl, Dual-Mode-Vorschau)
Dieses Projekt unterstuetzt die Vorschau ueber einen "Webbrowser". Das Projekt kann mit einem einzigen Befehl ausgefuehrt werden. Zusaetzlich wird eine Fast-API-Schnittstelle bereitgestellt, um die individuelle Entwicklung und das Testen der Benutzer zu erleichtern.
Schritt A: Images pullen
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:latestSchritt B: Mit einem Klick ausfuehren
Fuer 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 1Fuer 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 1Zugriff ueber: http://<Board_IP>:8000
Hinweis: Wenn Sie benutzerdefinierte Klassen benoetigen, koennen Sie
-v $(pwd)/class_config.txt:/app/class_config.txt \Mount und den--class_pathParameter hinzufuegen. Das Programm verwendet standardmaessig COCO 80 Klassen.
Beispiel:
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🔌 API-Dokumentation
Dieses Projekt bietet RESTful-Schnittstellen, die mit dem Ultralytics Cloud API-Standard kompatibel sind und Objekterkennung ueber Bild-Uploads mittels HTTP POST-Anfragen unterstuetzen.
1. Modellinferenzschnittstelle (Predict)
Endpunkt: POST /api/models/yolo11/predict
Anfrageparameter (Multipart/Form-Data):
file: (Optional) Zu erkennende Bilddatei.video: (Optional) Zu erkennende MP4-Videodatei.timestamp: (Optional) Zeitstempel in der Videodatei (Sekunden), gibt Erkennungsergebnisse fuer den Frame zu diesem Zeitpunkt zurueck. Standard ist 0.realtime: (Optional) Boolean. Wenntrueoder wenn keinefile/video-Parameter angegeben sind, werden Erkennungsergebnisse fuer den aktuellen Kameraframe zurueckgegeben.conf: (Optional) Konfidenzschwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.iou: (Optional) NMS-IOU-Schwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.
Verwendungsbeispiele:
1. Bilderkennung:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "file=@/home/cat/001.jpg"2. Erkennung eines bestimmten Videoframes:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. Aktuellen Kameraframe erkennen:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "realtime=true"
# Oder ohne Dateiparameter
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict"Antwortformat (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. Systemkonfigurationsschnittstelle (Config)
Wird verwendet, um Schwellenwerte fuer Echtzeit-Videostreams und Standardinferenz dynamisch anzupassen.
Aktuelle Konfiguration abrufen
- Endpunkt:
GET /api/config - Antwort:
{"obj_thresh": 0.25, "nms_thresh": 0.45}
Systemkonfiguration aktualisieren
- Endpunkt:
POST /api/config - Anfrage-Body (JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - Antwort:
{"status": "success"}
3. Befehlszeilenargumente
web_detection.py unterstuetzt die folgenden Argumente:
| Argument | Beschreibung | Standard |
|---|---|---|
--model_path | Pfad zur RKNN-Modelldatei | (Erforderlich) |
--camera_id | Kamera-Geraete-ID (z. B. 1 fuer /dev/video1) | 1 |
--video_path | Pfad zur Videodatei (ueberschreibt camera_id, falls angegeben) | None |
--class_path | Pfad zur benutzerdefinierten Klassenkonfigurationsdatei (class_config.txt) | None (Standard COCO 80) |
--host | Webserver-Abhøradresse | 0.0.0.0 |
--port | Webserver-Port | 8000 |
Benutzerdefiniertes Klassenkonfigurationsformat (class_config.txt):
Klassen mit doppelten Anführungszeichen benennen, durch Kommas getrennt, zum Beispiel:
"person", "bicycle", "car", "motorbike"
Echtzeit-Videostream-Schnittstelle (Video Feed)
Echtzeit-MJPEG-Videostream mit eingezeichneten Erkennungsboxen abrufen, kann direkt in HTML <img>-Tags eingebettet werden.
- Endpunkt:
GET /api/video_feed - Verwendungsbeispiel:
<img src="http://<Board_IP>:8000/api/video_feed">