• libtorch c++ 测试程序


    在网上找了一个测试程序。使用cmake生成项目时报错:

    Unknown cmake build type:
    Call Stack (most recent call first):
      D:/libtorch-gpu/share/cmake/Caffe2/Caffe2Config.cmake:88 (include)
      D:/libtorch-gpu/share/cmake/Torch/TorchConfig.cmake:39 (find_package)
      CMakeLists.txt:4 (find_package)
     
    -- Configuring incomplete, errors occurred!
    See also "E:/simnet-gpu/build/CMakeFiles/CMakeOutput.log".
    See also "E:/simnet-gpu/build/CMakeFiles/CMakeError.log".

    解决办法:

    点击cnake-gui的右上角的“Add Entry",然后添加

     再一次config则通过。

    配置 vs2017 x64 cuda10.0 libtorch1.0.0-cu10

    后面再配置opencv就可以使用了。

     测试程序是:

    #include <torch/torch.h>
    #include <torch/script.h>
    #include <memory>
    #include <string>
    #include <vector>
    #include <iostream>
    #include <spdhelper.hpp>
    #include <opencv2/opencv.hpp>
    #include <BTimer.hpp>
    #include "MTCNN.h"
    
    int main(int argc, char* argv[])
    {
        ENTER_FUNC;
        BTimer timer;
    
        std::string pnet_weight_path = std::string(MODEL_PATH) + "pnet.pt";
        std::string rnet_weight_path = std::string(MODEL_PATH) + "rnet.pt";
        std::string onet_weight_path = std::string(MODEL_PATH) + "onet.pt";
    
        TAlgParam alg_param;
        alg_param.min_face = 40;
        alg_param.scale_factor = 0.79;
        alg_param.cls_thre[0] = 0.6;
        alg_param.cls_thre[1] = 0.7;
        alg_param.cls_thre[2] = 0.7;
    
        TModelParam modelParam;
        modelParam.alg_param = alg_param;
        modelParam.model_path = {pnet_weight_path, rnet_weight_path, onet_weight_path};
        modelParam.mean_value = {{127.5, 127.5, 127.5}, {127.5, 127.5, 127.5}, {127.5, 127.5, 127.5}};
        modelParam.scale_factor = {1.0f, 1.0f, 1.0f};
        modelParam.gpu_id = 0;
        modelParam.device_type = torch::DeviceType::CUDA;
    
    
    
        MTCNN mt;
        mt.InitDetector(&modelParam);
        std::string img_path = std::string(MODEL_PATH) + "/../img/faces2.jpg";
        cv::Mat src = cv::imread(img_path);
        if(!src.data)
        {
            LOGE("cannot load image!");
            return -1;
        }
        std::vector<cv::Rect> outFaces;
        LOGI("warm up...");
        timer.reset();
        for(int i = 0; i < 5; i++)
            mt.DetectFace(src, outFaces);
        LOGI("warm up over, time cost: {}", timer.elapsed());
    
        timer.reset();
        //for(;;)
        mt.DetectFace(src, outFaces);
        LOGI(" cost: {}", timer.elapsed());
    
        for(auto& i : outFaces)
            cv::rectangle(src, i, {0,255,0}, 2);
    
        cv::imshow("result", src);
        cv::waitKey(0);
    //    cv::imwrite("res2.jpg", src);
        LEAVE_FUNC;
        return 0;
    }

    运行结果是:

     只可惜debug版本过不去,只能靠输出查看中间信息。

    参考:https://blog.csdn.net/jacke121/article/details/88709686

  • 相关阅读:
    document.documentElement.clientHeight 和 $(window).height() 无法正确获取页面可视区高度
    day05python-fullstack-数据类型
    python-day05-fullstack-#判断数字,推出,使用占位符,格式化输出
    np.random.rand()函数与randn()
    numpy.dot
    Python数据分析----Matplotlib
    day03-python运算符----比较/赋值/逻辑/成员
    全栈开发-day02-python不明就里
    全栈开发-day01-字符编码与计算机容量
    matplotlib面向对象函数画图介绍:
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/13340578.html
Copyright © 2020-2023  润新知