[深度学习] ncnn编译使用
2023-04-18 12:39:30 时间
工程
ncnn工程编译使用(cpu)
在linux下建立如CMakeLists文件即可编译生成ncnn工程
# 最低cmake版本
cmake_minimum_required(VERSION 3.2)
# 工程名
project(ncnnTest)
# 添加OpenCV支持
find_package(OpenCV REQUIRED)
# 添加OpenMP支持
FIND_PACKAGE(OpenMP REQUIRED)
if(OPENMP_FOUND)
message("OPENMP FOUND")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
# 头文件目录
include_directories(/home/computerA/ncnn/build/install/include/ncnn)
# 库文件目录
link_directories(/home/computerA/ncnn/build/install/lib)
# 生成可执行文件
add_executable(ncnnTest test.cpp)
# 链接
target_link_libraries(ncnnTest ncnn ${OpenCV_LIBS} /home/computerA/ncnn/build/install/lib/libncnn.a)
ncnn工程编译使用(vulkan)
vulkan版本要多一些步骤,比如添加vulkan库和glslang库。具体如下:
step1 添加vulkan环境变量
- 命令行输入 sudo vim ~/.bashrc
- 添加如下vulkan库文件路径
export VULKAN_SDK={yourpath}/vulkansdk/x86_64 &&
export PATH=$VULKAN_SDK/bin:$PATH &&
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH &&
export LIBRARY_PATH=$VULKAN_SDK/lib:$LIBRARY_PATH &&
export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/explicit_layer.d
- 命令行输入source ~/.bashrc
step2 编写CMakeLists文件
# 最低cmake版本
cmake_minimum_required(VERSION 3.2)
# 工程名
project(ncnnTest)
# 添加OpenCV支持
find_package(OpenCV REQUIRED)
# 添加OpenMP支持
FIND_PACKAGE(OpenMP REQUIRED)
if(OPENMP_FOUND)
message("OPENMP FOUND")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
# 添加Vulkan支持
FIND_PACKAGE(Vulkan REQUIRED)
# 头文件目录
include_directories({yourpath}/ncnn/build/install/include/ncnn {yourpath}/ncnn/build/install/include/glslang {yourpath}/ncnn/build/install/include/SPIRV ${Vulkan_INCLUDE_DIRS})
# 库文件目录
link_directories({yourpath}/ncnn/build/install/lib)
# 生成可执行文件
add_executable(ncnnTest squeezenet.cpp)
# 链接
target_link_libraries(ncnnTest ncnn ${OpenCV_LIBS} Vulkan::Vulkan {yourpath}/ncnn/build/install/lib/libglslang.a {yourpath}/ncnn/build/install/lib/libOGLCompiler.a {yourpath}/ncnn/build/install/lib/libOSDependent.a {yourpath}/ncnn/build/install/lib/libSPIRV.a {yourpath}/ncnn/build/install/lib/libncnn.a)
如果随着ncnn版本更新,以上方式不可行。则CMakeLists文件改为如下内容,参考cmake_examples
# 最低cmake版本
cmake_minimum_required(VERSION 3.2)
# 工程名
project(ncnnTest)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# --- ncnn
# set函数里的路径是指包含ncnnConfig.cmake的目录
set(ncnn_DIR "{yourpath}/ncnn/build/install/lib/cmake/ncnn" CACHE PATH "folder that contains ncnnConfig.cmake")
find_package(ncnn REQUIRED)
# --- opencv
find_package(OpenCV REQUIRED)
# 生成可执行文件
add_executable(ncnnTest squeezenet.cpp)
target_link_libraries(ncnnTest ncnn ${OpenCV_LIBS})
参考
相关文章
- 程序员们厉害了,连面试这件事都想给改改
- 面试官:请算出走迷宫需要的最少步数
- 你敢信?面试官竟然让我现场搭建一个AOP测试环境!
- 『头破血流』学编程语言(Rust 篇)
- 用聪明的方式学习Vim | GitHub 2200星
- 自然语言处理必读:5本平衡理论与实践的书籍
- 深度学习入门Fast.aiV2上线!中文字幕,笔记资源免费
- 软件开发32条法则:经过实践检验的实用建议和经验教训
- 特朗普点头了!甲骨文加入TikTok 竞购或成微软最大竞争对手
- 谷歌用算力爆了一篇论文,解答有关无限宽度网络的一切
- 外媒:甲骨文加入TikTok竞购战 正与美国投资者合作
- 美国对华为新禁令立即生效!38个分支机构新增至实体清单
- 美国“封杀”阿里?假新闻!路透社把标题都改了
- 拿到腾讯字节快手offer后,他的LeetCode刷题经验GitHub获1300星
- 低代码平台会让程序员失业?测评了5个工具,谁能让效率提高N倍?
- 放弃360万年薪,选择华为201万的「天才少年」:做自己想做的事
- 微软拟最多以300亿美元收购TikTok,并转移软件相关代码
- 微软宣布收购TikTok美国业务谈判继续 9月15日前完成
- 高通宣布与华为达成长期专利协议
- Salesforce开发人员背后的认真堆栈旅程