Dit project meet drie kerncapaciteiten van het RK3588-platform:
MPP-videocoderingMPP-videodecoderingRKNN-inferentie
Testbereik:
- Codering:
NV12 -> MJPG / H.264 / H.265 - Decodering:
MJPG -> YUV420 - Inferentie:
640x640-invoer metYOLOv8n / YOLOv8s / YOLOv8m - Resoluties:
720p / 1080p / 2K / 4K / 8K
#Samenvatting RK3588-benchmark
- Gegenereerd:
2026-09-20 17:09:50 - Codec:
20opwarmframes +120meetframes - Inferentie:
20opwarmframes +200meetframes - CPU governor:
ondemand - Temperatuur voor/na: ongeveer
35–36°C / 36–37°C
#Videocoderingstest (NV12 -> MJPG / H.264 / H.265)
| Resolutie | Grootte | Codec | Bitrate (Mbps) | Pure FPS | Pipeline FPS | Pure gemiddelde (ms) | Pure P95 (ms) | Uitvoer (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 |
#Videodecoderingstest (MJPG -> YUV420)
| Resolutie | Grootte | Frames | Pure FPS | Pipeline FPS | Pure gemiddelde (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-inferentietest
| Model | Inferentie-FPS | Gemiddelde (ms) | P95 (ms) | Voorverwerking (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. De benchmark uitvoeren
Voer hem uit op de reComputer RK3588.
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_benchmarkDe resultaten worden opgeslagen in:
ls ./benchmark_results
benchmark_summary.md video_codec_benchmark.csv yolov8_inference_benchmark.csvVeelgebruikte parameters:
./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 200Het wrapperscript wijst LD_LIBRARY_PATH naar lib/ in het pakket. Kan de gebruiker /dev/mpp_service of /dev/rga niet openen, dan wordt opnieuw uitgevoerd via sudo.
#2. Projectmogelijkheden
Het project genereert testframes, voert codering met meerdere resoluties, MJPG-hardwaredecodering en 640x640-YOLOv8-inferentie uit en exporteert een Markdown-samenvatting en CSV-brondata.
#3. Testproces
- Dynamische
YUV420SP (NV12)-frames op de gekozen resolutie genereren. - De MPP-encoders
MJPG,H.264enH.265afzonderlijk uitvoeren. - De MJPG-elementaire stream bewaren en via de MPP advanced task API naar
YUV420decoderen. 640x640 NV12-frames genereren en met RGA voorbewerken.- Voor RK3588 geconverteerde YOLOv8n/s/m-RKNN-modellen uitvoeren.
- FPS, gemiddelde latentie, P95-latentie en uitvoergrootte samenvoegen.
- Markdown- en CSV-rapporten genereren.
#4. Technische aanpak
#4.1 Codering
De encoder gebruikt Rockchip MPP met dynamische YUV420SP (NV12)-invoer. MJPG gebruikt Q=80; H.264/H.265 gebruiken de CBR-bitrates uit de tabel. Elke groep warmt 20 frames op en meet 120.
Pure FPS: meetframes gedeeld door de opgetelde tijd in MPPencode_put_frameenencode_get_packetPipeline FPS: throughput van de hele lus inclusief generatie, invoerschrijven en uitvoerkopiePure Avg/P95: gemiddelde en P95-latentie per frame in het MPP-intervalOutput: totale gecodeerde grootte van de 120 meetframes
Pure FPS is een servicesnelheid bij seriële indiening. Stilstand van de VPU terwijl de CPU het volgende frame voorbereidt telt niet mee; dit is dus niet de eindsnelheid van een volledige camera-, netwerk-, weergave- of opslagketen.
#4.2 Decodering
De decoder hergebruikt de MJPG-stream per resolutie en voert MJPG -> YUV420 uit via de RK3588 MPP advanced task API. Elke groep warmt 20 frames op en meet 120.
Pure Decode FPS: vanaf voltooide pakkettoewijzing en -kopie tot MPP het uitvoerframe teruggeeftPipeline FPS: omvat ook pakketvoorbereiding en task-recycling
#4.3 Inferentie
Het pad genereert 640x640 NV12-frames, verwerkt ze vooraf met RGA en stuurt ze naar RKNN Runtime om deze modellen te testen:
yolov8n_rk3588.rknnyolov8s_rk3588.rknnyolov8m_rk3588.rknn
Elk model warmt 20 frames op en meet 200. Het rapport registreert de latentie van Infer, RGA-voorverwerking en de RKNN-fase.
#5. Uitleg van de metrieken
#5.1 Coderingsresultaten
Gebruik Pure FPS om de VPU-service te vergelijken en Pipeline FPS voor de niet-geoptimaliseerde volledige lus. Het verschil toont de invloed van framegeneratie en geheugenkopieën.
#5.2 Decoderingsresultaten
Pure Avg/P95 en Pure FPS beschrijven het hardware-interval na pakketvoorbereiding; Pipeline FPS omvat de volledige lus.
#5.3 Inferentieresultaten
Inference FPS komt uit de volledige seriële Infer-aanroep; Preprocess meet RGA en NPU de RKNN-fase. Camera, netwerk, scherm en applicatiewachtrijen zijn uitgesloten.
#6. Objectieve beoordeling
Zonder CPU-side NV12-generatie, invoerschrijven en uitvoerkopieën haalt pure 4K H.264/H.265-codering op de RK3588 ongeveer 64 FPS, pure 4K MJPG-decodering 106.1 FPS en YOLOv8n 33.9 FPS. Lagere end-to-endwaarden weerspiegelen vooral framevoorbereiding en geheugenverplaatsing in de Pipeline, niet alleen de VPU. Pure 8K H.265 haalt 32.4 FPS, maar de volledige lus 18.2 FPS; blijvende 8K@30 vereist zero-copy, parallelle indiening en optimalisatie van het hele mediapad.
#7. Aanbevolen implementatiestrategie
- Gebruik standaard YOLOv8n; pas bij YOLOv8s/m framesampling en begrensde wachtrijen toe.
- Productie-
4K H.264/H.265-paden moeten zero-copy of gedeelde capturebuffers gebruiken en geheugenbandbreedte reserveren. - Gebruik
32.4 Pure FPSniet om end-to-end8K@30te claimen; de huidige Pipeline haalt18.2 FPS. - De P95 van
8K MJPG-decodering overschrijdt één frame-interval bij 30 FPS; houd marge. - Zet vóór publicatie waar nodig klokken vast, voer minstens drie rondes uit en rapporteer mediaan, P95 en temperatuur.