Parker Hu2026-09-20

Benchmark de aceleración por hardware VPU y NPU en RK3588

Benchmark reproducible en reComputer RK3588 de codificación MPP de NV12 a MJPG/H.264/H.265, decodificación de MJPG a YUV420 e inferencia YOLOv8n/s/m acelerada por RKNN.

vpunpubenchmarkDownload

Este proyecto mide cuantitativamente tres capacidades principales de la plataforma RK3588:

  1. Codificación de vídeo MPP
  2. Decodificación de vídeo MPP
  3. Inferencia RKNN

Alcance de la prueba:

  • Codificación: NV12 -> MJPG / H.264 / H.265
  • Decodificación: MJPG -> YUV420
  • Inferencia: entrada 640x640 con YOLOv8n / YOLOv8s / YOLOv8m
  • Resoluciones: 720p / 1080p / 2K / 4K / 8K

#Resumen del benchmark RK3588

  • Generado: 2026-09-20 17:09:50
  • Códecs: calentamiento de 20 fotogramas + medición de 120
  • Inferencia: calentamiento de 20 fotogramas + medición de 200
  • CPU governor:ondemand
  • Temperatura antes/después: aproximadamente 35–36°C / 36–37°C

#Prueba de codificación de vídeo (NV12 -> MJPG / H.264 / H.265)

ResoluciónTamañoCódecBitrate (Mbps)Pure FPSPipeline FPSMedia Pure (ms)P95 Pure (ms)Salida (MB)Estado
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

#Prueba de decodificación de vídeo (MJPG -> YUV420)

ResoluciónTamañoFotogramasPure FPSPipeline FPSMedia Pure (ms)P95 Pure (ms)Estado
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

#Prueba de inferencia YOLOv8 640x640

ModeloFPS de inferenciaMedia (ms)P95 (ms)Preprocesado (ms)NPU (ms)Estado
YOLOv8n33.928.633.10.919.6OK
YOLOv8s16.759.264.60.837.8OK
YOLOv8m9.9100.8105.80.881.8OK

#1. Ejecutar el benchmark

Ejecútelo en la placa reComputer RK3588.

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

Los resultados se guardan en:

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

Parámetros habituales:

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

El script contenedor apunta LD_LIBRARY_PATH al directorio lib/ del paquete. Si el usuario no puede acceder a /dev/mpp_service o /dev/rga, vuelve a ejecutar mediante sudo.

#2. Capacidades del proyecto

El proyecto genera fotogramas de prueba, ejecuta codificación multirresolución, decodificación MJPG por hardware e inferencia YOLOv8 a 640x640, y exporta un resumen Markdown con datos CSV.

#3. Proceso de prueba

  1. Generar fotogramas dinámicos YUV420SP (NV12) con la resolución indicada.
  2. Ejecutar por separado los codificadores MPP MJPG, H.264 y H.265.
  3. Conservar el flujo MJPG y decodificarlo a YUV420 mediante la API advanced task de MPP.
  4. Generar fotogramas 640x640 NV12 y preprocesarlos con RGA.
  5. Ejecutar modelos RKNN YOLOv8n/s/m convertidos para RK3588.
  6. Agregar FPS, latencia media, latencia P95 y tamaño de salida.
  7. Generar informes Markdown y CSV.

#4. Enfoque técnico

#4.1 Codificación

El codificador usa Rockchip MPP con entrada YUV420SP (NV12) dinámica. MJPG usa Q=80; H.264/H.265 usan los bitrates CBR de la tabla. Cada grupo calienta 20 fotogramas y mide 120.

  • Pure FPS: fotogramas medidos divididos por el tiempo acumulado en encode_put_frame y encode_get_packet de MPP
  • Pipeline FPS: rendimiento del bucle completo, incluida generación, escritura de entrada y copia de salida
  • Pure Avg/P95: latencia media y P95 por fotograma en el intervalo MPP
  • Output: tamaño total codificado de los 120 fotogramas medidos

Pure FPS es una tasa de servicio con envío serie. Excluye el tiempo ocioso de la VPU mientras la CPU prepara el siguiente fotograma y no representa la tasa final de una cadena completa de cámara, red, visualización o almacenamiento.

#4.2 Decodificación

El decodificador reutiliza el flujo MJPG de cada resolución y ejecuta MJPG -> YUV420 mediante la API advanced task de MPP para RK3588. Cada grupo calienta 20 fotogramas y mide 120.

  • Pure Decode FPS: desde terminar la asignación y copia del paquete hasta que MPP devuelve el fotograma
  • Pipeline FPS: incluye preparación del paquete y reciclaje de task

#4.3 Inferencia

La ruta genera fotogramas 640x640 NV12, los preprocesa con RGA y los envía a RKNN Runtime para probar estos modelos:

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

Cada modelo calienta 20 fotogramas y mide 200. El informe registra las latencias de Infer, preprocesado RGA y etapa RKNN.

#5. Explicación de métricas

#5.1 Resultados de codificación

Use Pure FPS para comparar el servicio VPU y Pipeline FPS para evaluar el bucle completo sin optimizar. La diferencia refleja generación y copias de memoria.

#5.2 Resultados de decodificación

Pure Avg/P95 y Pure FPS describen el intervalo de hardware tras preparar el paquete; Pipeline FPS cubre el bucle completo.

#5.3 Resultados de inferencia

Inference FPS procede de la llamada serie completa Infer; Preprocess mide RGA y NPU la etapa RKNN. No incluye cámara, red, pantalla ni colas.

#6. Evaluación objetiva

Excluyendo generación NV12, escrituras de entrada y copias de salida en CPU, la codificación pura 4K H.264/H.265 en RK3588 alcanza unos 64 FPS, la decodificación pura 4K MJPG alcanza 106.1 FPS y YOLOv8n alcanza 33.9 FPS. Las cifras end-to-end inferiores reflejan preparación y movimiento de memoria del Pipeline, no solo la VPU. Aunque 8K H.265 puro llega a 32.4 FPS, el bucle completo alcanza 18.2 FPS; mantener 8K@30 requiere zero-copy, envío paralelo y optimización integral.

#7. Estrategia de despliegue recomendada

  1. Use YOLOv8n por defecto; con YOLOv8s/m aplique muestreo y colas acotadas para evitar acumulación de latencia.
  2. Las cadenas 4K H.264/H.265 de producción deben usar zero-copy o búferes compartidos y reservar ancho de banda.
  3. No use 32.4 Pure FPS para afirmar 8K@30 end-to-end; el Pipeline actual solo alcanza 18.2 FPS.
  4. El P95 de 8K MJPG supera el intervalo de un fotograma a 30 FPS; deje margen.
  5. Antes de publicar cifras, fije relojes cuando proceda, ejecute al menos tres rondas e informe mediana, P95 y temperatura.