Parker Hu2026-09-20

RK3588 VPU- und NPU-Hardwarebeschleunigungs-Benchmark

Reproduzierbarer Benchmark auf dem reComputer RK3588 für MPP-Hardwarekodierung von NV12 nach MJPG/H.264/H.265, MJPG-zu-YUV420-Dekodierung und RKNN-beschleunigte YOLOv8n/s/m-Inferenz.

vpunpubenchmarkDownload

Dieses Projekt misst drei Kernfähigkeiten der RK3588-Plattform quantitativ:

  1. MPP-Videokodierung
  2. MPP-Videodekodierung
  3. RKNN-Inferenz

Testumfang:

  • Kodierung: NV12 -> MJPG / H.264 / H.265
  • Dekodierung: MJPG -> YUV420
  • Inferenz: 640x640-Eingabe mit YOLOv8n / YOLOv8s / YOLOv8m
  • Auflösungen: 720p / 1080p / 2K / 4K / 8K

#RK3588-Benchmarkübersicht

  • Erstellt: 2026-09-20 17:09:50
  • Codec: 20 Aufwärmframes + 120 Messframes
  • Inferenz: 20 Aufwärmframes + 200 Messframes
  • CPU governor:ondemand
  • Temperatur vorher/nachher: etwa 35–36°C / 36–37°C

#Videokodierungstest (NV12 -> MJPG / H.264 / H.265)

AuflösungGrößeCodecBitrate (Mbps)Pure FPSPipeline FPSPure-Mittel (ms)Pure P95 (ms)Ausgabe (MB)Status
720p1280×720MJPG20.0128.094.97.88.217.2OK
720p1280×720H.2644.0397.3233.72.52.81.8OK
720p1280×720H.2654.0400.0285.12.52.61.1OK
1080p1920×1080MJPG30.0203.095.94.95.338.6OK
1080p1920×1080H.2648.0218.0121.74.65.13.6OK
1080p1920×1080H.2658.0213.4111.14.74.82.4OK
2K2560×1440MJPG45.0120.745.68.38.568.4OK
2K2560×1440H.26416.0137.092.77.37.47.3OK
2K2560×1440H.26516.0138.593.87.27.34.2OK
4K3840×2160MJPG60.055.920.317.919.3153.9OK
4K3840×2160H.26432.064.035.415.616.014.6OK
4K3840×2160H.26532.064.835.615.415.79.6OK
8K7680×4320MJPG90.015.610.264.265.4615.2OK
8K7680×4320H.26464.016.711.359.960.727.5OK
8K7680×4320H.26564.032.418.230.831.231.0OK

#Videodekodierungstest (MJPG -> YUV420)

AuflösungGrößeFramesPure FPSPipeline FPSPure-Mittel (ms)Pure P95 (ms)Status
720p1280×720120/120497.4477.82.02.4OK
1080p1920×1080120/120311.7290.33.23.4OK
2K2560×1440120/120208.8198.84.85.2OK
4K3840×2160120/120106.1100.69.410.1OK
8K7680×4320120/12030.428.832.934.4OK

#YOLOv8-640x640-Inferenztest

ModellInferenz-FPSMittel (ms)P95 (ms)Vorverarbeitung (ms)NPU (ms)Status
YOLOv8n33.928.633.10.919.6OK
YOLOv8s16.759.264.60.837.8OK
YOLOv8m9.9100.8105.80.881.8OK

#1. Benchmark ausführen

Führen Sie ihn auf dem reComputer RK3588 aus.

bash
sudo apt update && sudo apt install unzip -y
wget https://files.seeedstudio.com/RK3576/rk3588_mpp_benchmark_install.zip -O install.zip && unzip install.zip
cd ./install && export LD_LIBRARY_PATH="$(pwd)/lib:${LD_LIBRARY_PATH}" && chmod +x ./bin/rk3588_benchmark
sudo ./bin/rk3588_benchmark

Die Ergebnisse werden gespeichert unter:

bash
ls ./benchmark_results
benchmark_summary.md  video_codec_benchmark.csv  yolov8_inference_benchmark.csv

Häufige Parameter:

bash
./bin/rk3588_benchmark \
  --output-dir ./benchmark_results \
  --resolutions 720p,1080p,2k,4k,8k \
  --models yolov8n,yolov8s,yolov8m \
  --codec-warmup 20 \
  --codec-frames 120 \
  --infer-warmup 20 \
  --infer-frames 200

Das Wrapper-Skript setzt LD_LIBRARY_PATH auf lib/ im Paket. Kann der Benutzer nicht auf /dev/mpp_service oder /dev/rga zugreifen, wird über sudo neu gestartet.

#2. Projektfunktionen

Das Projekt erzeugt Testframes, führt Kodierung in mehreren Auflösungen, MJPG-Hardwaredekodierung und 640x640-YOLOv8-Inferenz aus und exportiert eine Markdown-Zusammenfassung sowie CSV-Rohdaten.

