caffe cifar10试跑问题总结

caffe cifar10试跑问题总结

[daniel]

  • 写了一个脚本可以直接用来添加环境变量:/Users/songdanzju/daniel_script/export_for_ananconda.sh

#! /bin/bash

export PATH=~/ananconda/bin:$PATH 

export DYLD_FALLBACK_LIBRARY_PATH=~/anaconda:~/anaconda/lib:/usr/local/lib:/usr/lib 

 

 

  • 准备数据库

cd $CAFFE_ROOT   #切换目录到自己的caffe-master的安装目录下

sudo ./data/cifar10/get_cifar10.sh

sudo ./examples/cifar10/create_cifar10.sh

> 执行的时候路径有问题,所以把get_cifar10.sh和create_cifar10.sh 拷贝到caffe文件夹下,并在.sh文件中添加了环境变量, 通过在脚本中添加了语句:sh /Users/songdanzju/daniel_script/export_for_ananconda.sh 实现,再cd $CAFFE_ROOT,执行sudo ./get_cifar10.sh和sudo ./create_cifar10.sh

 

运行之后将会在examples/cifar10中出现数据库文件./cifar10-leveldb 和数据库图像均值二进制文 件./mean.binaryproto 

> 由于我电脑上同时安装了python2.7和python3.5,所以在上一步会报错,所以在caffe的Makefile.config文件中关闭了leveldb,然后重新编译了caffe,解决了问题。这一步测试出现的是两个分开的数据库文件:测试和训练,

查看~/caffe/examples/cifar10/中出现:

cifar10_test_lmdb

cifar10_train_lmdb

mean.binaryproto 

 

 

> 环境变量问题:caffe在make all之前要添加环境变量,另外试跑cifar10时是在sudo下执行的脚本

>由于sudo执行的~/caffe/ ,所以要在环境变量需要在.sh文件中单独添加:sh daniel_script/export_for_ananconda.sh 

 

  • 模型说明

该 CNN 由卷积层,POOLing 层,非线性变换层,在顶端的局部对比归一化线性分类器组成。 该模型的定义在 CAFFE_ROOT/examples/cifar10/cifar10_quick_train.prototxt 中, 可以进行修改。其实后缀为 prototxt 很多都是用来修改配置的

> 由于编译Caffe的时候没有用GPU, 所以做训练的时候,训练和测试的脚本中的solver_mode要修改为CPU

即cifar10_quick_solver.prototxt和cifar10_quick_solver_lr1.prototxt文件的最后

 

  • 训练和测试

训练这个模型非常简单,当我们写好参数设置的文件 cifar10_quick_solver.prototxt 和定义的 文件 cifar10_quick_train.prototxt 和 cifar10_quick_test.prototxt 后,运行 train_quick.sh 或者在 终端输入下面的命令:cd $CAFFE_ROOT/examples/cifar10
./train_quick.sh
即可,train_quick.sh 是一个简单的脚本,会把执行的信息显示出来,培训的工具是 train_net.bin,cifar10_quick_solver.prototxt 作为参数。

> 同样是路径问题,所以拷贝了train_quick.sh到caffe文件夹下,并执行脚本添加环境变量:/Users/songdanzju/daniel_script/export_for_ananconda.sh

 

 

**** 读书笔记 2 用一个预训练模型提取特征 

