【问题标题】:Unhandled exception thrown: write access violation. blob_data was 0x11102E62ECB8182抛出未处理的异常:写访问冲突。 blob_data 为 0x11102E62ECB8182
【发布时间】:2021-10-26 09:28:57
【问题描述】:

您好,我目前正在使用 c++ 使用 openvino 开发 yolov5,我收到此错误

抛出未处理的异常:写访问冲突。 blob_data 为 0x11102E62ECB8182

blob_data 的类型是 float* 并且在输出中也有此消息

在 ylov5_openvino.exe 的 0x00007FFF03654ED9 处引发异常:Microsoft C++ 异常:InferenceEngine::NotImplemented at memory location 0x000000BF095FBEC0

我使用了 try{} catch{} 但它没有解决我的问题!请问有什么帮助吗?这是我的代码:

  bool Detector::init(string xml_path,double cof_threshold,double nms_area_threshold){
    _xml_path = xml_path;
    _cof_threshold = cof_threshold;
    _nms_area_threshold = nms_area_threshold;
    Core ie;
    auto cnnNetwork = ie.ReadNetwork(_xml_path); 

    InputsDataMap inputInfo(cnnNetwork.getInputsInfo());
    InputInfo::Ptr& input = inputInfo.begin()->second;
    _input_name = inputInfo.begin()->first;
    input->setPrecision(Precision::FP32);
    input->getInputData()->setLayout(Layout::NCHW);
    ICNNNetwork::InputShapes inputShapes = cnnNetwork.getInputShapes();
    SizeVector& inSizeVector = inputShapes.begin()->second;
    cnnNetwork.reshape(inputShapes);

    _outputinfo = OutputsDataMap(cnnNetwork.getOutputsInfo());
    for (auto &output : _outputinfo) {
        output.second->setPrecision(Precision::FP32);
    }

    //_network =  ie.LoadNetwork(cnnNetwork, "GPU");
    _network =  ie.LoadNetwork(cnnNetwork, "CPU");
    return true;
}


bool Detector::uninit(){
    return true;
}


bool Detector::process_frame(Mat& inframe,vector<Object>& detected_objects){
    if(inframe.empty()){
        cout << "Invalid picture input" << endl;
        return false;
    }
    resize(inframe,inframe,Size(640,640));
    cvtColor(inframe,inframe,COLOR_BGR2RGB);
    size_t img_size = 640*640;
    //InferRequest  infer_request = _network.CreateInferRequest();
    InferenceEngine::InferRequest infer_request = _network.CreateInferRequest();
    //InferRequest::Ptr infer_request = _network.CreateInferRequestPtr();
    Blob::Ptr frameBlob = infer_request.GetBlob(_input_name);
    InferenceEngine::LockedMemory<void> blobMapped = InferenceEngine::as<InferenceEngine::MemoryBlob>(frameBlob)->wmap();
    float* blob_data = blobMapped.as<float*>();
    //nchw
    for(size_t row =0;row<640;row++){
        for(size_t col=0;col<640;col++){
            for(size_t ch =0;ch<3;ch++){
               blob_data[img_size*ch + row*640 + col] =  float (inframe.at<Vec3b>(row,col)[ch])/255.0f;
            }
        }
    }

提前致谢。

【问题讨论】:

    标签: c++ windows visual-studio yolo openvino


    【解决方案1】:

    此查询类似于此 GitHub 线程:#7248

    您的问题似乎是您没有正确安装某些东西,或者在运行推理之前没有运行 setupvars 脚本。

    还有可能是您的 Yolov5 模型不支持层/拓扑。

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2019-12-31
      • 1970-01-01
      • 2011-04-12
      • 2021-07-12
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多