使用OpenVino跑Yolo模型执行mo -m yolov7.onnx --compress_to_fp16出现以下这个问题
ImportError: cannot import name 'get_numpy_ctype' from 'openvino.runtime.utils.types'
这个问题通常是由于OpenVINO版本更新导致的,解决方法是将OpenVINO版本降级到YOLOv7模型所需的版本。
另外,由于OpenVINO的安装过程较为复杂,容易出现一些依赖关系的问题,因此建议通过OpenVINO官方网站提供的docker安装方式来解决这个问题,步骤如下:
安装docker和nvidia-docker。
下载OpenVINO的容器image。可以在 https://hub.docker.com/r/openvino/ubuntu18_dev/ 页面下载,下载命令如下:
docker pull openvino/ubuntu18_dev:latest
运行容器:
docker run -it --net=host --privileged -v /dev:/dev -v /home/<username>:/home/<username>/ --name=<container_name> openvino/ubuntu18_dev:latest /bin/bash
<username>
是指用户的用户名,<container_name>
是指容器的名称。该命令将在本地运行一个Docker容器,并将本地的/dev
和用户目录(/home/<username>
)映射到容器中,然后进入容器的终端。
如果使用nvidia-docker,可以添加--runtime=nvidia
参数,如下所示:
nvidia-docker run -it --net=host --privileged -v /dev:/dev -v /home/<username>:/home/<username>/ --name=<container_name> openvino/ubuntu18_dev:latest /bin/bash
然后进入容器的命令行。
在容器内安装OpenVINO,并安装YOLOv7模型的依赖项。安装方法可以参考OpenVINO的官方文档:https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_docker_linux.html
使用以下命令安装YOLOv7依赖项:
apt-get update && apt-get install -y libopencv-dev python3-opencv
使用model downloader
下载YOLOv7模型和相关文件。在容器内执行以下命令:
cd /opt/intel/openvino/deployment_tools/tools/model_downloader
./downloader.py --name yolo-v7-tf --precisions FP16
这将下载YOLOv7模型及相关文件,并转换为FP16精度。
转换ONNX模型为OpenVINO IR模型。使用以下命令:
cd /opt/intel/openvino/deployment_tools/model_optimizer/
./mo_tf.py --input_model /home/<username>/<path_to_onnx_model>/yolov7.onnx --input_shape [1,416,416,3] --data_type FP16
<path_to_onnx_model>
是指ONNX模型所在的路径。该命令将将ONNX模型转换为OpenVINO IR模型,使用FP16精度。
这样就可以解决cannot import name 'get_numpy_ctype' from 'openvino.runtime.utils.types'
问题。