使用AMD GPU时,YOLO输出使用什么平台?

问题描述 投票:0回答:2

这个问题困扰了我很长时间,请教您的建议,该往哪个方向发展。目标 - 在 Windows 上使用 yolo 开发通用应用程序,可以使用 AMD/Nvidia/Intel GPU、AMD/Intel CPU 的计算能力(将使用其中一种设备)。据我所知,OpenCV DNN模块在CPU计算方面处于领先地位;计划为 Nvidia 显卡提供 DNN + Cuda 捆绑包,并计划为 Intel GPU 提供 DNN + OpenCL 捆绑包。但是使用 DNN + OpenCL 测试 AMD GPU rx580 时,我遇到了以下问题:https://github.com/opencv/opencv/issues/17656。这个模块根本不支持AMD GPU计算吗?如果是这样,您能否告诉我这可以在什么平台上实现,并且最好尽可能高效。一个可能的解决方案可能是腾讯的ncnn,但我不确定桌面上的性能。我所说的输出是指检测到的对象的坐标及其名称(在 opencv dnn 模块中,我使用 cv::dnn::Net::forward() 获取它们)。另外,如果我有错的地方,请纠正我。如有任何反馈,我们将不胜感激。

我尝试了 OpenCV DNN + OpenCL 模块并期望获得高性能,但这种组合不起作用。

opencv deep-learning opencl yolo amd-gpu
2个回答
0
投票

我在 yolov8 ON WINDOWS 上做了这个,我相信它应该与任何其他 yolo 版本一起工作:

1-安装 ONNX 的 DirectML 版本。选择 ONNX DirectML 而不是任何其他变体或版本至关重要。您需要的 Python 包被恰当地命名为“onnxruntime_directml”。 放心使用:

pip install onnxruntime_directml

2- 将 YOLO 模型渲染为 ONNX 格式。

from ultralytics import YOLO

model = YOLO('yolov8n.pt')
model.export(format='onnx')

3- 将“DmlExecutionProvider”字符串添加到提供程序列表中: 这是“venv\Lib\site-packages\ultralytics”中的第 133 行到 140 行 n utobackend.py":

        elif onnx:  # ONNX Runtime
        LOGGER.info(f'Loading {w} for ONNX Runtime inference...')
        # check_requirements(('onnx', 'onnxruntime-gpu' if cuda else 'onnxruntime'))
        import onnxruntime
        providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if cuda else ['DmlExecutionProvider', 'CPUExecutionProvider']
        session = onnxruntime.InferenceSession(w, providers=providers)
        output_names = [x.name for x in session.get_outputs()]
        metadata = session.get_modelmeta().custom_metadata_map  # metadata

✨ 评论检查_要求第 135 行 ✨ 将“DmlExecutionProvider”字符串添加到提供程序列表中

4-享受模型性能100%开机


-1
投票

我相信

OpenCV
不支持AMD GPU优化。如果您有兴趣在非 Nvidia GPU 上运行 DL 模型,我建议阅读 PlaidMLYOLO-OpenCLDeepCL

© www.soinside.com 2019 - 2024. All rights reserved.