openvino是啥这里就不说了,上网一查,一大堆的资料说明,这里使用的是openvino2024.2的版本,跟之前的不一样,这个版本已经摒弃了mo的方式去转化模型,而是使用ovc来转化模型,等等......具体详情,看官方资料:
OpenVINO 2024.2 — OpenVINO™ documentation
下载openvino:
https://github.com/openvinotoolkit/openvino 或者
下载英特尔发行版 OpenVINO 工具套件 (intel.cn)
我的选项如下:
下载下来的压缩包为:openvino_genai_ubuntu20_2024.2.0.0_arm64.tar.gz
注意平台:我这是板端使用,所以是arm64
一 openvino板端安装
参考教程: Install OpenVINO™ Runtime on Linux from an Archive File — OpenVINO™ documentationCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(2024)https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-archive-linux.html
Install OpenVINO™ GenAI — OpenVINO™ documentationCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(2024)https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-genai.html
我这边不是放在/opt/intel下面的,装在用户目录下,单独记录以下
1. 将openvino_genai_ubuntu20_2024.2.0.0_arm64.tar.gz放到板端
2. 解压:
tar -xvf openvino_genai_ubuntu20_2024.2.0.0_arm64.tar.gz
mv openvino_genai_ubuntu20_2024.2.0.0_arm64 openvino_2024_2
3. 安装依赖
cd ~/openvino_2024_2
sudo -E ./install_dependencies/install_openvino_dependencies.sh
python -m pip install -r ./python/requirements.txt
// 这里我是新建了一个python的虚拟环境
4. 创建软连接
cd ~
sudo ln -s openvino_2024_2 openvino_2024
5. 设置环境变量
vi ~/.bashrc
source ~/openvino_2024_2/setupvars.sh // 加入
source ~/.bashrc
这样openvino在板端就安装好了,超简单的哈!!!openvino的库在runtime/lib/下
二 编译cpp demo
1. cd ~/openvino_2024_2/samples/cpp
2. 编译
bash build_samples.sh
报错:openvino_2024_2/runtime/lib/intel64/libopenvino_genai.so.2024.2.0.0
这个文件不存在
修改openvino_2024_2/runtime/cmake/OpenVINOGenAITargets-release.cmake,把其中的intel64换成aarch64
再次编译:
bash build_samples.sh
// 编译通过,可执行文件生成openvino_cpp_samples_build/aarch64/Release
三 测试hello_classification
这是一个分类的demo,所以下载分类的模型就可以了,我这里下载的是alexnet 模型
1. 下载模型,我尝试了几个模型,有些模型推理结果有问题,可能是模型的问题吧
'''通过这种方式获取onnx的模型,后续转成IR格式后,测试失败'''
import torchvision.models as models
import torch
alexnet = models.alexnet(pretrained=True)
alexnet.load_state_dict(torch.load("alexnet-owt-7be5be79.pth")) # pth路径按需更改
onnx_path = "./AlexNet.onnx"
test_input = torch.randn([1, 3, 224, 224])
torch.onnx.export(alexnet, test_input, onnx_path, export_params=True, verbose=True)
'''使用这种方式,直接转成的IR格式,推理结果也不对'''
import torchvision.models as models
import openvino as ov
alexnet = models.alexnet(pretrained=True)
# for name, layer in alexnet.named_modules():
# if name == '':
# input_layer_name = name # 空字符串表示输入层
# print('Input layer name:', input_layer_name)
# break
# # 如果需要检查模型的其他属性,可以继续遍历模型的层
# for name, layer in alexnet.named_modules():
# print(name, layer)
ov_model = ov.convert_model(alexnet, input={"x":[1,3,224,224]})
ov.save_model(ov_model, "alexnet.xml")
推理失败的结果如下:
这里提供一个推理正确的模型,下载地址:https://github.com/onnx/models/blob/main/validated/vision/classification/alexnet/model/bvlcalexnet-3.onnx
2. 模型转换
cd /home/toybrick/openvino_2024_2/python/openvino/tools/ovc/
python ovc.py ~/bvlcalexnet-3.onnx
// 默认生成到ovc路径下面
python ovc.py ~/bvlcalexnet-3.onnx --output_model ~/bvlcalexnet-3.xml
// 指定输出路径和输出名称
3. 下载测试图片
地址:storage.openvinotoolkit.org
4. c++测试demo
cd ~/openvino_cpp_samples_build/aarch64/Release
./hello_classification ~/bvlcalexnet-3.xml ~/cat.jpg CPU
输出结果如下:
5. python测试demo
cd openvino_2024_2/samples/python/hello_classification
python hello_classification.py ~/bvlcalexnet-3.xml ~/cat.jpg CPU
输出结果如下:
四 附录
open_model_zoo,可下载intel和public的模型
https://github.com/openvinotoolkit/open_model_zoo/tree/master
downloader.py下载模型:
python downloader.py --name 名字
# 名字就是open_model_zoo/models/intel下的每个文件夹的名称
如:
python .\downloader.py --name action-recognition-0001
python .\downloader.py --print_all # 显示所有可下载的模型
omz_downloader.exe 下载模型:
pip install openvino-dev
Install the omz-tools
// 在目录open_model_zoo/tools/model_tools下运行
pip install .
omz_downloader.exe --name googlenet-v1-tf
open_model_zoo,模型转换
omz_converter.exe --name 名字 // 同上
如:
omz_converter.exe --name action-recognition-0001
或:
python .\downloader.py --name action-recognition-0001
查看是否有GPU
linux:
lspci -nn -s 0:002.0
windows:
桌面右击显示设置,选择高级显示器设置,点击显示器1的显示适配器属性,查看适配器字符串内容
openvino手册
Overview — OpenVINO™ documentation
OpenVINO 2024.2 — OpenVINO™ documentation
onnx模型库
https://github.com/onnx/models
获取模型地址
open_model_zoo\models下的每个模型文件内部,都有相应的md说明文档 (懒得手动翻就去下面的网址查看)
https://github.com/openvinotoolkit/open_model_zoo/blob/master/models/intel/index.md
https://docs.openvino.ai/2022.3/omz_models_group_intel.html#doxid-omz-models-group-intel