以前在win10上成功的跑起来faster-rcnn的实验,而且跑了一下CaltechPedestrian的数据集,可是效果一直不理想,折腾了很久也没弄清楚到底缘由出在哪里,直到读了Is Faster R-CNN Doing Well for Pedestrian Detection? 这片文章以后才明白了具体的问题出在哪里,因而就想跑一下文章中的实验。本来实验的源代码做者只在Ubuntu上面跑过,并无在win上跑过,可是他的代码都是基于任少卿的matlab代码修改的,因而我就想在win上应该也能跑通。因而我就试了一下,没想到居然卡在了编译external上面。html
caffe_library用的依然是任少卿做者给的(https://pan.baidu.com/s/1hqGojnI),RPN+BF的源码是在GitHub上面下载的,按照我以前的博客写的方法去编译,居然没经过,当时报了个错误,是关于caffe.pb.h文件版本的问题,也没闹明白是怎么回事,上网百度了一下,初步诊断是由于caffe_library的第三方库中protobuf的版本太低,网上说使用protobuf2.6.1版本能够,可是后来我一顿折腾,包括重装系统,重搭环境,也是行不通,转移到Ubuntu下也由于其余缘由行不通,没有办法就又回到了win7上,又通过一顿瞎折腾,终于闹明白了是什么问题了。。。测试
首先,caffe_library是这样的spa
能够看到它其中有一个文件夹叫作 protobuf_compiler-2.6 ,那么这个文件夹是干什么用的呢?为此我特意研究了一下protobuf的相关知识。能够这样说,caffe.pb.h和caffe.pb.cc是由图中画框的两个文件生成的,咱们能够看一下 protoc.cmd 中的代码就明白了,以下图:3d
既然编译的时候报的错是关于这两个文件的,那么确定要在这两个文件上面着手去解决问题了,当时一直觉得是protobuf的版本问题,搞了很久,最后使用了protobuf2.6.1虽然编译经过了,可是编译出来的文件却不能用,别提多心酸了。。。那么缘由究竟是出在了哪里呢?当我打开下图目录中的caffe.vcxproj这个文件的时候,明白了本身问题的结症所在了。 htm
首先说一下 .vcxproj 文件的做用,.vcxproj 文件管理着VS solution的相关配置,仔细看一下这个文件的内容,你就会发现它里面的信息都是solution的相关配置信息,包括编译平台,库目录,包含目录等等信息都保存在这个里面,因此我经过它肯定了,protobuf的版本是没有错误的,用的就是protobuf2.6.0版本的。那么,问题就只可能出如今一个地方了,那就caffe.proto 这个文件。关于这个文件的更多信息能够去网上百度,这里并不作细说。在caffe-RPN_BF这个文件夹里搜索一下 caffe.proto ,找到了它是存放在.\caffe-RPN_BF\src\caffe\proto 中的,因而咱们把它取出来,放在 protobuf_compiler-2.6 文件夹中,替换掉原来的 caffe.proto 文件,运行protoc.cmd,来从新生成caffe.pb.h和caffe.pb.cc这两个文件。blog
那为何不用protobuf_compiler-2.6 文件夹中本来存在的 caffe.proto 呢?你能够比较一下,由于它居然和.\caffe-RPN_BF\src\caffe\proto 中的 caffe.proto 是不同的。。。真是无话可说,并不太懂是为何。。。get
而后把新生成的两个文件分拷贝到 caffRPN_BF\include\caffe\proto 和 caffe-RPN_BF\src\caffe\proto 中,替换掉原来的文件。再从新进行编译,具体的编译过程能够参考我以前的博客,经 过测试,能够顺利经过编译。cmd