1.前言

之前在win10上成功的跑起来faster-rcnn的实验,并且跑了一下CaltechPedestrian的数据集,但是效果一直不理想,折腾了好久也没弄清楚到底原因出在哪里,直到读了Is Faster R-CNN Doing Well for Pedestrian Detection? 这片文章之后才明白了具体的问题出在哪里,于是就想跑一下文章中的实验。原本实验的源代码作者只在Ubuntu上面跑过,并没有在win上跑过,但是他的代码都是基于任少卿的matlab代码修改的,于是我就想在win上应该也能跑通。于是我就试了一下,没想到竟然卡在了编译external上面。

caffe_library用的依然是任少卿作者给的(https://pan.baidu.com/s/1hqGojnI),RPN+BF的源码是在GitHub上面下载的,按照我之前的博客写的方法去编译,竟然没通过,当时报了个错误,是关于caffe.pb.h文件版本的问题,也没闹明白是怎么回事,上网百度了一下,初步诊断是因为caffe_library的第三方库中protobuf的版本过低,网上说使用protobuf2.6.1版本可以,但是后来我一顿折腾,包括重装系统,重搭环境,也是行不通,转移到Ubuntu下也因为其他原因行不通,没有办法就又回到了win7上,又经过一顿瞎折腾,终于闹明白了是什么问题了。。。

2.编译RPN+BF所需要的external文件

2.1分析源码文件

首先,caffe_library是这样的

可以看到它其中有一个文件夹叫做 protobuf_compiler-2.6 ,那么这个文件夹是干什么用的呢?为此我特地研究了一下protobuf的相关知识。可以这样说,caffe.pb.h和caffe.pb.cc是由图中画框的两个文件生成的,我们可以看一下 protoc.cmd 中的代码就明白了,如下图:

2.2生成自己需要的caffe.pb.h和caffe.pb.cc

既然编译的时候报的错是关于这两个文件的,那么肯定要在这两个文件上面着手去解决问题了,当时一直以为是protobuf的版本问题,搞了好久,最后使用了protobuf2.6.1虽然编译通过了,但是编译出来的文件却不能用,别提多心酸了。。。那么原因到底是出在了哪里呢?当我打开下图目录中的caffe.vcxproj这个文件的时候,明白了自己问题的结症所在了。                                                                                              

首先说一下 .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这两个文件。

那为什么不用protobuf_compiler-2.6 文件夹中原本存在的 caffe.proto 呢?你可以比较一下,因为它竟然和.\caffe-RPN_BF\src\caffe\proto 中的 caffe.proto 是不一样的。。。真是无话可说,并不太懂是为什么。。。

3.重新编译

然后把新生成的两个文件分拷贝到 caffRPN_BF\include\caffe\proto 和 caffe-RPN_BF\src\caffe\proto 中,替换掉原来的文件。再重新进行编译,具体的编译过程可以参考我之前的博客,经 过测试,可以顺利通过编译。

在win7上跑基于任少卿作者代码修改的RPN+BF实验的更多相关文章

  1. 解决Win7上的连接access数据库的问题

    最近做了一个win桌面程序,没有用sql 数据库,而是用access数据库,因为access比sql用起来方便多了,最主要是不要安装sql server,直接放在程序里面,然后创建连接字符就可以了,s ...

  2. linux学习之---在linux服务器上跑一段Java代码

    经常在windows上进行开发,有时候,需要在Linux环境上跑一些程序测下代码,要怎么办才好嘞? 假设你对Java常用命令和linux常用命令已经基本熟悉,就可以直接按照以下步骤来啦,默认linux ...

  3. Win7上Git安装及配置过程

    Win7上Git安装及配置过程 文档名称 Win7上Git安装及配置过程 创建时间 2012/8/20 修改时间 2012/8/20 创建人 Baifx 简介(收获) 1.在win7上安装msysgi ...

  4. [异常解决] 奇巧淫技——VirtualBox中的linux无显示启动,并在win7上远程控制

    楼主是资深技术宅(癖),由于感觉手上的老笔记本太卡,遂狠心买了个性能至强的主机同时配了个投影仪(满足躺着打代码的意淫场景).但是体验了大概一个月发现还是坐着打代码舒服,但是如下图坐着打代码总是要抬头看 ...

  5. win7上python+theano+keras安装

    https://blog.csdn.net/yongjiankuang/article/details/50485610 其实过程很简单,首先说一下安装条件: 1.win7 (32和64都可以,下载安 ...

  6. 利用Tengine在树莓派上跑深度学习网络

    树莓派是国内比较流行的一款卡片式计算机,但是受限于其硬件配置,用树莓派玩深度学习似乎有些艰难.最近OPENAI为嵌入式设备推出了一款AI框架Tengine,其对于配置的要求相比传统框架降低了很多,我尝 ...

  7. 轻装上阵Flink--在IDEA上开发基于Flink的实时数据流程序

    前言 本文介绍如何在IDEA上快速开发基于Flink框架的DataStream程序.先直接上手! 环境清单 案例是在win7运行.安装VirtualBox,在VirtualBox上安装Centos操作 ...

  8. 让“是男人就下到100层”在Android平台上跑起来

    原工程:https://github.com/jeekun/DownFloors 移植后的代码:HelloCpp.zip 移植后的APK:HelloCpp.apk 说明:(cocos2d-x版本是“ ...

  9. Win7上安装Linux双系统

    今天帮同学在Win7上安装Linux,感觉一篇教程很不错,mark一下 原地址:Win7下U盘安装Ubuntu14.04双系统步骤详解 一.前期准备 1.大于2G的U盘一个(我的系统盘制作完成后大约占 ...

随机推荐

  1. 图形验证码 tesserocr pillow

    利用tesserocr和pil生成图形验证码 import tesserocr from PIL import Image image = Image.open('222.jpg') image = ...

  2. JS中 typeof,instanceof类型检测方式

    在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a' ...

  3. Django-ORM多表操作(进阶)

    一.创建模型 下面我们通过图书管理系统,来设计出每张表之间的对应关系. 通过上图关系,来定义一下我们的模型类. from django.db import models class Book(mode ...

  4. 开发快捷键(Eclipse,STS)

    Eclipse 常用快捷键 Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/]   此快捷键为 ...

  5. SpringBoot启动tomcat源码解读

    一.SpringBoot自动拉起Tomcat 原文链接:http://www.studyshare.cn/blog-front/blog/details/1136 SpringBoot框架是当前比较流 ...

  6. WebLogic使用总结(一)——WebLogic安装

    一.下载WebLogic 到Oracle官网http://www.oracle.com/ 下载WebLogic(根据自己的情况选择),本文档下载的是Generic WebLogic Server an ...

  7. iOS12系统应用发送邮件中的附件

    iOS12系统应用发送邮件中的附件 iOS12系统应用发送邮件中的附件,如果发送邮件的内容很多,或者包含文档.图片等,可以以附件的形式进行发送.此时需要使用addAttachmentData(_:mi ...

  8. linux抓包工具tcpdump使用总结

    tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上 1.格式 # tcpdump --help tcpdump version 4.1-PRE-CVS_2012_0 ...

  9. 在Linux下用gcc编译hello world

    1. 确保Linux系统里已经装好了gcc 测试:输入gcc后是如下的结果就说明已经安装成功 2. 创建HelloWorld.c 使用 touch 创建一个空文件; 用vim编辑 按下A或者I 插入 ...

  10. 解决:coursera 视频总是缓冲或者无法观看

    关于这个问题,网上有很多的答案,但是可能我是win10 最近才更新了的,网上的方法都不能完全解决,然后自己搜了哈,最后综合自己解决了.具体方法如下. 在开始菜单中打开运行命令,输入gpedit.msc ...