Caffe源码编译,win10+vs2015+Ninja,C++接口测试(mnist),Python接口测试(mnist),(坑爹篇)
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=048)
本文发布于 2017-12-19 12:26:21,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=048)
环境说明
date 2017.12.18
前言
首先为了帮队友在win下配置caffe,本人特意在win平台下折腾了一波。在此只想说一句话:个人认为,caffe编译Win比Linux更坑,更难,花了我接近一天的时间(我以前在Linux上配置过N次了)。
caffe windows 编译
注意事项(这才是精华,我就是因为这个才浪费了这一天时间)
1. 是否安装readme提供的符合要求的vs,cmake,ninja版本?
2. 是否安装了正确的python版本?
3. 对于VS来说,检查,你的电脑上应该只存在一个版本,而且此版本应该包含VC++的功能(包括MFC以及基础功能)(不理解就全部装上,绝对不吃亏,不上当,我就是因为节约空间,少装了一些东西,出问题了)
4. 检查python是否只有一个版本,建议安装anaconda?
5. 检查自己的环境变量,对于cl.exe,python.exe,cmake.exe,ninja.exe是否找到?
6. 最后,不想折腾就尽量按照帮助文档,一个钉子一个眼的做法,这样会少很多错误?
- 下载caffe,切换分支,运行脚本,一切顺利,你就是幸运的那个人。执行以下命令以前,保证注意事项都看了,想要加速的,自己确定自己的cuda和cudnn配置好了。
git clone https://github.com/BVLC/caffe.git
cd caffe
git checkout windows
./scripts/build_win.cmd
(喝口水)
- WindowsDownloadPrebuiltDependencies.cmake 此脚本报错,报找不到服务器
原因:主要是天朝牌防火墙
方法:
1 开vpn或者其他工具FQ。
2 自己想办法去下对应的文件(自己分析以下这段文字),放到.caffe/download目录(一般在用户目录下)
我的下载地址:https://github.com/willyd/caffe-builder/releases/download/v1.1.0/libraries_v140_x64_py35_1.1.0.tar.bz2(对应vs2015,python3.5)
set(DEPENDENCIES_VERSION 1.1.0)
set(DEPENDENCIES_NAME_1800_27 libraries_v120_x64_py27_${DEPENDENCIES_VERSION})
set(DEPENDENCIES_NAME_1900_27 libraries_v140_x64_py27_${DEPENDENCIES_VERSION})
set(DEPENDENCIES_NAME_1900_35 libraries_v140_x64_py35_${DEPENDENCIES_VERSION})
set(DEPENDENCIES_URL_BASE https://github.com/willyd/caffe-builder/releases/download)
set(DEPENDENCIES_FILE_EXT .tar.bz2)
set(DEPENDENCIES_URL_1800_27 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1800_27}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1800_27 "ba833d86d19b162a04d68b09b06df5e0dad947d4")
set(DEPENDENCIES_URL_1900_27 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1900_27}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1900_27 "17eecb095bd3b0774a87a38624a77ce35e497cd2")
set(DEPENDENCIES_URL_1900_35 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1900_35}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1900_35 "f060403fd1a7448d866d27c0e5b7dced39c0a607")
- .\caffe/export.hpp(7): fatal error C1083: 无法打开包括文件: “caffe/include_symbols.hpp”: No such file or directory
此文件在caffe/build 目录,自己拷贝到caffe/include/caffe/下,就好了。
这个bug主要是由于没有把build目录传递给cl.exe,导致找不到文件。
(参考此问题https://github.com/BVLC/caffe/issues/5840,我也提交了可能的解决方法,希望帮助你们)
- caffe mnist数据集的train 和test
首先请下载mnist数据集,这里我打包上传了四个文件,下载地址。http://download.csdn.net/download/u011728480/10163922(下载地址参考caffe/data/mnist/get_mnist.sh文件,在原生的win下,wget是找不到的,所以,自己去下载吧)
如图
# 做以下操作时,保证caffe已经正常编译通过。
# 首先把数据集转为lmdb格式存放,这是caffe支持的存储格式。
# 转换:
./convert_mnist_data.exe ../../../data/mnist/train-images-idx3-ubyte ../../../data/mnist/train-labels-idx1-ubyte ./mnist_train_lmdb --backend=lmdb
./convert_mnist_data.exe ../../../data/mnist/t10k-images-idx3-ubyte ../../../data/mnist/t10k-labels-idx1-ubyte ./mnist_test_lmdb --backend=lmdb
# 生成如图A两个文件夹
# train:
./build/tools/caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
# 生成如图B四个文件
# 结果如图C,迭代10000,准确率99.03%.
# test:
./build/tools/caffe.exe test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel -gpu=0
# 测试结果如图D,测试集,准确率98.56%
图A
图B
图C
图D
- Caffe Python 接口测试
(我用的anaconda环境,开vpn执行,
conda config --add channels conda-forge
conda config --add channels willyd
conda install --yes cmake ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz)
把caffe/python/caffe目录放到python的site-packages目录。
把caffe/python目录添加到PYTHONPATH环境变量
准备一个py文件吧,迭代10000次。
import caffe
caffe.set_device(0)
caffe.set_mode_gpu()
solver = caffe.SGDSolver('examples/mnist/lenet_solver.prototxt')
iter = solver.iter
while iter<10000:
solver.step(1)
iter = solver.iter
input_data = solver.net.blobs['data'].data
loss = solver.net.blobs['loss'].data
accuracy = solver.test_nets[0].blobs['accuracy'].data
print('iter:', iter, 'loss:', loss,'accuracy:',accuracy)
注意:这里很有可能要报一个错误,PIL模块中的Image模块加载失败,提示核心提示:from PIL import Image , DLL 加载失败。我把PIL模块降级到4.2左右就可以了,具体看你python版本,不要用最新的,不知道降到哪个版本就自己一个一个的降级。
后记
说真的,没有特别需求,别在windows下用源码折腾caffe,太坑。不喜欢折腾的人可以去下载已经编译好的二进制文件。最后说一句,在Linux下用caffe真的很简单的,点F*ck。
参考文献
- 无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
Caffe源码编译,win10+vs2015+Ninja,C++接口测试(mnist),Python接口测试(mnist),(坑爹篇)的更多相关文章
- Ubuntu 17.04版本下,opencv进行源码编译安装
本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...
- win10 vs2015源码编译opencv、opencv_contrib、Tesseract
1.软件包准备 opencv源码包地址: 官网 github opencv_contrib源码包地址: github Tesseract源码包地址: ...
- CEF源码编译
CEF的构造说明:https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding chromium的源码地址:https://c ...
- 源码编译Redis Desktop Manager ---(转载)
精美文章转载: 版权声明:本文作者为「Kany.Wang」,本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议.转载请注明出处!原文链接:https://kany.me/20 ...
- 源码编译Redis Desktop Manager | 懒人屋
原文:源码编译Redis Desktop Manager | 懒人屋 源码编译Redis Desktop Manager 2.3k 字 10 分钟 2019-10-10 文章背景 本 ...
- caffe源码学习之Proto数据格式【1】
前言: 由于业务需要,接触caffe已经有接近半年,一直忙着阅读各种论文,重现大大小小的模型. 期间也总结过一些caffe源码学习笔记,断断续续,这次打算系统的记录一下caffe源码学习笔记,巩固一下 ...
- Caffe源码中caffe.proto文件分析
Caffe源码(caffe version:09868ac , date: 2015.08.15)中有一些重要文件,这里介绍下caffe.proto文件. 在src/caffe/proto目录下有一个 ...
- caffe源码学习
本文转载自:https://buptldy.github.io/2016/10/09/2016-10-09-Caffe_Code/ Caffe简介 Caffe作为一个优秀的深度学习框架网上已经有很多内 ...
- 鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗 | 百篇博客分析OpenHarmony源码 | v61.02
百篇博客系列篇.本篇为: v61.xx 鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...
- windows10源码编译llvm
准备 cmake, 我目前使用的版本是3.18 llvm 源码, 我下载的是 11.0 我已经具备Vs2015和Vs2017的开发环境. debug模式编译需要较多内存和较多硬盘存储空间. (debu ...
随机推荐
- 案例:OGG目标端进程ABENDED处理
源端环境:RHEL 6.5 + Oracle 11.2.0.4 RAC + OGG 19.1.0.0.4 目标端环境:RHEL 7.6 + Oracle 19.3 + OGG 19.1.0.0.4 故 ...
- vue 导出多页pdf, window.print()实现
如果你对分页打印没思路,而网上的现成方案又不适合,不妨进来看看,也许会对你有帮助. 由于工作环境是局域网,对于插件的安装有限制,所以排除了jspdf + html2canvas的实现方式:采用wind ...
- MySQL查看bin_log日志
有这样一段业务逻辑,首先保存业务数据,然后发送报文,最后确认报文回来以后更新业务数据.伪代码大概是这样的: /** * 保存数据,并调用发送报文方法 */ public void save() { / ...
- STM32F407VET6烧录出现flash download failed target dll has been cancelled
今天在通过stlink烧录一个长时间未用的STM32F407VET6 Black Board的时候, 出现错误 Internal command error Flash download failed ...
- 大米新闻微信小程序和Springboot新闻管理系统项目源码
介绍 本项目分为大米news小程序端和springboot新闻管理系统后台项目.小程序主要用来新闻展示,后台管理系统用于提供相关新闻API. 项目源码 参考:https://www.bilibili. ...
- 微信小程序云开发项目-个人待办事项-04【我的】模块开发
上一篇: 微信小程序云开发项目-个人待办事项-03[主页]模块开发 https://blog.csdn.net/IndexMan/article/details/124538576 模块开发步骤 本篇 ...
- 敏感信息泄露之如何隐藏IIS服务器名称和版本号
1.问题说明 请求IIS部署的网站可以发现响应头中暴露了IIS服务器名称/版本号. 漏洞等级:中 2.解决方案 想办法隐藏掉这部分信息. 2.1 下载并安装微软官方IIS扩展插件 URL Rewrit ...
- macOS Monterey 与以下电脑兼容下载操作流程解析
有时在开发iOS应用时我们时常遇到各种情况,比如手机升级了Xcode不支持这时候需要安装xcode但是xcode需要依奈相应系统本人小编整理了这种情况无法解决问题. 首相打开苹果标志进入到下面界面 进 ...
- Fasfdfs搭建
目录 介绍 参考 tracker-server: storage-server: group: meta data: 部署 FastDfs服务架构图 本地部署服务 安装 libfastcommon 和 ...
- 从零开始写 Docker(四)---使用 pivotRoot 切换 rootfs 实现文件系统隔离
change-rootfs-by-pivot-root.png 本文为从零开始写 Docker 系列第四篇,在mydocker run 基础上使用 pivotRoot 系统调用切换 rootfs 实现 ...