openvino_2020.3.341版本在windows平台上的经验总结

因任务需求,需要在windows平台上以openvino为推理引擎进行相关算法部署,总结经验如下:

1. openvino_2020.3.341 安装
  • 经验证,openvino_2020.3.341windows 7 sp1windows 10平台上均可安装,并且只能在visual studio 2017上进行完成开发(windows 7 sp1 + visual studio 2015无法完成编译,openvino官方文档上说明不支持visual studio 2015, 具体原因未深入研究)。
  • windows平台安装visual studio 2017,安装之前需要对windows系统进行更新,不能禁用windows update服务,更新完毕后才可进行安装visual studio 2017
  • 针对windows 7 sp1专业版或企业版,一定要看到2017-11,适用于 x64 的 Windows 7 和 Server 2008 R2 上用于 .NET Framework 3.5.1、4.5.2、4.6、4.6.1、4.6.2、4.7 的安全和质量汇总 (KB4049016)选项安装成功才可进行visual studio 2017的安装。
2. openvino_2020.3.341 调试
  • 经验证,openvino_2020.3.341windows 7 sp1 + visual studio 2017windows 10 + visual studio 2017均无法进行debug调试(只能release),其错误信息定位在InferenceEngine::Core ie,显示std::alloc错误。
3. openvino_2020.3.341 CMakeLists.txt
project(common_openvino_sdk)
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)

#set(CMAKE_BUILD_TYPE "RELEASE")
#set(CMAKE_BUILD_TYPE "DEBUG")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_C_FLAGS "-O3 -pipe -Wall -Wextra -latomic")
SET(MODULE_NAME common_openvino_sdk)

IF(WIN32)
    MESSAGE(STATUS "Now is Desktop Windows OS's.")
    add_definitions(-DWIN32)
    set(InferenceEngine_DIR "C:/IntelSWTools/openvino_2020.3.341/inference_engine/share")
    find_package (InferenceEngine REQUIRED)
    if(InferenceEngine_FOUND)
        INCLUDE_DIRECTORIES(${InferenceEngine_INCLUDE_DIRS})
        message(STATUS "InferenceEngine library status:")
        message(STATUS "    version: ${InferenceEngine_VERSION}")
        message(STATUS "    libraries: ${IE_RELEASE_LIBRARY} ${IE_DEBUG_LIBRARY}")
        message(STATUS "    include path: ${InferenceEngine_INCLUDE_DIRS}")
    endif()

    # 设置ngraph的CMake路径
    set(ngraph_DIR "C:/IntelSWTools/openvino_2020.3.341/deployment_tools/ngraph/cmake")
    find_package (ngraph REQUIRED)
    if(ngraph_FOUND)
        INCLUDE_DIRECTORIES(${ngraph_INCLUDE_DIRS})
        message(STATUS "ngraph library status:")
        message(STATUS "    version: ${ngraph_VERSION}")
        message(STATUS "    libraries: ${NGRAPH_LIBRARIES}")
        message(STATUS "    include path: ${NGRAPH_INCLUDE_DIRS}")
    endif()

     set(OPENVINO_DIR "C:/IntelSWTools/openvino_2020.3.341/deployment_tools/inference_engine")
     if(DEFINED OPENVINO_DIR)
         include_directories("${OPENVINO_DIR}/samples/cpp" )
         include_directories("${OPENVINO_DIR}/include/" )
         link_directories("${OPENVINO_DIR}/lib/intel64/Release/")
         link_directories("${OPENVINO_DIR}/lib/intel64/Debug/")
     endif(DEFINED OPENVINO_DIR)

    # 设置Opencv的CMake路径
    set(OpenCV_DIR "C:/IntelSWTools/openvino_2020.3.341/opencv/cmake")
    find_package (OpenCV REQUIRED NO_CMAKE_FIND_ROOT_PATH)

ELSE()
    MESSAGE(STATUS "Now is Desktop UNIX-like OS's.")
    set(OPENVINO_DIR /opt/intel/openvino_2020.4.287/deployment_tools)
    set(ngraph_DIR "${OPENVINO_DIR}/ngraph/cmake")
    find_package (ngraph REQUIRED)
    if(ngraph_FOUND)
        INCLUDE_DIRECTORIES(${ngraph_INCLUDE_DIRS})
        message(STATUS "ngraph library status:")
        message(STATUS "    version: ${ngraph_VERSION}")
        message(STATUS "    libraries: ${NGRAPH_LIBRARIES}")
        message(STATUS "    include path: ${NGRAPH_INCLUDE_DIRS}")
    endif()

    if(DEFINED OPENVINO_DIR)
        include_directories("${OPENVINO_DIR}/inference_engine/samples/cpp" )
        include_directories("${OPENVINO_DIR}/inference_engine/include/" )
        link_directories("${OPENVINO_DIR}/inference_engine/lib/intel64/")
        include_directories("${OPENVINO_DIR}/ngraph/include/")
        link_directories("${OPENVINO_DIR}/ngraph/lib/")
        include_directories("${OPENVINO_DIR}/inference_engine/external/tbb/include/" )
        link_directories("${OPENVINO_DIR}/inference_engine/external/tbb/lib/")
    endif(DEFINED OPENVINO_DIR)

    set(OpenCV_DIR "/opt/intel/openvino/opencv/cmake")
    find_package (OpenCV REQUIRED NO_CMAKE_FIND_ROOT_PATH)
