windows10下编译 fast rcnn_windows fast rcnn-程序员宅基地

技术标签: C++  机器学习  caffe  深度学习  fast rcnn  

Windows下训练fast rcnn

一.准备

1.     caffe-master:windows的caffe安装包。https://github.com/Microsoft/caffe

这个模型对caffe有要求,需要roi_pooling这个层,所以你的去caffe/src/caffe/layers看下是否有着两个文件。如果没有这两个文件,后面会遇到错误,如图:


2.     我的caffe是配置的无GPU的,caffe配置可以看下我的博客。

http://blog.csdn.net/qq_34220460/article/details/59112649

3.     fast r-cnn:https://github.com/rbgirshick/fast-rcnn

4.     下载模型文件,也就是fast rcnn训练完后的模型文件。其实在fast rcnn文件中有脚本下载,但那是linux下的脚本,我们是在windows下。我给个别人的链接:http://pan.baidu.com/s/1kTzQYgR。下载完成后,请将3个文件夹放置在fast_rcnn/data中。

5.     然后是配置python接口,这个自己去配置下吧!

6.     打开cmd,输入sudo pip install cython和 sudo pipinstall easydict来安装cython和easydict,如果你使用的是Anaconda,cython默认是安装上了的。 
如果提示安装失败,可能是由于你的pip的版本过低,请先使用 
pip install pip --upgrade 
升级你的pip。

7.     还得再去安装opencv,去opencv官网下载并安装windows下的版本,链接:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.2.0/opencv-3.2.0-vc14.exe/download

还要配置opencv的环境,将opencv的bin添加到系统环境变量中,最好看下链接,因为还有其他的要配置:http://jingyan.baidu.com/article/c45ad29c3e0e2d051753e204.html


不知这个,我们还要将opencv/build/python/2.7/x64 下的从cv2.pyd复制到python/libs/site-packages下,因为我们后面需要cv2这个模块,否则会报错,说no modules named cv2.

 

二.编译

  1.将caffe_master/Build/x64/Relase/pycaffe目录下的caffe ,复制到fast_rcnn/caffe-fast-rcnn中。

 2.用文本编辑器打开fast_rcnn/lib/utils/nms.pyx,将第25行的np.int_t修改为np.intp_t。

 3. 用文本编辑器打开fast_rcnn/lib/setup.py,将第18行和23行的 
"-Wno-cpp", "-Wno-unused-function"指令删除,只留下空的中括号[]即可。

4.  打开cmd,定位至fast_rcnn/lib目录中,执行pythonsetup.py install。 
如果提示Unable to find vcvarsall.bat的话,请输入以下指令: 
VS2012:SET VS90COMNTOOLS=%VS110COMNTOOLS% 
VS2013:SET VS90COMNTOOLS=%VS120COMNTOOLS% 
setup.py安装完成后,到python_root/Lib/site-packages/utils中可以找到两个文件cython_bbox.pyd和cython_nms.pyd,把这两个文件复制到fast_rcnn_root/lib/utils中。

5. 定位至fast_rcnn,执行python tools/demo.py,等待demo的结果吧!

 

三.问题解决

看似就上面这一点步骤,其实我们也是经过许多错误之后才总结出来的,我们也是有努力的。

1.     编译过程中,曾经遇到 no module named cython esaydict and cv2

这个就是上面你没有安装这些依赖包,在opecv的环境变量配置好了,可以到opencv\build\python\2.7\x64目录下看到cv2,如图:


2.     在此之后,就是上面所讲的错误。

如果提示Unable to find vcvarsall.bat的话,请输入以下指令: 
VS2012:SET VS90COMNTOOLS=%VS110COMNTOOLS% 
VS2013:SET VS90COMNTOOLS=%VS120COMNTOOLS% 

3.     就是遇到Check failed: registry.count(type) == 1 (0 vs. 1) Unknownlayer type: ROIPooling,如图:


,这个就有了前面为啥必须要有那两个文件,因为在windows下那两个文件没有被编译,所以我们需要把它加入到libcaffe下,cpp文件加入到src,。cu 文件加入到cu下去,还有就是加入头文件,把caffe目录下include/caffe/layers/roi_pooling_layer.hpp加入到include下,如图:


4.如果是no module named cv2, 请按照我们将的配置opencv那样配置,ok!!!

最后再把所有项目进行重新编译。

或许有的人做到了这一步,还是出错了,为什么呢?

或许你跟我一样,被当初的python配置坑了,当时测试python是否成功,不是有import caffe吗?import caffe成功就说明python接口配置成功,我当时是按照网上的一个办法,把这个 caffe master/build/x64/release/pycaffe下的caffe文件复制到了Python安装路径的Libs/site-packages下了,这样importcaffe成功了,但是没有想到的是后面加入了两个文件了,导致编译后的caffe 比之前的caffe多了roi_pooling layer,所以我们要重新把caffe复制到python安装路径的Libs/site-packages下,更新原来的caffe.  如图:


这个时候等结果吧!

结果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34220460/article/details/71506529

智能推荐

Intelli IDEA java调用DLL库_idea打开dll文件-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏11次。Intelli IDEA创建java工程加载dll库_idea打开dll文件

