使用vs2019编译 c++ libtorch 的 yolov5项目出现的问题,尤其是 Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350

 

cv::cvtColor(img, img, cv::COLOR_BGR2RGB);  // BGR -> RGB
img.convertTo(img, CV_32FC3, 1.0f / 255.0f);  // normalization 1/255
auto imgTensor = torch::from_blob(img.data, { 1, img.rows, img.cols, img.channels()}).to(device_type);
imgTensor = imgTensor.permute({ 0, 3, 1, 2 }).contiguous();  // BHWC -> BCHW (Batch, Channel, Height, Width)
std::vector inputs;
inputs.emplace_back(imgTensor);
// preds: [?, 15120, 9]
torch::jit::IValue output = module.forward(inputs);
 
// 我的死在下面这行了,报错为:0x00007FFF95D9A388 处(位于 libtorch.exe 中)有未经处理的异常: 
// Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350 处。
auto preds = output.toTuple()->elements()[0].toTensor();

 

inline c10::intrusive_ptr IValue::toTuple() const & {
  AT_ASSERT(isTuple(), "Expected Tuple but got ", tagKind());
  return toIntrusivePtr();
}

 

 

这里先说说我是怎么导出.pt模型的,yolov5官方提供了导出的python的代码,在如下:

使用vs2019编译 c++ libtorch 的 yolov5项目出现的问题,尤其是 Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350_第1张图片

 

问题就出现这个转换的代码里,作者说,这个转换默认是调用cpu 的,所以如何使用GPU需要重新修改一下:

使用vs2019编译 c++ libtorch 的 yolov5项目出现的问题,尤其是 Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350_第2张图片

你需要修改几句:

使用vs2019编译 c++ libtorch 的 yolov5项目出现的问题,尤其是 Microsoft C++ 异常: c10::Error,位于内存位置 0x0000000D606FE350_第3张图片

github作者的回复:https://github.com/yasenh/libtorch-yolov5#torchscript-model-export

 

 

 

你可能感兴趣的:(深度学习)