Name Last Update
include Loading commit data...
model Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
CMakeLists.txt Loading commit data...
README.md Loading commit data...
facecomparison.cpp Loading commit data...
main.cpp Loading commit data...

MNN1.0.0+opencv3.x

CMakeLists

cmake_minimum_required(VERSION 3.10)
project(main)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
set(MNN_DIR ***)     // MNN路径
include_directories(${MNN_DIR}/include)
link_directories(${MNN_DIR}/build)
include_directories(***/face_recognize_mnn/include)  // 当前项目include路径
aux_source_directory(***/face_recognize_mnn/tools ALL_TOOLS)  // source cpp文件路径
add_executable(main main.cpp facecomparison.cpp ${ALL_TOOLS})
target_link_libraries(main -lMNN ${OpenCV_LIBS})

信息结构体

struct OutputInfo{
    int error_code;
    bool result;
};

struct InitModelError{
    vector<bool> init_error;
};

模型初始化

InitModelError init_model_code;
FaceComparison face_rec = FaceComparison();
bool init_model = face_rec.init_model(face_det_model,face_landm_model,face_rec_model,init_model_code);

det_model_path:人脸检测模型retinaface的模型路径
landm_model_path:106人脸关键点模型的模型路径
rec_model_path:人脸识别模型的模型路径
init_model_code:保存每个模型初始化状态true/false

重要参数(include/facecomparison.h文件)

// 人脸检测阈值
float confidence_threshold = 0.5;
// 是否进行人脸外廓
bool is_bbox_process = true;
// 人脸比对相似度阈值
float face_recongnize_thr = 0.5;
// 线程个数
int num_thread = 2;
// 推理方式
MNNForwardType forward_type = MNN_FORWARD_CPU;

接口(返回结果 bool:true/false)

int inference(string image_path1,string image_path2,OutputInfo &output_info);参数为两张图像地址,其中iamge1_path为face_id图像输入
int inference(Mat image1,Mat image2,OutputInfo &output_info);参数为两张opencv读取的图像矩阵,其中iamge1为face_id图像输入

调用方式

OutputInfo output_info;
int result = face_rec.inference(image1,image2,output_info);

编译

将CMakeLists.txt 中 set(FACECOMPARISON_DIR /home/situ/qfs/sdk_project/mnn_projects/face_recognize_mnn/include)
改为include文件夹所在的绝对地址
mkdir build
cd build
cmake ..
make
./main