CV / PP-YOLOE

PP-YOLOE

reComputer RK3588

COCO-Objekterkennung mit PP-YOLOE, beschleunigt mit RKNN auf reComputer RK3576 und RK3588.

27 Downloads
Präzision
RKNN

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.

Bereitstellen
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 -1

REST API

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "ppyoloe-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
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:

bash
# 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 docker

2. 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

EigenschaftWert
AufgabeCOCO-Objekterkennung mit 80 Klassen
EingabeLetterbox-RGB mit 640 x 640
Variantenppyoloe_s.rknn, ppyoloe_m.rknn
Standardmodel/ppyoloe_s.rknn
NachverarbeitungDFL-Decodierung und klassenbezogene NMS

Schritt A: Images abrufen

bash
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:latest

Schritt B: Mit einem Klick ausführen

Für RK3576:

bash
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 -1

Für RK3588:

bash
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 -1

Wechseln 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:

bash
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):

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

ArgumentStandardBeschreibung
--platformErforderlichrk3576 oder rk3588.
--model_pathErforderlichPP-YOLOE-S- oder PP-YOLOE-M-RKNN-Datei.
--class_pathCOCO-LabelsKlassennamen für Serialisierung und Zeichnung.
--camera_id1Kameraindex; -1 aktiviert reinen Uploadbetrieb.
--video_pathKein WertLokale MP4-Schleife; überschreibt die Kamera.
--host / --port0.0.0.0 / 8000Dienstadresse 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

bash
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_ppyoloe

Eingaben und Ausgaben

Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.