Ce projet mesure quantitativement trois capacités principales de la plate-forme RK3588 :
- Encodage vidéo
MPP - Décodage vidéo
MPP - Inférence
RKNN
Périmètre du test :
- Encodage :
NV12 -> MJPG / H.264 / H.265 - Décodage :
MJPG -> YUV420 - Inférence : entrée
640x640avecYOLOv8n / YOLOv8s / YOLOv8m - Résolutions :
720p / 1080p / 2K / 4K / 8K
#Résumé du benchmark RK3588
- Généré le :
2026-09-20 17:09:50 - Codecs : préchauffage
20images + mesure120images - Inférence : préchauffage
20images + mesure200images - CPU governor:
ondemand - Température avant/après : environ
35–36°C / 36–37°C
#Test d’encodage vidéo (NV12 -> MJPG / H.264 / H.265)
| Résolution | Taille | Codec | Débit (Mbps) | Pure FPS | Pipeline FPS | Moyenne Pure (ms) | P95 Pure (ms) | Sortie (MB) | État |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
#Test de décodage vidéo (MJPG -> YUV420)
| Résolution | Taille | Images | Pure FPS | Pipeline FPS | Moyenne Pure (ms) | P95 Pure (ms) | État |
|---|---|---|---|---|---|---|---|
| 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 |
#Test d’inférence YOLOv8 640x640
| Modèle | FPS d’inférence | Moyenne (ms) | P95 (ms) | Prétraitement (ms) | NPU (ms) | État |
|---|---|---|---|---|---|---|
| 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. Exécuter le benchmark
Exécutez-le sur la carte 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_benchmarkLes résultats sont enregistrés dans :
ls ./benchmark_results
benchmark_summary.md video_codec_benchmark.csv yolov8_inference_benchmark.csvParamètres courants :
./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 200Le script enveloppe définit LD_LIBRARY_PATH vers lib/ dans le paquet. Si l’utilisateur ne peut pas accéder à /dev/mpp_service ou /dev/rga, il relance via sudo.
#2. Capacités du projet
Le projet génère les images de test, exécute l’encodage multi-résolution, le décodage matériel MJPG et l’inférence YOLOv8 640x640, puis exporte un résumé Markdown et les données CSV.
#3. Processus de test
- Générer des images dynamiques
YUV420SP (NV12)à la résolution choisie. - Exécuter séparément les encodeurs MPP
MJPG,H.264etH.265. - Conserver le flux MJPG et le décoder en
YUV420avec l’API advanced task de MPP. - Générer des images
640x640 NV12et les prétraiter avec RGA. - Exécuter les modèles RKNN YOLOv8n/s/m convertis pour RK3588.
- Agréger FPS, latence moyenne, P95 et taille de sortie.
- Générer les rapports Markdown et CSV.
#4. Approche technique
#4.1 Encodage
L’encodeur utilise Rockchip MPP avec une entrée dynamique YUV420SP (NV12). MJPG utilise Q=80 ; H.264/H.265 utilisent les débits CBR du tableau. Chaque groupe préchauffe 20 images et en mesure 120.
Pure FPS: images mesurées divisées par le temps cumulé dansencode_put_frameetencode_get_packetde MPPPipeline FPS: débit de la boucle complète avec génération, écriture d’entrée et copie de sortiePure Avg/P95: latence moyenne et P95 par image dans l’intervalle MPPOutput: taille totale encodée des 120 images mesurées
Pure FPS est un débit de service en soumission série. Il exclut l’inactivité du VPU pendant la préparation CPU et ne représente pas le débit final d’une chaîne caméra, réseau, affichage ou stockage.
#4.2 Décodage
Le décodeur réutilise le flux MJPG de chaque résolution et exécute MJPG -> YUV420 avec l’API advanced task MPP du RK3588. Chaque groupe préchauffe 20 images et en mesure 120.
Pure Decode FPS: de la fin de l’allocation/copie du paquet au retour de l’image par MPPPipeline FPS: inclut aussi la préparation du paquet et le recyclage de task
#4.3 Inférence
Le chemin génère des images 640x640 NV12, les prétraite avec RGA et les envoie à RKNN Runtime pour tester :
yolov8n_rk3588.rknnyolov8s_rk3588.rknnyolov8m_rk3588.rknn
Chaque modèle préchauffe 20 images et en mesure 200. Le rapport distingue les latences Infer, prétraitement RGA et étape RKNN.
#5. Explication des métriques
#5.1 Résultats d’encodage
Utilisez Pure FPS pour comparer le service VPU et Pipeline FPS pour la boucle complète non optimisée. Leur écart reflète génération et copies mémoire.
#5.2 Résultats de décodage
Pure Avg/P95 et Pure FPS décrivent l’intervalle matériel après préparation du paquet ; Pipeline FPS couvre la boucle complète.
#5.3 Résultats d’inférence
Inference FPS vient de l’appel série complet Infer ; Preprocess isole RGA et NPU l’étape RKNN. Caméra, réseau, affichage et files applicatives sont exclus.
#6. Évaluation objective
En excluant la génération NV12, les écritures d’entrée et les copies de sortie côté CPU, l’encodage pur 4K H.264/H.265 sur RK3588 atteint environ 64 FPS, le décodage pur 4K MJPG atteint 106.1 FPS et YOLOv8n atteint 33.9 FPS. Les valeurs bout en bout inférieures reflètent surtout la préparation et les transferts mémoire du Pipeline, pas le VPU seul. Bien que le 8K H.265 pur atteigne 32.4 FPS, la boucle complète reste à 18.2 FPS ; un 8K@30 durable exige zero-copy, soumission parallèle et optimisation globale.
#7. Stratégie de déploiement recommandée
- Utilisez YOLOv8n par défaut ; pour YOLOv8s/m, échantillonnez les images et utilisez des files bornées.
- Les chaînes
4K H.264/H.265de production doivent utiliser zero-copy ou des tampons partagés et réserver la bande passante mémoire. - N’utilisez pas
32.4 Pure FPSpour revendiquer un8K@30bout en bout ; le Pipeline actuel atteint seulement18.2 FPS. - Le P95 du décodage
8K MJPGdépasse l’intervalle d’une image à 30 FPS ; conservez une marge. - Avant publication, fixez les fréquences si nécessaire, exécutez au moins trois fois et publiez médiane, P95 et température.