ENDIF()

if(OpenCV_FOUND)
    INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
    message(STATUS "OpenCV library status:")
    message(STATUS "    version: ${OpenCV_VERSION}")
    message(STATUS "    libraries: ${OpenCV_LIBS}")
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
endif()


file(GLOB_RECURSE CURRENT_HEADERS export_inc/*.h  export_inc/*.hpp private_inc/*.h  private_inc/*.hpp *.h *.hpp common/inc/*.h comon/inc/*.hpp  common/*.h  common/*.hpp)
file(GLOB CURRENT_SOURCES src/*.cpp src/*.c
        common/*.cpp
        common/*.c
        common/src/*.cpp
        common/src/*.c
        )

include_directories(
        export_inc/
        private_inc/
        common/inc/
        common/
		test/
)

ADD_LIBRARY( ${MODULE_NAME} SHARED ${CURRENT_HEADERS} ${CURRENT_SOURCES} ${COMMON_SOURCES})

target_compile_features(${MODULE_NAME} PUBLIC cxx_range_for)

file(GLOB_RECURSE TEST_HEADERS test/*.h  test/*.hpp)
file(GLOB_RECURSE TEST_SOURCES test/*.cpp)

# 测试程序
add_executable(client main_gtest.cpp  ${TEST_HEADERS} ${TEST_SOURCES})
IF(WIN32)
	link_directories("C:/IntelSWTools/openvino_2020.3.341/deployment_tools/inference_engine/external/tbb/lib")
	target_link_libraries(${MODULE_NAME} ${OpenCV_LIBS} "inference_engine" "inference_engine_legacy")
	target_link_libraries(client PRIVATE ${OpenCV_LIBS} "inference_engine" "inference_engine_legacy" ${NGRAPH_LIBRARIES} ${MODULE_NAME} )
ELSE()
	link_directories("/opt/intel/openvino_2020.4.287/deployment_tools/inference_engine/external/tbb/lib")
	target_link_libraries(${MODULE_NAME} ${OpenCV_LIBS} "inference_engine")
	target_link_libraries(client PRIVATE ${OpenCV_LIBS} "inference_engine" "tbb" "inference_engine_legacy" ${NGRAPH_LIBRARIES} ${MODULE_NAME} )
ENDIF()

4. openvino_2020.3.341 库发布

最终生成的exe程序依赖如下:

  • inference_engine
  • ngraph
  • tbb
  • opencv

上述对应需要以下dll文件:

inference_engine.dll
inference_engine_legacy.dll
inference_engine_lp_transformations.dll
inference_engine_transformations.dll
ngraph.dll
tbb.dll
opencv_core430.dll
opencv_highgui430.dll
opencv_imgcodecs430.dll
opencv_imgproc430.dll

拷贝上述dll文件还不够,需要根据plugins文件决定设备dll文件,其中plugins文件内容如下:

<ie>
    <plugins>
        <plugin name="GNA" location="GNAPlugin.dll">
        </plugin>
        <plugin name="HETERO" location="HeteroPlugin.dll">
        </plugin>
        <plugin name="CPU" location="MKLDNNPlugin.dll">
        </plugin>
        <plugin name="MULTI" location="MultiDevicePlugin.dll">
        </plugin>
        <plugin name="GPU" location="clDNNPlugin.dll">
        </plugin>
        <plugin name="MYRIAD" location="myriadPlugin.dll">
        </plugin>
        <plugin name="HDDL" location="HDDLPlugin.dll">
        </plugin>
        <plugin name="FPGA" location="dliaPlugin.dll">
        </plugin>
    </plugins>
</ie>

若使用主机cpu,则拷贝MKLDNNPlugin.dll文件;
若使用计算棒,则拷贝myriadPlugin.dll文件;
依次类推;

最后需要拷贝以下两个dll文件,即可保证不安装openvino toolkit的情况下运行exe应用程序:

libmmd.dll
svml_dispmd.dll

上述文件路径在C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\compiler

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值