PyTorch 动态图机制在 GPU 上虽能良好运行,但在 CPU 服务器或边缘设备上,Eager Mode 的执行效率远低于优化后的静态图方案,单帧推理耗时约 80-120ms,难以达到实时(25 FPS)要求。
跨语言集成困难:现有业务后端为 C++ 微服务架构(如视频合成管线、直播推流模块),PyTorch 模型需通过 Python 子进程或 RPC 服务调用,跨进程通信引入额外 15-30ms 延迟,且增加了系统复杂度和故障点。
基于上述背景,本项目拟将 Wav2Lip 模型从 PyTorch 格式转换为 ONNX 标准格式,并使用 C++ 重写推理管线,实现轻量化、高性能、易集成的生产级唇音同步引擎。
提供 HTTP API 和 C++ SDK 两种调用方式,HTTP 用 CrowCpp 实现,SDK 编译为动态库交付。
引擎层:五个核心模块——视频预处理(人脸检测对齐)、音频特征提取(Mel频谱)、ONNX推理引擎、人脸融合贴回、视频编码输出。模块间通过阻塞队列连接,形成流水线并行,解码→检测→推理→编码四阶段独立线程运行。
基础设施层:ONNX Runtime v1.18(支持CPU/CUDA/TensorRT三后端)、OpenCV 4.8(图像处理)、FFmpeg 6.0(编解码)、Essentia(音频特征提取)、spdlog(日志)。
核心设计思路:PyTorch动态图转ONNX静态图消除Python开销,全程零拷贝传递数据
二、本人负责模块与量化成果
负责模块:
ONNX模型导出与精度验证管线(PyTorch→ONNX导出、动态轴配置、逐帧精度对比)
ONNX Runtime C++推理引擎封装(Wav2LipInference类,三后端统一抽象)
端到端流水线性能优化(流水线并行架构 + 内存复用策略)