界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · SKILL.md

onnx-and-benchmarking

onnx-and-benchmarking

【效率与协作】Use 3DDFA_V2 ONNX Runtime acceleration and CPU latency or speed benchmark workflows.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: "onnx-and-benchmarking" description: "Use 3DDFA_V2 ONNX Runtime acceleration and CPU latency or speed benchmark workflows." metadata: disco-role: operating disable-model-invocation: true license: MIT

ONNX and benchmarking

Use this sub-skill when the task is about --onnx, ONNX conversion, CPU latency, OMP_NUM_THREADS, latency.py, or speed_cpu.py.

When to read

Read this sub-skill when the task asks to:

  • Use ONNX Runtime instead of the PyTorch model path.
  • Explain or prepare TDDFA_ONNX and FaceBoxes_ONNX.
  • Run end-to-end latency timing on an image.
  • Run the model-only CPU microbenchmark.
  • Diagnose missing .onnx files, OpenMP/libomp issues, or unstable timings.

Before running

  1. Use ../setup-and-assets/ to build and verify the baseline checkout.
  2. Check ../../references/model-assets.md for which .pth, .pkl, and generated .onnx assets are involved.
  3. Keep benchmark inputs and thread counts fixed when comparing numbers.

Latency wrapper

The latency wrapper preserves the original latency.py CLI. Put original arguments after --:

python <skill-root>/sub-skills/onnx-and-benchmarking/scripts/run-latency.py \
  --repo-root <checkout> -- \
  -f <image-path> --onnx --repeated 1 --warmup true

This reports face detection, 3DMM regression, and reconstruction timing.

Speed wrapper

The speed wrapper preserves speed_cpu.py:

python <skill-root>/sub-skills/onnx-and-benchmarking/scripts/run-speed-cpu.py \
  --repo-root <checkout>

It runs a random input through weights/mb1_120x120.onnx and prints the mean and standard deviation per inference.

ONNX conversion behavior

  • FaceBoxes_ONNX converts FaceBoxesProd.pth to FaceBoxesProd.onnx if the ONNX file is missing.
  • TDDFA_ONNX converts the selected .pth checkpoint and the BFM decoder if the ONNX artifacts are missing.
  • Conversion is CPU-safe but mutates the checkout by writing generated .onnx files.

Thread and provider notes

  • The repo sets OMP_NUM_THREADS=4 in the ONNX demo paths.
  • KMP_DUPLICATE_LIB_OK=True is set by the demo scripts before ONNX imports.
  • CPU ONNX Runtime is the baseline. CUDA/other providers are outside the required verification scope.
  • On macOS, the original README notes that libomp may be required.

Troubleshooting

Read references/troubleshooting.md for ONNX-specific issues and ../../references/troubleshooting.md for shared setup failures.

我的收藏