使用 OpenVINO™ C# 异步推理接口部署YOLOv8 ——在Intel IGPU 上速度依旧飞起!!
内容提要
OpenVINO Runtime支持同步或异步模式下的推理。异步API的优点是可以并行执行其他任务,而不是等待当前推理完成。OpenVINO C# API是一个OpenVINO的.Net wrapper,可以在.NET框架下使用C#语言实现深度学习模型的推理加速。异步模式可以提高应用程序的帧速率,可以使用InferRequest.start_async接口进行推理。项目环境为OpenVINO IGPUCPU: Intel Core i7-1165G7IGPU: Intel Iris Xe Graphics。代码实现包括定义YOLOv8数据处理方法和异步推理实现。异步推理速度提升了3.78倍。
延伸解读
异步推理的性能提升与实现要点
文章测试显示,在Intel Iris Xe集成显卡上,异步推理平均每帧耗时15.49毫秒,达到64.56 FPS,而同步推理为48.23毫秒、20.73 FPS,异步速度是同步的3.11倍。实现异步推理的关键是创建两个InferRequest通道,交替进行预处理、异步推理和结果处理,从而在设备推理时并行执行主机任务,避免硬件空闲。
C#与C++异步推理性能对比
文章对比了C#和C++的异步推理性能:C++异步推理达到87.98 FPS,而C#为64.56 FPS。虽然C#性能略低,但考虑到C#的易用性和开发效率,这一结果仍表明OpenVINO C# API能够有效利用集成显卡进行加速推理,为.NET开发者提供了可行的深度学习部署方案。
异步推理的适用场景与注意事项
异步推理适用于需要高帧率视频处理的场景,如实时目标检测。但需注意,异步模式需要管理多个推理请求,并正确处理等待结果的方式(wait_for或wait),以避免资源竞争。此外,文章中的测试未进行任何优化,实际应用中可能通过调整参数或使用更高效的前后处理进一步提升性能。
Q&A
OpenVINO C# API的主要功能是什么?
OpenVINO C# API是OpenVINO的.Net wrapper,支持在.NET框架下实现深度学习模型的推理加速。
异步推理相比同步推理有什么优势?
异步推理允许并行执行其他任务,提升应用程序的帧速率,速度提升了3.78倍。
如何在C#中实现YOLOv8的异步推理?
在C#中实现YOLOv8的异步推理需要创建多个InferRequest,并使用start_async接口进行推理。
在什么样的硬件环境下进行的推理测试?
推理测试在Intel Core i7-1165G7和Intel Iris Xe Graphics的环境下进行。
异步推理的平均推理时间是多少?
异步推理的平均推理时间为15.49毫秒,达到64.56FPS。
如何使用InferRequest进行异步推理?
使用InferRequest.start_async接口启动异步推理,并可以通过wait或wait_for方法等待结果。