CV / PP-YOLOE
PP-YOLOE
reComputer RK3588
COCO-Objekterkennung mit PP-YOLOE, beschleunigt mit RKNN auf reComputer RK3576 und RK3588.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
sudo docker run --rm --privileged --net=host --device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppyoloe:latest \
python web_detection.py --platform rk3588 --model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "ppyoloe-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "ppyoloe-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Modelldetails
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
Schnellstart
1. Docker installieren
Führen Sie auf dem Entwicklungsboard die folgenden Befehle aus, um Docker zu installieren:
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker2. Projekt ausführen (ein Befehl, Vorschau in zwei Modi)
Diese Bereitstellung folgt den PP-YOLOE-Modulen aus reComputer-RK-CV. Sie bietet RKNN-NPU-Inferenz, Webvorschau, REST API und asynchrone Videoanalyse.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Aufgabe | COCO-Objekterkennung mit 80 Klassen |
| Eingabe | Letterbox-RGB mit 640 x 640 |
| Varianten | ppyoloe_s.rknn, ppyoloe_m.rknn |
| Standard | model/ppyoloe_s.rknn |
| Nachverarbeitung | DFL-Decodierung und klassenbezogene NMS |
Schritt A: Images abrufen
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppyoloe:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppyoloe:latestSchritt B: Mit einem Klick ausführen
Für RK3576:
sudo docker run --rm --privileged --net=host \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppyoloe:latest \
python web_detection.py --platform rk3576 \
--model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1Für RK3588:
sudo docker run --rm --privileged --net=host \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppyoloe:latest \
python web_detection.py --platform rk3588 \
--model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1Wechseln Sie mit --model_path model/ppyoloe_m.rknn zu PP-YOLOE-M. Ordnen Sie für Kameraeingabe /dev/videoN zu und setzen Sie die passende --camera_id.
🔌 API-Dokumentation
1. Modellinferenz-Schnittstelle (Predict)
Endpunkt: POST /api/models/ppyoloe/predict
Anfrageparameter (Multipart/Form-Data):
Verfügbar sind file, video, timestamp, realtime, conf und iou; die Standardschwellen sind 0.25 und 0.45.
Anwendungsbeispiele:
curl -X POST "http://<BOARD_IP>:8000/api/models/ppyoloe/predict" \
-F "file=@bus.jpg" -F "conf=0.30" -F "iou=0.45"Antwortformat (JSON):
{
"success": true,
"source": "uploaded image",
"predictions": [
{
"class": "bus",
"confidence": 0.91,
"box": {"x1": 120, "y1": 80, "x2": 520, "y2": 430}
}
],
"image": {"width": 640, "height": 480}
}2. Schnittstelle zur Systemkonfiguration (Config)
Die Eingabepriorität lautet Bild, hochgeladener MP4-Frame, aktive Kamera oder Beispielvideo. GET/POST /api/config steuert globale Objekt- und NMS-Schwellen. Zusätzlich gibt es Zustands-, MJPEG-, Upload-, asynchrone Analyse-, Status-, Listen- und Download-Schnittstellen.
web_detection.py führt Letterbox-Vorverarbeitung, RKNN-Inferenz, PP-YOLOE-DFL-Decodierung, klassenbezogene NMS, Koordinatenwiederherstellung, Darstellung und API-Serialisierung aus. Ersatzmodelle müssen mit DFL-Decoder und Ausgabelayout kompatibel sein.
3. Befehlszeilenargumente
| Argument | Standard | Beschreibung |
|---|---|---|
--platform | Erforderlich | rk3576 oder rk3588. |
--model_path | Erforderlich | PP-YOLOE-S- oder PP-YOLOE-M-RKNN-Datei. |
--class_path | COCO-Labels | Klassennamen für Serialisierung und Zeichnung. |
--camera_id | 1 | Kameraindex; -1 aktiviert reinen Uploadbetrieb. |
--video_path | Kein Wert | Lokale MP4-Schleife; überschreibt die Kamera. |
--host / --port | 0.0.0.0 / 8000 | Dienstadresse und Port. |
Echtzeit-Videostream (Video Feed)
Rufen Sie den neuesten annotierten MJPEG-Stream für die Browservorschau ab:
- Endpunkt:
GET /api/video_feed - Beispiel:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Entwicklerleitfaden (Empfehlungen für den Produktionseinsatz)
Lokal bauen
docker build -f docker/rk3576/ppyoloe.dockerfile \
-t rk3576-ppyoloe:local src/rk3576_ppyoloe
docker build -f docker/rk3588/ppyoloe.dockerfile \
-t rk3588-ppyoloe:local src/rk3588_ppyoloeEingaben und Ausgaben
Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.