caffe cifar10试跑问题总结

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC Semibold"; color: #454545 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px ".PingFang SC"; color: #454545 }
li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }
li.li3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC Semibold"; color: #454545 }
li.li4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }
span.s1 { font: 12.0px ".PingFang SC" }
span.s2 { font: 10.0px Menlo }
span.s3 { font: 12.0px "Helvetica Neue" }
span.s4 { font: 12.0px "Helvetica Neue"; color: #e4af0a }
span.s5 { font: 13.0px "Helvetica Neue" }
span.s6 { font: 12.0px ".PingFang SC"; color: #454545 }
span.s7 { color: #454545 }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }

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/

时间: 2024-10-09 19:57:26

caffe cifar10试跑问题总结的相关文章

caffe CIFAR-10官方文档中文版

我这20MB的网速都下不下来,我觉得你还是放弃这个模型训练吧,谈费劲,看看得了,我就直接机翻粘过来得了,懒得校对了. Alex的CIFAR-10教程,Caffe风格 Alex Krizhevsky的cuda-convnet详细介绍了模型定义,参数和培训程序,以便在CIFAR-10上获得良好的性能.这个例子再现了他在Caffe的结果. 我们将假设你已经成功编译了Caffe.如果没有,请参阅安装页面.在本教程中,我们假设您的caffe安装位于CAFFE_ROOT. 我们感谢@chyojn定义模型模式

win7+vs2013+caffe+cifar10+train+test

首先安装好显卡----已经装好了?普大喜奔!没装好?那就用cpu,也是一样的. 拷贝cudnn v5.0 头文件和库文件以及执行文件到cuda8中 -----------------------------准备工作-------------------------------------- git clone  https://github.com/BVLC/caffe.git git branch -a git checkout windows cmake-gui configure +  v

caffe实例二-cifar10上的实验

caffe安装之后可以跑的第二个实例是在cifar10数据集上,参见http://caffe.berkeleyvision.org/gathered/examples/cifar10.html 跟mnist的过程很类似: 1./data/cifar10/get_cifar10.sh 2./example/cifar10/create_cifar10.sh 注意这里生成的也是lmdb文件 3./example/cifar10/cifar10_quick_train.sh 这时候会发现存在问题:给的

caffe for windows 训练cifar10 及若干问题

声明:有部分内容转载至笑笑魔导师 1,准备cifar10数据库 cifar10数据库由60000张32*32 彩色图片 共10类 其中50000张训练 10000张测试 下载cifar10数据库:http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz 这是binary格式的,所以我们要把它转换成leveldb格式. 2,转换数据 在../caffe-windows/examples/cifar10文件夹中有一个 convert_cifar_d

在Caffe上运行Cifar10示例

准备数据集 在终端上运行以下指令: 1 cd caffe/data/cifar10 2 ./get_cifar10.sh 3 cd caffe/examples/cifar10 4 ./create_cifar10.sh 其中caffe是你的根目录. 此时会出现报错: 1 ./build/examples/cifar10/convert_cifar_data.bin: not found 但素! convert_cifar_data.bin 明明就在 build/examples/cifar10

Caffe for Windows 训练cifar10

我们学习Caffe提供的简单例程,目的是为了让初学者轻松上手,以examples/cifar10/为例,主要用于小图片的分类. 1 cifar10数据集 60000张32*32彩色图片,50000张训练,10000张测试 下载cifar10数据集:http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz 将下载好并解压好的数据存放于/data/cifar10/路径 下载好的原始数据是BINARY(二进制)格式的,需要转换成LMDB或LEVELD

使用caffe的cifar10网络模型训练自己的图片数据

由于我涉及一个车牌识别系统的项目,计划使用深度学习库caffe对车牌字符进行识别.刚开始接触caffe,打算先将示例中的每个网络模型都拿出来用用,当然这样暴力的使用是不会有好结果的- -||| ,所以这里只是记录一下示例的网络模型使用的步骤,最终测试的准确率就暂且不论了! 一.图片数据库 来源 我使用的图像是在项目的字符分割模块中分割出来的字符图像,灰度化并归一化至32*64,字符图片样本示例如下: 建立自己的数据文件夹 在./caffe/data/目录下建立自己的数据文件夹mine,并且在mi

caffe中cifar10的full_train模型出现nan的解决办法

caffe在cifar10 的example上给出了两个模型,一个是quick模式,一个是full模式,训练full模式时会出现loss=nan的错误(当然不会报错,不过出现这个结果就是bug) 自己google了一下,在github上找到了原因跟解决方案,原来是作者把用在cuda-convnet的模型照搬过来了,在caffe上的模型应该去掉LRN层,所以解决的方法很简单:将网络结构中所有的归一化层全部去掉,并修改下一层的bottom参数,然后就不会出现loss=nan的错误了. 当然,如果自己

学习笔记:Caffe上配置和运行Cifar10的示例

学习笔记:Caffe上配置和运行Cifar10的示例 CIFAR-10数据集含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来.包含50000张训练图片,10000张测试图片 http://www.cs.toronto.edu/~kriz/cifar.html 数据集的数据存在一个10000*3072 的 numpy数组中,单位是uint8s,3072是存储了一个32*32的彩色图像.(3072=