OpenVINO开发小组
直播中

费加罗

9年用户 898经验值
私信 关注
[问答]

使用OpenVINO™ 2021.4在CPU和MYRIAD上进行自定义对象检测,为什么结果差异巨大?




    • 使用自定义训练的模型执行推理,以便在 2021.4 OpenVINO™中进行人员检测。
    • 与 MYRIAD 相比,CPU 的输出结果取得了巨大的差异

回帖(2)

刘佳

2025-3-6 10:41:49

  • 安装 最新的OpenVINO™版本(OpenVINO™ 2022 年以后)。
  • 运行 以下命令使用 Model Optimizer 转换模型:mo --input_model  --data_type FP16 --layout NCHW --use_new_frontend --input_shape [input_shape] --mean_values [mean_values] --scale 255
举报

张国厚

2025-3-6 17:47:02

在使用 OpenVINO™ 2021.4 进行自定义对象检测时,CPU 和 MYRIAD(Intel Movidius VPU)之间的结果差异巨大,可能有多种原因。以下是一些可能的因素和解决方法:




1. 精度差异



  • CPU:通常使用 FP32(32 位浮点数)进行推理,精度较高。

  • MYRIAD:通常使用 FP16(16 位浮点数)进行推理,精度较低。


  • 影响:如果你的模型对精度敏感(例如,需要检测小目标或模糊目标),FP16 可能会导致精度下降,从而影响检测结果。


    解决方法



  • 检查模型是否适合在 FP16 精度下运行。

  • 尝试在 MYRIAD 上使用 FP32 推理(如果支持)。

  • 在训练模型时,增加数据增强或调整模型结构以提高鲁棒性。




2. 硬件性能差异



  • CPU:通用处理器,适合复杂计算,能够处理更大规模的模型。

  • MYRIAD:专用视觉处理器,适合低功耗场景,但计算能力有限。


  • 影响:如果模型过于复杂或输入分辨率较高,MYRIAD 可能无法高效处理,导致结果不准确。


    解决方法



  • 优化模型复杂度,例如使用轻量级网络(如 MobileNet、YOLO Tiny)。

  • 降低输入图像的分辨率。

  • 检查模型是否在 MYRIAD 上完全加载并正常运行。




3. 模型转换问题



  • OpenVINO™ 需要将原始模型(如 TensorFlow、PyTorch)转换为 Intermediate Representation (IR) 格式(.xml.bin 文件)。


  • 影响:如果模型转换过程中出现问题(例如,不支持的层或操作),MYRIAD 可能无法正确执行推理。


    解决方法



  • 使用 OpenVINO™ 的 Model Optimizer 检查模型转换日志,确保所有层都支持 MYRIAD。

  • 如果某些操作不支持,尝试修改模型或使用替代操作。




4. 后处理差异



  • CPU:后处理(如 NMS、置信度过滤)可能在 CPU 上实现,精度较高。

  • MYRIAD:后处理可能在 MYRIAD 上实现,受限于硬件能力,可能导致结果差异。


  • 影响:后处理的实现方式可能影响最终检测结果。


    解决方法



  • 检查后处理代码,确保在 CPU 和 MYRIAD 上的一致性。

  • 如果可能,将后处理步骤统一在 CPU 上执行。




5. 硬件限制



  • MYRIAD 对模型的大小和输入分辨率有严格限制。如果模型太大或输入分辨率太高,MYRIAD 可能无法正常运行。


  • 影响:模型无法完全加载或推理失败,导致结果差异。


    解决方法



  • 检查 OpenVINO™ 的日志,确认模型是否成功加载到 MYRIAD。

  • 优化模型大小和输入分辨率以适应 MYRIAD 的限制。




6. 版本兼容性问题



  • OpenVINO™ 2021.4 可能存在对 MYRIAD 的支持问题,尤其是在自定义模型上。


  • 影响:某些功能或操作在特定版本中可能无法正常工作。


    解决方法



  • 尝试升级到最新版本的 OpenVINO™。

  • 检查 OpenVINO™ 的官方文档和社区论坛,了解已知问题。




7. 数据预处理差异



  • CPUMYRIAD 可能在数据预处理(如图像归一化、缩放)上存在差异。


  • 影响:输入数据不一致会导致推理结果差异。


    解决方法



  • 确保数据预处理在 CPU 和 MYRIAD 上完全一致。

  • 检查输入数据的格式和范围是否符合模型要求。




8. 模型训练问题



  • 如果模型在训练时未充分优化或数据不足,可能在 MYRIAD 上表现不佳。


  • 影响:模型在低精度硬件(如 MYRIAD)上的泛化能力较差。


    解决方法



  • 增加训练数据,特别是包含各种场景和光照条件的数据。

  • 使用数据增强技术提高模型的鲁棒性。




总结


要解决 CPU 和 MYRIAD 之间的结果差异问题,可以按照以下步骤进行排查和优化:



  1. 检查模型转换日志,确保模型完全支持 MYRIAD。

  2. 优化模型复杂度和输入分辨率以适应 MYRIAD 的限制。

  3. 确保数据预处理和后处理在 CPU 和 MYRIAD 上一致。

  4. 检查 OpenVINO™ 版本和硬件支持。

  5. 如果问题仍然存在,尝试升级 OpenVINO™ 或使用其他硬件(如 GPU)。


通过以上方法,应该能够减少 CPU 和 MYRIAD 之间的结果差异,并提高自定义对象检测的准确性。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分