RK3399Pro使用ncnn推理框架实现mtcnn人脸检测算法
首先移植ncnn框架
一、首先下载ncnn的源码包
git clone https://github.com/Tencent/ncnn.git
二、编译ncnn源码
mkdir -p build-aarch64-linux-gnu
cd build-aarch64-linux-gnu
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake ..
make -j4
make install
注意:不同的工具链需要修改../toolchains/aarch64-linux-gnu.toolchain.cmake这个文件里面的toolchains
三、测试
1、进入build-aarch64-linux-gnu路径下
2、进入examples路径下有编译好的测试应用
3、复制ncnn的网络模型参数到当前文件下 cp ../../examples/squeezenet_v1.1.* .
4、执行:./squeezenet ../../images/32-ncnn.png
5、结果:
747 = 0.140954
446 = 0.098634
531 = 0.063560
6、安装成功
四、mtcnn网络搭建
1、源码clone:git clone https://github.com/imistyrain/MTCNN.git
2、然后进入ncnn目录
3、修改CMakelists.txt在前面添加
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()
4、在尾部添加
target_link_libraries(${DEMO_NAME} opencv_highgui opencv_videoio opencv_imgcodecs opencv_video opencv_photo opencv_imgproc opencv_core)
5、修改完成如下:
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()
AUX_SOURCE_DIRECTORY(./ SRC_FILES)
include_directories("/usr/local/include/ncnn")
link_directories("/usr/local/lib")
set(DEMO_NAME ntnn)
add_executable(${DEMO_NAME} ${SRC_FILES})
target_link_libraries(${DEMO_NAME} ${OpenCV_LIBS} )
target_link_libraries(${DEMO_NAME} ncnn)
target_link_libraries(${DEMO_NAME} opencv_highgui opencv_videoio opencv_imgcodecs opencv_video opencv_photo opencv_imgproc opencv_core)
6、然后执行修改main.cpp这个文件
如下
#include <algorithm>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <stdio.h>
#include <vector>
#include <iostream>
#include "net.h"
#include "platform.h"
#include "mtcnn.h"
#define MAXFACEOPEN 0
7、修改完成后,然后新建build文件夹
8、然后进入build文件夹,执行cmake … && make
9、测试
我使用的是480 * 640的摄像头,无人脸的时候耗时在500ms,有人脸的耗时在1s多点
使用240 * 320的裁剪后图片,无人脸耗时有波动在:10ms ~ 400ms之间。有人脸大概耗时500ms
10、后续待优化