段错误(Segment error)一般解释为内存溢出导致的结果
参考 github 上开源的Openvino cpp 解释推理仓库代码,
在后期 Yolov5 模型训练完之后出现(Segment error)
因为原仓库代码使用的是 YolvoV5 3官方模型推理的结果,结果的输出层和现在最新的 Yolov5输出层有点不用,3layer->4layer,所以在结果推理的时候因为出现随机的map 数值,在出现负数的时候会导致代码中的循环片段无效。
在 detect.cp p代码片段为在这里插入代码片
for (auto &output : _outputinfo) {
auto output_name = output.first;
Blob::Ptr blob = infer_request->GetBlob(output_name);
parse_yolov5(blob,s[i],_cof_threshold,origin_rect,origin_rect_cof);
++i;
}
扩展为:
static int _i = 0;
for (auto &output : _outputinfo) {
std::cout << ++_i << std::endl;
if (_i == 4) {
continue;
}
auto output_name = output.first;
Blob::Ptr blob = infer_request->GetBlob(output_name);
parse_yolov5(blob,s[i],_cof_threshold,origin_rect,origin_rect_cof);
++i;
}
上述代码中 i 和 _i 是不同的两个定义
i 是上面代码中 s 数组的x*x的数组
而 _i 就是表示跳过第四次产生的随机数组导致的内存溢出。