使用Clion在Ubuntu上编译部署NCNN, 并使用自己训练的model测试推理
环境: ubuntu14.04 + cuda9
1 编译opencv-3.4.2
1.1 下载源代码
下载链接: https://opencv.org/releases/page/2/
[也可参考: https://blog.csdn.net/DumpDoctorWang/article/details/82259357]
1.2 安装opencv的依赖库
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
1.3 编译opencv-3.4.2
$ tar xvf opencv-3.4.2.tar.gz
$ cd opencv-3.4.2/
$ mkdir build
$ cd build
$ cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release ..
$ make -j
$ make install
1.4 编译完成, include和lib已经在/usr/local下了
2 编译protobuf-3.4.0
2.1 下载源代码: https://github.com/google/protobuf/releases
2.2 编译
$ tar -xvf protobuf-3.4.0.tar.gz
$ cd protobuf
$ ./configure –prefix=/usr/local/protobuf
$ make
$ make check
$ make install
3 编译ncnn
3.1 下载ncnn源代码: https://github.com/Tencent/ncnn
3.2 编译(不使用VULKAN)
$ cd ncnn/
$ mkdir build
$ cd build
$ cmake ..
$ make -j
$ make install
3.3 编译完成
此时会生成
build/install/include/ncnn/*.h
build/install/lib/libncnn.a
4 配置Clion
4.1 下载Clion: http://www.jetbrains.com/clion/
4.2 安装
4.3 配置远程linux环境,
toolchain -> remote host
cmake
5 创建项目,链接ncnn静态库, 写测试程序
5.1 创建一个项目.
5.2 设置deployment远程路径,这样项目会自动上传到linux
5.3 配置ncnn链接库
5.3.1 修改CMakeList.txt
添加ncnn的include和lib
添加opencv路径
添加openmp
cmake_minimum_required(VERSION 3.5)
project(ncnn_test_linux)
set(CMAKE_CXX_STANDARD 14)
set(NCNN_DIR /home/lpadas1/share/HDD/jory.d/build/ncnn-master/build/install)
include_directories(ncnn_libs/include)
link_directories(ncnn_libs/libs)
link_libraries(libncnn.a)
find_package(OpenCV REQUIRED)
# must add
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()
add_executable(ncnn_test_linux
main.cpp
ncnn_demo.cpp
c_helper.h
cv_helper.h
run.h
opencv_base.h
ncnn_base.h
mtcnn/mtcnn.h
mtcnn/mtcnn.cpp
LFFD/UltraFace.hpp
LFFD/UltraFace.cpp
common.h mtcnn_face_detect.cpp ssd_face_detect.cpp LFFD_face_detect.cpp)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} ncnn)
5.4 写test.cpp测试
6 编译运行
6.1 使用cmake编译debug, releases
6.2 在linux上会生成*.o 执行文件, 直接运行即可