> 这一篇比较详细,参考[http://blog.csdn.net/u013634684/article/details/50143843],文章中直接写了脚本执行这一步,可以参考,我仿照他的脚本写了~/daniel_script/extract_features.sh,还未完成。

 

> 特征提取文件:build/tools/extract_features.bin

 

 

 

2.1 制作一个数据库先做一个临时文件夹存放东西。mkdir examples/_temp 

find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
我们将使用 imagedatalayer 预计标签之后的每一个文件名,所以让我们添加一个 0 到每一行 的末尾sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt 这样,我们将得到两个文件 temp.txt 和 file_list.txt 

 

2.2.定义特征提取网络结构 在实践中,从一个数据集中减去均值图像对于提高分类准确性很重要,因此从 ILSVRC dataset 中下载均值图像数据库 

data/ilsvrc12/get_ilsvrc_aux.sh
我们将使用其中的 data/ilsvrc12/imagenet_mean.binaryproto 去定义网络结构。 将定义结构的文件 cope 到我们的临时文件夹。 

cp examples/feature_extraction/imagenet_val.prototxt examples/_temp 然后,我们进入 imagenet_val.prototxt 更改路径。更改其中$CAFFE_DIR 的地方 下图是我做的改动。

 

  transform_param {

    mirror: false

    crop_size: 227

    mean_file: "/Users/songdanzju/caffe/data/ilsvrc12/imagenet_mean.binaryproto"

  }

  image_data_param {

    source: "/Users/songdanzju/caffe/examples/_temp/file_list.txt"

    batch_size: 50

    new_height: 256

    new_width: 256

  }

 

 2.3.提取特征

执行指令:(这是一条指令)

build/tools/extract_features.bin examples/imagenet/caffe_reference_imagenet_model examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 lmdb 

> 执行的时候出错:dyld: Library not loaded … Reason: Image not loaded,环境变量问题,export DYLD_FALLBACK_LIBRARY_PATH=~/anaconda:~/anaconda/lib:/usr/local/lib:/usr/lib  ,解决。[http://stackoverflow.com/questions/17703510/dyld-library-not-loaded-reason-image-not-loaded]

> 关于permission denied 的问题:[http://www.aichengxu.com/view/2488942], 权限问题:chmod 777 filename(修改为最高权限),ls -l filename查看文件权限,或者sudo su进入root

> 问题:examples/imagenet/中缺少预训练模型(也就是已经训练好的模型)caffe_reference_imagenet_model ,下载位置:[http://dl.caffe.berkeleyvision.org/], copy到examples/imagenet/目录下

 

其中 fc7 是最高层的特征,我们也可以使用其他层提取,像 conv5 或 pool3 最后的参数是数据的批次特征保存在 LevelDB examples/_temp/features ,可以运用到其他代码了。 这里可以发现,特征文件中 5 个文件和 cifar10 中的 leveldb 是相似的。 _temp 下 features

 

 

Cifar10 下特征数据库 

 

因此,这是我们训练时组建模型时必要的文件。  

> 我的examples/_temp/features/下是两个文件:data.mdb lock.mdb,我的examples/cifar10/cifar10_train_lmdb/ 下两个文件:data.mdb lock.mdb

> 在这个过程中如果遇到如下错误:

 

表示参数不够,检查参数个数是否对。

其中上面的第5个参数,表示提取特征数据的batch的数目,解释下,网络中我们的batch_size,表示一次提取特征的图片数,而batch就是总的图片数除以batch_size取整即可。

即提取的特征是batch_size的整数倍,如果图片数不能整除batch_size网络会自动从开始的图片中自动补入。

 

 

 

**** 学习笔记 3 用自己的数据训练和测试“CaffeNet 

参考一篇很详细的教程:caffe学习笔记6--训练自己的数据集(带脚本),这里没有详细写自己的过程

http://www.voidcn.com/blog/thystar/article/p-5782103.html

 

> 制作自己的数据集:参考资源:

http://blog.csdn.net/yhl_leo/article/details/50801226

http://blog.csdn.net/deeplearninglc007/article/details/40086503

 

本学习笔记有点脱离了原文,原文是用 ImageNet1000 类的数据库,而因为电脑内存不 足,只能自己模仿做一个小的数据库进行下去。 

本来教程是假设已经下载了 ImageNet 训练数据和验证数据(非常大),并以下面的格式 存储在磁盘: 

/path/to/imagenet/train/n01440764/n01440764_10026.JPEG /path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG 

 

里面是各种的分类图。

  因为实在太大,所以我们改为模仿搭建自己的数据库。

在 data 中新建文件夹 myself

 

> 我利用整理好的trainset(共400张,里面可以有不同categroy的文件夹),valset(247张),testset,执行~/Desktop/test/build_train_txt, ~/Desktop/test/build_val_txt, ~/Desktop/test/build_test_txt, 制作图片路径与对应标签文件:train_txt, val_txt, test_txt

 

我的数据集路径

训练样本存放路径

trainset: /Users/songdanzju/caffe/data/myself/train/trainset

train.txt: /Users/songdanzju/caffe/data/myself/train/train.txt

交叉验证样本存放路径

valset /Users/songdanzju/caffe/data/myself/train/valset

val.txt /Users/songdanzju/caffe/data/myself/train/val.txt

测试样本存放路径

testset: /Users/songdanzju/caffe/data/myself/test/testset

test.txt: /Users/songdanzju/caffe/data/myself/test/test.txt

 

> 生成lmdb文件的时候出现问题:

 

原因:train_lmdb 和val_lmdb文件is already exists,删掉,再运行,解决。

 

> 

 

 

 

读书笔记 4 学习搭建自己的网络 MNIST caffe 上进行训练与学习 

——————————————————————————————————

> 问题:执行./examples/mnist/create_mnist.sh时候出错:

WARNING: Logging before InitGoogleLogging() is written to STDERR

F0111 15:36:44.385371 2933224384 convert_mnist_data.cpp:144] This example requires LevelDB and LMDB; compile with USE_LEVELDB and USE_LMDB.

 

准备重新编译caffe,结果cmake时出错:

CMake Error at /usr/local/Cellar/cmake/3.7.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:138 (message):

  Could NOT find vecLib (missing: vecLib_INCLUDE_DIR)

 

解决方法:

open the CMakeCache.txt file,
find this line:
//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/System/Library/Frameworks/vecLib.framework/Headers

change to:
//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/vecLib.framework/Headers

然后,

(caffe_root)

cd build

cmake ..

make

 

______________________________________________

 

> 问题:执行net.set_phase_test()发现错误:

AttributeError                            Traceback (most recent call last)

<ipython-input-20-23af18ee8508> in <module>()

----> 1 net.set_phase_test()

      2 net.set_mode_cpu()

 

AttributeError: 'Classifier' object has no attribute 'set_phase_test'

解决:import caffe 然后dir(caffe)发现没有set_phase_test,别人的做法:I was able to remove it from my python classify script and everything still seemed to work,我删除以后发现net.set_mode_cpu()同样报错,于是改成caffe.set_mode_cpu(),解决。

 

> 可视化图像特征的代码:filter_visualization.ipynb

https://github.com/intelcaffe/caffe-old/blob/master/examples/filter_visualization.ipynb

各部分源码(全,各种ipynb都有):http://nbviewer.jupyter.org/github/BVLC/caffe/tree/master/examples/  

 

 

 

 

 

转载于:https://www.cnblogs.com/songdanzju/p/7465574.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

paddlepaddle-VisualDL2.0对项目进行可视化调参

如果需要更好的阅读体验&#xff0c;可以在ai studio上fork该项目&#xff1a;使用VisualDL2.0对项目进行可视化调参 调参是深度学习必须要做的事情。数据和模型处理好后&#xff0c;需要进行模型训练&#xff0c;这个时候就需要进行调参了。一种好的参数配置&#xff0c;可以…

第一、二次实训作业

1.编写程序&#xff1a; 声明一个整型变量a&#xff0c;并赋初值5&#xff0c;在程序中判断a是奇数还是偶数&#xff0c;然后输出判断的结果。 package 判断奇偶; public class liux { public static void main(String[] args){ int x5; if(x%20){ System.out.println("这…

推荐一款作图工具

以前看到别人的时序图觉得好好看&#xff0c;然后就想这都是用的什么工具画出来的呢&#xff1f;然后看到了一个师兄用的这个工具&#xff0c;真的挺好用的。这是是试用版的界面。类图我觉着看起来效果都挺不错的。转载于:https://www.cnblogs.com/tuhooo/p/8874410.html

【codeforces】【比赛题解】#849 CF Round #431 (Div.2)

cf的比赛越来越有难度了……至少我做起来是这样。 先看看题目吧&#xff1a;点我。 这次比赛是北京时间21:35开始的&#xff0c;算是比较良心。 【A】奇数与结束 "奇数从哪里开始&#xff0c;又在哪里结束&#xff1f;梦想从何处起航&#xff0c;它们又是否会破灭呢&#…

PaddleDetection支持的数据格式

PaddleDetection支持的数据格式 目前#PaddleDetection支持43种数据格式&#xff1a;coco voc widerface。在这里我们主要说明一下如何使用自定义COCO进行目标检测、实例分割&#xff1b;如何使用自定义VOC数据集进行目标检测。在PaddleDetection新的版本中&#xff0c;我们将数…

[dts]Device Tree机制【转】

转自&#xff1a;https://www.cnblogs.com/aaronLinux/p/5496559.html 转自&#xff1a;http://blog.csdn.net/machiner1/article/details/47805069 ------------------Based on linux 3.10.24 source code 参考/documentation/devicetree/Booting-without-of.txt文档 目录 1.…

AntiSamy测试

AntiSamy为owasp针对xss提供的处理库&#xff0c;可以配置xml策略来决定过滤的内容&#xff0c;比如标签、属性、css等&#xff0c;自定义策略给开发人员使用成本比较高&#xff0c;AntiSamy也提供了几个内置的策略&#xff0c;其安全级别也不同&#xff0c;过滤的内容也不一样…

1625 数字金字塔

1625 数字金字塔 链接&#xff1a;http://codevs.cn/problem/1625/ USACO 时间限制: 1 s空间限制: 128000 KB题目描述 Description考虑在下面被显示的数字金字塔. 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大. 每一步可以走到下方的点也可以到达右…

ubuntu下的能安装的百度网盘的资源最新网址

Index of /deepin/pool/non-free/d/deepin.com.baidu.pan/

C# 匿名委托、匿名方法、匿名对象、Lambda表达式

C# 匿名委托、匿名方法、匿名对象、Lambda表达式 原文:C# 匿名委托、匿名方法、匿名对象、Lambda表达式一、匿名类型可通过使用 new 运算符和对象初始值创建匿名类型。示例&#xff1a;var v new { Name "Micro", Message "Hello" };var v new[] { …

【9018:1956】线段树1

问题 D: 【模板】线段树1 时间限制: 1 Sec 内存限制: 512 MB提交: 80 解决: 40[提交][状态][讨论版]题目描述 给定一个无序数列&#xff0c;有四种操作&#xff1a; 1.令数列中的某个数加上某个数 2.求一个区间的和 3.查询一段区间内的最大值&#xff1b; 4.查询一段区间内的…

c++调用函数的dll

在工程项目中&#xff0c;为了不暴露源代码和避免严重耦合&#xff0c;所以将代码封装成 .dll二进制文件&#xff0c;以供项目调用。 这几天&#xff0c;也是在看这些封装dll&#xff0c;并使用Java中的JNA调用c的dll链接库中的函数&#xff0c;做个笔记&#xff01; 1、创建…

SoJpt Boot 2.2-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 在Spring Boot框架下使用Jfinal特性极速开发,可以在Spring Boot中向使用Jfinal一样使用Enjoy、Aop、Controller等一系列方法(如: getFile(), renderFile....),以及ActiveRecord SoJpt Boot&…

组合数学--约瑟夫环问题 Josephus

约瑟夫斯问题&#xff08;有时也称为约瑟夫斯置换&#xff09;&#xff0c;是一个出现在计算机科学和数学中的问题。在计算机编程的算法中&#xff0c;类似问题又称为约瑟夫环。 有n个囚犯站成一个圆圈&#xff0c;准备处决。首先从一个人开始&#xff0c;越过k-2个人&#xff…

3轴机器人各关节运动学建立,python编程,非常容易理解

分类&#xff1a;机器人学 一、问题描述 如右图所示的三自由度机械臂&#xff0c;关节1和关节2相互垂直&#xff0c;关节2和关节3相互平行。如图所示&#xff0c;所有关节均处于初始状态。 要求: (1) 定义并标注出各关节的正方向&#xff1b; (2) 定义机器人基坐标系&#x…

ASP.Net中页面传值的几种方式

大致概括一下&#xff0c;ASP.NET 页面之间传递值得方式大致可以分为如下几种&#xff1a;Request.QueryString["name"],Request.Form("name"),Session,Cookie,Cache,Application,Server.Transfer,Database,HttpContext的Item属性&#xff0c;Files,DataBa…

Win 10 源码一览:0.5T 代码、400 万文件、50 万文件夹

Windows 操作系统本身是不开源的&#xff0c;但是近日微软内核工程师 Axel Rietschin 发表了一篇博客&#xff0c;带大家一窥了 Windows 10 内核的魅力。 Axel 介绍&#xff0c;Windows 10 与 Windows 8.x、7、Vista、XP、2000 和 NT 的代码库是相同的&#xff0c;其中每一代都…

老齐python-基础3(列表)

1、定义一个列表 >>> a [] #创建一个空列表 >>> type(a) #查看数据类型 <class list> >>> bool(a) #判断非空 False >>> print(a) [] >>> a [2,3,tajzhang,] >>> a [2, 3, tajzhang] >&…

UWP 响应键盘组合快捷键

方法1&#xff1a;响应Ctrl&#xff1f;快捷键 首先在load事件或者keydown事件内注册事件 public MainPage(){this.InitializeComponent();// Register for accelerator key events used for button hotkeysWindow.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated Dis…

NDK 开发实战 - 封装 java 层 sdk 模型

关于 Ndk 开发&#xff0c;网上的资料比较少&#xff0c;这方面的书籍也不多。因为其涉及的知识非常广&#xff0c;时常有哥们问我&#xff0c;东西那么多到底要学到什么程度呢&#xff1f;到底应该怎么学&#xff1f;这期我给大家来做一个简单回答&#xff0c;首先单纯站在 An…