Dieses Projekt misst drei Kernfähigkeiten der RK3588-Plattform quantitativ:
MPP-VideokodierungMPP-VideodekodierungRKNN-Inferenz
Testumfang:
- Kodierung:
NV12 -> MJPG / H.264 / H.265 - Dekodierung:
MJPG -> YUV420 - Inferenz:
640x640-Eingabe mitYOLOv8n / YOLOv8s / YOLOv8m - Auflösungen:
720p / 1080p / 2K / 4K / 8K
#RK3588-Benchmarkübersicht
- Erstellt:
2026-09-20 17:09:50 - Codec:
20Aufwärmframes +120Messframes - Inferenz:
20Aufwärmframes +200Messframes - CPU governor:
ondemand - Temperatur vorher/nachher: etwa
35–36°C / 36–37°C
#Videokodierungstest (NV12 -> MJPG / H.264 / H.265)
| Auflösung | Größe | Codec | Bitrate (Mbps) | Pure FPS | Pipeline FPS | Pure-Mittel (ms) | Pure P95 (ms) | Ausgabe (MB) | Status |
|---|---|---|---|---|---|---|---|---|---|
| 720p | 1280×720 | MJPG | 20.0 | 128.0 | 94.9 | 7.8 | 8.2 | 17.2 | OK |
| 720p | 1280×720 | H.264 | 4.0 | 397.3 | 233.7 | 2.5 | 2.8 | 1.8 | OK |
| 720p | 1280×720 | H.265 | 4.0 | 400.0 | 285.1 | 2.5 | 2.6 | 1.1 | OK |
| 1080p | 1920×1080 | MJPG | 30.0 | 203.0 | 95.9 | 4.9 | 5.3 | 38.6 | OK |
| 1080p | 1920×1080 | H.264 | 8.0 | 218.0 | 121.7 | 4.6 | 5.1 | 3.6 | OK |
| 1080p | 1920×1080 | H.265 | 8.0 | 213.4 | 111.1 | 4.7 | 4.8 | 2.4 | OK |
| 2K | 2560×1440 | MJPG | 45.0 | 120.7 | 45.6 | 8.3 | 8.5 | 68.4 | OK |
| 2K | 2560×1440 | H.264 | 16.0 | 137.0 | 92.7 | 7.3 | 7.4 | 7.3 | OK |
| 2K | 2560×1440 | H.265 | 16.0 | 138.5 | 93.8 | 7.2 | 7.3 | 4.2 | OK |
| 4K | 3840×2160 | MJPG | 60.0 | 55.9 | 20.3 | 17.9 | 19.3 | 153.9 | OK |
| 4K | 3840×2160 | H.264 | 32.0 | 64.0 | 35.4 | 15.6 | 16.0 | 14.6 | OK |
| 4K | 3840×2160 | H.265 | 32.0 | 64.8 | 35.6 | 15.4 | 15.7 | 9.6 | OK |
| 8K | 7680×4320 | MJPG | 90.0 | 15.6 | 10.2 | 64.2 | 65.4 | 615.2 | OK |
| 8K | 7680×4320 | H.264 | 64.0 | 16.7 | 11.3 | 59.9 | 60.7 | 27.5 | OK |
| 8K | 7680×4320 | H.265 | 64.0 | 32.4 | 18.2 | 30.8 | 31.2 | 31.0 | OK |
#Videodekodierungstest (MJPG -> YUV420)
| Auflösung | Größe | Frames | Pure FPS | Pipeline FPS | Pure-Mittel (ms) | Pure P95 (ms) | Status |
|---|---|---|---|---|---|---|---|
| 720p | 1280×720 | 120/120 | 497.4 | 477.8 | 2.0 | 2.4 | OK |
| 1080p | 1920×1080 | 120/120 | 311.7 | 290.3 | 3.2 | 3.4 | OK |
| 2K | 2560×1440 | 120/120 | 208.8 | 198.8 | 4.8 | 5.2 | OK |
| 4K | 3840×2160 | 120/120 | 106.1 | 100.6 | 9.4 | 10.1 | OK |
| 8K | 7680×4320 | 120/120 | 30.4 | 28.8 | 32.9 | 34.4 | OK |
#YOLOv8-640x640-Inferenztest
| Modell | Inferenz-FPS | Mittel (ms) | P95 (ms) | Vorverarbeitung (ms) | NPU (ms) | Status |
|---|---|---|---|---|---|---|
| YOLOv8n | 33.9 | 28.6 | 33.1 | 0.9 | 19.6 | OK |
| YOLOv8s | 16.7 | 59.2 | 64.6 | 0.8 | 37.8 | OK |
| YOLOv8m | 9.9 | 100.8 | 105.8 | 0.8 | 81.8 | OK |
#1. Benchmark ausführen
Führen Sie ihn auf dem reComputer RK3588 aus.
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_benchmarkDie Ergebnisse werden gespeichert unter:
ls ./benchmark_results
benchmark_summary.md video_codec_benchmark.csv yolov8_inference_benchmark.csvHäufige Parameter:
./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 200Das 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
- Dynamische
YUV420SP (NV12)-Frames in der gewählten Auflösung erzeugen. - Die MPP-Encoder
MJPG,H.264undH.265getrennt ausführen. - Den MJPG-Elementarstrom behalten und mit der MPP advanced task API nach
YUV420dekodieren. 640x640 NV12-Frames erzeugen und mit RGA vorverarbeiten.- Für RK3588 konvertierte YOLOv8n/s/m-RKNN-Modelle ausführen.
- FPS, mittlere Latenz, P95 und Ausgabegröße zusammenfassen.
- 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 MPPencode_put_frameundencode_get_packetPipeline FPS: Durchsatz der gesamten Schleife einschließlich Erzeugung, Eingabeschreiben und AusgabekopiePure Avg/P95: mittlere und P95-Latenz pro Frame im MPP-IntervallOutput: 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-AusgabePipeline 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.rknnyolov8s_rk3588.rknnyolov8m_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
- YOLOv8n standardmäßig nutzen; bei YOLOv8s/m Frames auslassen und begrenzte Warteschlangen verwenden.
- Produktive
4K H.264/H.265-Pipelines sollten Zero-Copy oder gemeinsame Capture-Puffer einsetzen und Speicherbandbreite reservieren. - Aus
32.4 Pure FPSkein Ende-zu-Ende-8K@30ableiten; die aktuelle Pipeline erreicht18.2 FPS. - P95 der
8K MJPG-Dekodierung überschreitet ein 30-FPS-Frameintervall; Reserve einplanen. - Vor Veröffentlichung bei Bedarf Takte fixieren, mindestens dreimal ausführen und Median, P95 sowie Temperatur melden.