首页 > 解决方案 > 从“解释到修复”论文构建代码时出错

问题描述

我尝试重建E2X论文的代码。
我使用手册准备了存储库以重现错误。

我已经成功地为干净的caffe/ssd分支构建并运行了测试。
使用合并的E2X 代码构建相同的分支时,出现以下错误make

detection_evaluate_layer.cpp: In member function ‘virtual void caffe::DetectionEvaluateLayer<Dtype>::Forward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
detection_evaluate_layer.cpp:170:58: error: ‘const value_type’ {aka ‘const class caffe::NormalizedBBox’} has no member named ‘idx’
  170 |           top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
      |                                                          ^~~
detection_evaluate_layer.cpp:196:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
  196 |             top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
      |                                                            ^~~
detection_evaluate_layer.cpp:221:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
  221 |             top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();

在查看caffe/ssd分支时,我注意到它使用了idx,但从未使用过idx()
该错误出现在 E2X 引入的代码中。

有谁知道如何解决它?

标签: buildcaffe

解决方案


解决方案是在src/caffe/proto/caffe.proto文件中添加一个字段:

    optional int32 idx = 9;

这是修复的链接


推荐阅读