引言
OpenVINO2022.1版本发布之后;对之前旧版本的功能做明确的划分;其中仍然通过exe方式安装程序的是runtime推理包;支持ONNX、IR、PADDLE等模型读取与推理。但是模型优化转换、模型库下载功能等其他功能被分在一个叫Dev Tool的部分。该部分可以通过pip方式直接安装;然后通过命令行直接直线;完成模型的转换;下载等操作;跟之前版本易用性有较大提升;做个对比如下;
Dev Tools安装与使用
Dev Tools安装非常方便;直接通过官方脚本命令行选择安装即可;唯一需要注意的是选择模型框架支持;我选择了ONNX/Pytorch格式转换支持;安装的命令行如下;
pip install openvino-dev[onnx,pytorch]==2022.1.0
执行完这条命令行就算是安装好了;只要网络不挂就可以安装成功;
安装完成;转换一个ONNX格式的模型为IR格式(xml/bin)文件;以Pytorch的ResNet18为例;先转换为ONNX;代码如下;
model = models.resnet18(pretrained=True)
model.eval()
model.cpu()
dummy_input1 = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, (dummy_input1), ;resnet_model.onnx;, verbose=True)
然后直接运行命令行就可以转换IR格式文件;截图如下;
模型下载
安装完成Dev Tools之后;下载模型;只要执行命令行即可;举例如下;
omz_downloader --name person-detection-0200
表示下载模型 person-detection-0200 是一个轻量化的人脸检测模型。
omz_downloader 支持的参数;
--all表示下载全部模型;建议别这么干;
--name 下载一个或者多个指定名称的模型;推荐这么干;
--precisions 表示下载的模型精度参数;支持FP32/FP18/INT8
Python SDK使用
对比之前Python版本的SDK;好用了不少;最明显的感受就是不用读输入输出;然后一堆设置了;对单个输入输出的网络;调用就特别的简洁更方便;开发者更加容易上手;上面我已经成功转换一个pytorch图像分类模型为IR格式;现在就可以使用它;基于OpenVINO2022版本最新Python SDK部署调用;实现代码如下:
# 加载标签数据
with open(;imagenet_classes.txt;) as f:
labels = [line.strip() for line in f.readlines()]
def resnet_demo():
ie = Core()
# model = ie.read_model(model=;resnet_model.onnx;)
model = ie.read_model(model=;resnet_model.xml;)
compiled_model = ie.compile_model(model=model, device_name=;CPU;)
output_layer = compiled_model.output(0)
means = np.zeros((224, 224, 3), dtype=np.float32)
means[: ,:] = (0.485, 0.456, 0.406)
dev = np.zeros((224, 224, 3), dtype=np.float32)
dev[: ,:] = (0.229, 0.224, 0.225)
image = cv.imread(;D:/images/space_shuttle.jpg;)
rgb = cv.cvtColor(image, code=cv.COLOR_BGR2RGB)
# resize to MobileNet image shape
input_image = cv.resize(src=rgb, dsize=(224, 224))
blob_img = np.float32(input_image) / 255.0
input_x = (blob_img - means) / dev
input_x = input_x.transpose((2, 0, 1))
input_x = np.expand_dims(input_x, 0)
print(input_x.shape)
result_infer = compiled_model([input_x])[output_layer]
result_index = np.argmax(result_infer)
cv.putText(image, labels[result_index], (20, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2)
cv.imshow(;OpenVINO2022 ; Pythorch ResNet18;, image)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == ;__main__;:
resnet_demo()
Dev-C++如何设置使用处理器内建函数-设置使用处理器内建函数的方法
Dev-C++怎么设置不产生控制台窗口-设置不产生控制台窗口的方法