5月2日

ncnn是腾讯开源的移动端跨平台神经网络推理框架。这两年不断加入对vulkan等的支持,略显复杂,用QT编译器来相对简单。

相比于github上的原始源码,修改了一些头文件错误。Ncnn在QT中使用(windows)要注意其中的platform.h中mutex引用的头文件不对,这点需要修改。此外,有一部分.in文件必须cmake之后生成.h文件才有效,需要注意把生成的.h文件也加入到QT源文件中,在windows的操作流程。

先测试一下QT编译ncnn是否成功,用官方最简单的squeezenet例子来试一试:

    ncnn::Net squeezenet;
    std::vector<float> cls_scores;
    squeezenet.load_param("C:/Users/Klein/OneDrive/QT/MTCNN/android/assets/squeezenet_v1.1.param");
    squeezenet.load_model("C:/Users/Klein/OneDrive/QT/MTCNN/android/assets/squeezenet_v1.1.bin");
    QImage image = QImage("C:/Users/Klein/Pictures/timg2.jpg");
    ncnn::Mat in = ncnn::Mat::from_pixels_resize(image.bits(), ncnn::Mat::PIXEL_RGBA2RGB, image.width(), image.height(), 227, 227);
    const float mean_vals[3] = {104.f, 117.f, 123.f};
    in.substract_mean_normalize(mean_vals, 0);
    ncnn::Extractor ex = squeezenet.create_extractor();
    ex.input("data", in);
    ncnn::Mat out;
    ex.extract("prob", out);

ncnn处理完成,我们现在要进行人脸识别和关键点检测。

人脸相关的模型,我们需要按照pytorch->onnx->ncnn的方式得到最终的目标模型。

 

 

 
posted @ 2022-05-02 20:03  不咬牙  阅读(54)  评论(0编辑  收藏  举报