#3. Testablauf

  1. Dynamische YUV420SP (NV12)-Frames in der gewählten Auflösung erzeugen.
  2. Die MPP-Encoder MJPG, H.264 und H.265 getrennt ausführen.
  3. Den MJPG-Elementarstrom behalten und mit der MPP advanced task API nach YUV420 dekodieren.
  4. 640x640 NV12-Frames erzeugen und mit RGA vorverarbeiten.
  5. Für RK3588 konvertierte YOLOv8n/s/m-RKNN-Modelle ausführen.
  6. FPS, mittlere Latenz, P95 und Ausgabegröße zusammenfassen.
  7. Markdown- und CSV-Berichte erzeugen.

#4. Technischer Ansatz

#4.1 Kodierung

Der Encoder nutzt Rockchip MPP mit dynamischer YUV420SP (NV12)-Eingabe. MJPG nutzt Q=80; H.264/H.265 die CBR-Bitraten der Tabelle. Jede Gruppe wärmt 20 Frames auf und misst 120.

  • Pure FPS: Messframes geteilt durch die kumulierte Zeit in MPP encode_put_frame und encode_get_packet
  • Pipeline FPS: Durchsatz der gesamten Schleife einschließlich Erzeugung, Eingabeschreiben und Ausgabekopie
  • Pure Avg/P95: mittlere und P95-Latenz pro Frame im MPP-Intervall
  • Output: gesamte kodierte Größe der 120 Messframes

Pure FPS ist eine Servicerate bei serieller Übergabe. VPU-Leerlauf während der CPU-Vorbereitung ist ausgeschlossen; daher ist dies nicht die Endrate einer vollständigen Kamera-, Netzwerk-, Anzeige- oder Speicherkette.

#4.2 Dekodierung

Der Decoder verwendet den MJPG-Strom jeder Auflösung und führt MJPG -> YUV420 mit der RK3588-MPP-advanced-task-API aus. Jede Gruppe wärmt 20 Frames auf und misst 120.

  • Pure Decode FPS: nach Paketzuweisung/-kopie bis zur MPP-Ausgabe
  • Pipeline FPS: enthält auch Paketvorbereitung und task-Recycling

#4.3 Inferenz

Der Pfad erzeugt 640x640 NV12-Frames, verarbeitet sie mit RGA vor und sendet sie an RKNN Runtime, um folgende Modelle zu testen:

  • yolov8n_rk3588.rknn
  • yolov8s_rk3588.rknn
  • yolov8m_rk3588.rknn

Jedes Modell wärmt 20 Frames auf und misst 200. Der Bericht trennt Infer-, RGA- und RKNN-Latenz.

#5. Erklärung der Metriken

#5.1 Kodierungsergebnisse

Pure FPS vergleicht die VPU-Servicerate, Pipeline FPS die nicht optimierte Gesamtschleife. Die Differenz zeigt den Einfluss von Erzeugung und Speicherkopien.

#5.2 Dekodierungsergebnisse

Pure Avg/P95 und Pure FPS beschreiben das Hardwareintervall nach Paketvorbereitung; Pipeline FPS umfasst die Gesamtschleife.

#5.3 Inferenzergebnisse

Inference FPS stammt aus dem vollständigen seriellen Infer-Aufruf; Preprocess misst RGA, NPU die RKNN-Stufe. Kamera, Netzwerk, Anzeige und Warteschlangen sind ausgeschlossen.

#6. Objektive Bewertung

Ohne CPU-seitige NV12-Erzeugung, Eingabeschreiben und Ausgabekopien erreicht reine 4K H.264/H.265-Kodierung auf dem RK3588 etwa 64 FPS, reine 4K MJPG-Dekodierung 106.1 FPS und YOLOv8n 33.9 FPS. Niedrigere Ende-zu-Ende-Werte spiegeln vor allem Framevorbereitung und Speichertransfers der Pipeline wider, nicht nur die VPU. Reines 8K H.265 erreicht 32.4 FPS, die Gesamtschleife aber nur 18.2 FPS; dauerhaftes 8K@30 erfordert Zero-Copy, parallele Übergabe und Gesamtoptimierung.

#7. Empfohlene Deployment-Strategie

  1. YOLOv8n standardmäßig nutzen; bei YOLOv8s/m Frames auslassen und begrenzte Warteschlangen verwenden.
  2. Produktive 4K H.264/H.265-Pipelines sollten Zero-Copy oder gemeinsame Capture-Puffer einsetzen und Speicherbandbreite reservieren.
  3. Aus 32.4 Pure FPS kein Ende-zu-Ende-8K@30 ableiten; die aktuelle Pipeline erreicht 18.2 FPS.
  4. P95 der 8K MJPG-Dekodierung überschreitet ein 30-FPS-Frameintervall; Reserve einplanen.
  5. Vor Veröffentlichung bei Bedarf Takte fixieren, mindestens dreimal ausführen und Median, P95 sowie Temperatur melden.