时间序列预测基础教程系列(13)_归一化和标准化的区别与方法(Python)_对daily-minimum-temperatures中的数据进行处理-程序员宅基地

文章浏览阅读1.3w次,点赞10次,收藏51次。导读:数据的预处理方法有两种,分别是归一化和标准化什么时候用归一化?什么时候用标准化?  (1)如果对输出结果范围有要求,用归一化。  (2)如果数据较为稳定,不存在极端的最大最小值,用归一化。  (3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。正文:完成本教程后,您将了解:使用标准化的数据规范化和期望的局限性。 需要什么参数以..._对daily-minimum-temperatures中的数据进行处理

Scala日期操作、获取当前时间、获取前一天时间、获取两日期时间差、获取两日期间所有日期_scala获取dt.format前一天-程序员宅基地

文章浏览阅读7.2k次,点赞4次,收藏12次。获取当前时间var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")var cal: Calendar = Calendar.getInstance()val nowday = dateFormat.format(cal.getTime())println(nowday)获取前1天日期val date = "2020-09-13"val myformat = new SimpleDateFormat("_scala获取dt.format前一天

ACM/ICPC WORLD FINAL 2015 A题_2015 icpcworld final-程序员宅基地

文章浏览阅读1k次。Fatima Cynara is an analyst at Amalgamated Artichokes (AA). As with any company, AA has had some very good times as well as some bad ones. Fatima does trending analysis of the stock prices for AA, and_2015 icpcworld final

【论文阅读】Deep Learning Workload Scheduling in GPU Datacenters:Taxonomy, Challenges and Vision-程序员宅基地

文章浏览阅读266次,点赞2次,收藏2次。论文阅读笔记Gao W, Hu Q, Ye Z, et al. Deep Learning Workload Scheduling in GPU Datacenters: Taxonomy, Challenges and Vision[J]. 讨论了数据中心负载作业的特征以及相关工作_deep learning workload scheduling in gpu datacenters: taxonomy, challenges a

Linux运维实战:CentOS7.6操作系统(计划任务/日志/系统启动/网络管理)_centos 7.6 计划任务-程序员宅基地

文章浏览阅读1.6k次。1. Linux计划任务与日志的管理2. Linux系统启动原理及故障排除3. Linux网络管理技术_centos 7.6 计划任务

随便推点

C++ vector中resize与reserve的比较_c++ 中的vector resize reserve 的区别-程序员宅基地

文章浏览阅读1.4w次,点赞3次,收藏5次。在介绍resize()与reserve()函数之前,可以先简单了解一下vector1、resize()既修改capacity大小,也修改size大小2、reserve()只修改capacity大小,不修改size大小_c++ 中的vector resize reserve 的区别

损失函数SSIM (structural similarity index) 的PyTorch实现_pytorch ssim-程序员宅基地

文章浏览阅读4w次,点赞33次,收藏182次。SSIM介绍结构相似性指数(structural similarity index,SSIM), 出自参考文献[1],用于度量两幅图像间的结构相似性。和被广泛采用的L2 loss不同,SSIM和人类的视觉系统(HVS)类似,对局部结构变化的感知敏感。SSIM分为三个部分:照明度、对比度、结构,分别如下公式所示:将上面三个式子汇总到一起就是SSIM:其中,上式各符号分..._pytorch ssim

小白学习HigherHRNet代码_higherhrnet代码分析-程序员宅基地

文章浏览阅读135次。每个节点都可以执行一部分训练工作,例如处理一部分的训练数据和更新模型的权重。这个函数的目标是将分布式训练的各个环节组织起来,从模型构建、数据加载、训练循环、学习率调整到模型保存,确保训练过程顺利进行。通道数是用来表示模型中不同层次的特征图(feature maps)的维度,它影响着模型的参数量、计算复杂度以及模型的性能。初始化分布式训练环境,包括分布式训练节点数量、分布式训练的进程与 GPU 分配等。根据训练效果,保存模型的检查点,包括当前状态和最好的状态。根据配置中的模型名称,调用相应的函数构建模型。_higherhrnet代码分析

实习日志(2)-程序员宅基地

文章浏览阅读675次,点赞2次,收藏3次。2021.07.12 星期一 新的星期开始,休息过两天之后,斗志满满。 今天先接触了递归,但由于之前学过,所以就一带而过了,在有些计算的时候需要考虑最优良的算法,这会使计算速度大大提升。接着又学习了词法环境,变量就是特殊内部对象的属性,与当前正在执行的代码块有关,操作变量实际上是操作该对象的属性。闭包就是指内部函数都可以访问其所在外部函数中被声明的变量和参数。这个应该是要记住,以后面试可能会被问到。还有函数自定义...

UG使用技巧(自用)_ug教程 博客-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏40次。工作一年的UG使用笔记,一些基本的技巧,方便以后回顾。_ug教程 博客

Spring使用Spel表达式获取参数值-程序员宅基地

文章浏览阅读4.1k次。一、依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 </dependency> 5 6 <!-..._spel 怎么取jsonobject的值

推荐文章

热门文章

相关标签