使用 Openvino 对自己训练好的模型yolov5 pt -> IR 进行推理
环境需求
- Ubuntu 系统 20.04
- vscode 编辑器
- python3
- Openvino 环境(priority)
关键为 export 导出的修改
Openvino安装
参考官网(18 和 21 选择对应的安装版本即可)
如果是新手建议选择可视化界面安装
重点
因为这篇文章不是重点讲述如何安装 Openvino,所以有 bug 可以参考,
注意事项:
- 解压路径可以自己定义,建议安装的位置选择默认的 /opt/intel 即可。
- 其中不需要自己安装 opencv,openvino 会自动安装。
- 安装过后同样会跳到一个官网的网址,跟着步骤往下,将推理优化模型模块安装完即可,下面4个步骤。
Step 2: Install External Software Dependencies¶
Step 3: Configure the Environment¶
Step 4: Configure the Model Optimizer¶
- 可选选项可以安装也可不用安装。
安装完后就可以测试自己是否已经安装完成
测试的 demo 在/opt/intel/openvino_2021/deployment_tools/demo
推理部分
Yolov5 训练好自己的 pt 模型使用 export.py 转换成 openvino 格式。
!python3 /content/drive/MyDrive/yolov5/export.py --weights /content/drive/MyDrive/yolov5/runs/train/exp4/weights/best.pt --include openvino
修改 export.py 的默认 arguments
- 将 opset = 12 更改为 opest = 10
- –data 更改为训练时的 data.yaml 文件(同样)
- model.model[-1].export = True
注意 :
- 路径中的*best.pt 为从 yolov5 训练(train.py) 好的模型。
- 选项为openvino
然后就会从原理模型 train 完的路径中找到三个文件夹。
其中bin 和 xml 为 openvino 中间模型文件。
- 然后就是CMakeLists.txt 文件的定义修改(注意之前的安装目录)
cmake_minimum_required(VERSION 3.5)
project(detect_test)
set(CMAKE_CXX_STANDARD 11)
include_directories(
#OpenVINO推理引擎的头文件
/opt/intel/openvino_2021/deployment_tools/inference_engine/include/
/opt/intel/openvino_2021/deployment_tools/ngraph/include/
)
#查找必要的依赖包
find_package(OpenCV REQUIRED)
set(InferenceEngine_DIR "/opt/intel/openvino_2021/deployment_tools/inference_engine/share")
find_package(InferenceEngine)
set(ngraph_DIR "/opt/intel/openvino_2021/deployment_tools/ngraph")
find_package(ngraph REQUIRED)
set(ngraph_LIBRARIES "/opt/intel/openvino_2021/deployment_tools/ngraph/lib/libngraph.so")
set(ngraph_INCLUDE_DIRS "/opt/intel/openvino_2021/deployment_tools/ngraph/include/")
# 编译detector.so
add_library (detector SHARED ${CMAKE_CURRENT_SOURCE_DIR}/detector.cpp)
target_include_directories(detector
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC ${OpenCV_INCLUDE_DIR}
PUBLIC ${InferenceEngine_INCLUDE_DIRS}
PUBLIC ${ngraph_INCLUDE_DIRS}
)
target_link_libraries(detector
${OpenCV_LIBS}
${InferenceEngine_LIBRARIES}
${ngraph_LIBRARIES}
)
add_executable(detect_test main.cpp)
target_link_libraries(detect_test
PRIVATE
${InferenceEngine_LIBRARIES}
${OpenCV_LIBS}
${NGRAPH_LIBRARIES}
detector
)
我的 github 仓库
在 build 文件中运行可执行文件
mkdir build
cd build
cmake … && make
./detect_test