Ubuntu上编译部署NCNN, 并使用Clion编写c++案例, 调用自己训练的model测试推理

使用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 执行文件, 直接运行即可

猜你喜欢

转载自www.cnblogs.com/dxscode/p/12099441.html
今日推荐