CV / YOLOv8
YOLOv8n_obb
YOLOv8n_obb orientierte Objekterkennungsserie, leichtgewichtig und effizient, entwickelt für rotierende/rotierte Objekterkennung mit orientierten Bounding Boxes, ideal für Edge-Bereitstellung.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm \
--name rk3588-yolov8n-obb \
--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_obb:latest \
python web_detection.py --model_path model/yolov8n_obb.rknn --video video/test.mp4REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n_obb/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n_obb/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov8n_obb/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Modelldetails
Schnellstart
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, Web-Vorschau)
Dieses Projekt unterstuetzt die Vorschau ueber Web-Browser. Das Programm stellt automatisch eine Weboberflaeche fuer Echtzeit-Erkennung oder lokale Videoanalyse bereit.
Schritt A: Anzeigeberechtigungen konfigurieren (Optional)
Wenn Sie einen Monitor angeschlossen haben und das Fenster lokal sehen moechten:
xhost +local:dockerSchritt 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-yolov8_obb:latest \
python web_detection.py --model_path model/yolov8n_obb.rknn --video video/test.mp4Fuer RK3576:
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/rk3576-yolov8_obb:latest \
python3 web_detection.py --model_path model/yolov8n_obb.rknn --video video/test.mp4Zugriff ueber: http://<Board_IP>:8000
Hinweis: Wenn Sie mit einem lokalen Video anstelle einer Kamera testen moechten, verwenden Sie den
--video-Parameter:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/video:/app/video \
--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_obb:latest \
python3 web_detection.py --model_path model/yolov8n_obb.rknn --video video/test.mp4🔌 API-Dokumentation
Dieses Projekt bietet RESTful-Schnittstellen, die mit dem Ultralytics Cloud API-Standard kompatibel sind und Pose-Schaetzung ueber Bild-, Video-Uploads oder direkte Kameraaufrufe unterstuetzen.
1. Modellinferenzschnittstelle (Predict)
Endpunkt: POST /api/models/yolo11/predict (kompatibel mit dem urspruenglichen YOLO11-Pfad-Design)
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/yolov8n_obb/predict" -F "file=@/home/cat/001.jpg"2. Erkennung eines bestimmten Videoframes:
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n_obb/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/yolov8n_obb/predict" -F "realtime=true"
# Oder ohne Dateiparameter
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n_obb/predict"Antwortformat (JSON):
{
"success": true,
"predictions": [
{
"class": "plane",
"confidence": 0.92,
"poly": [[100, 100], [200, 100], [200, 200], [100, 200]],
"angle": 1.57
}
]
}2. Lokale Videoanalyse
- Video hochladen:
POST /api/video/upload - Videos auflisten:
GET /api/video/list - Video analysieren:
POST /api/video/analyze - Status pruefen:
GET /api/video/status - Ergebnis herunterladen:
GET /api/video/download/{filename}
3. 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, "camera_id": 1, "video_path": null}
Systemkonfiguration aktualisieren
- Endpunkt:
POST /api/config - Anfrage-Body (JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - Antwort:
{"status": "success"}
4. Echtzeit-Videostream-Schnittstelle (Video Feed)
Echtzeit-MJPEG-Videostream mit eingezeichneten Pose-Skeletten abrufen, kann direkt in HTML <img>-Tags eingebettet werden.
- Endpunkt:
GET /api/video_feed - Verwendungsbeispiel:
<img src="http://<Board_IP>:8000/api/video_feed">
🛠️ Entwicklerhandbuch (Produktionsempfehlungen)
Codebeschreibung
web_detection.py:- Web-API: Integriert FastAPI und unterstuetzt MJPEG-Streaming-Ausgabe, Datei-Upload und Videoanalyse.
- RKNN-Inferenz: Kapselt RKNN-Initialisierung, Modellladung und Multi-Core-Inferenzlogik.
- Modusumschaltung: Behandelt dynamisch das UI-Layout basierend auf Eingabeparametern (
--camera_id,--video_path).
py_utils/pose_utils.py:- Nachbearbeitung: YOLOv8-Pose-spezifische Box-Dekodierung, NMS-Logik und Keypoint-Extraktion.
- Visualisierung: Zeichnet Bounding-Boxen und Pose-Skelette mit angepassten Farben.
Modelle aendern
- Legen Sie das trainierte und konvertierte .rknn-Modell im
model/-Verzeichnis ab. - Fuegen Sie das
--model_path-Argument zum Ausfuehrungsbefehl hinzu, um auf das neue Modell zu verweisen.