Caffe学习笔记二 Extracting Features

来源:互联网 发布:java 变量命名规则 编辑:程序博客网 时间:2024/05/29 16:08

根据薛开宇学习笔记以及Caffe官网整理。

Select data to run on

Step 1:做一个临时文件夹存放东西。

mkdir examples/_temp //在CAFFE_ROOT目录下
  • mkdir 命令能够创建一个目录。
mkdir 目录名

Step 2:为在images文件夹的照片生成一个文件列表。

 find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
  • find 命令详解
find pathname -options [-print -exec -ok]
 **pathname**:查找路径;-type:查找某一类型文件f:普通文件-exec:对匹配的文件执行所给的shell命令,形式为:#-exec   command   {} \;     -----将查到的文件执行command操作,{} 和 \;之间有空格.
  • > 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;
  • >>是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响;
  • echo命令的功能是显示文本或变量,默认输出为终端屏幕。

Step 3:将使用imagedatalayer预测标签之后的每一个文件名,所以添加一个0到每一行的末尾。

sed "s/$/ 0/" examples/_temp/temp.txt >examples/_temp/file_list.txt
  • s/re/string
    用string替换正则表达式re;
  • /sed$/匹配所有以sed结尾的行,dollar符号的作用即锚定行的结束。

Define the Feature Extraction Network Architecture

Step 1:定义特征提取网络结构
从一个数据截中减去均值图像对提高分类准确性很重要,因此从ILSVRC dataset中下载均值图像数据库。

./data/ilsvrc12/get_ilsvrc_aux.sh

Step 2: 使用其中的 data/ilsvrc212/imagenet_mean.binaryporto来定义网络结构。先将定义结构的文件复制到临时文件夹中。

cp examples/feature_extraction/imagenet_val.prototxt examples/_temp

接着进入imagenet_val/prototxt更改路径更改CAFFE_DIR的地方。
即将source与mean_file改为完整的路径。

Extract Features

Step 1:提取特征

./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb

我们提取的是fc7层的特征,即最高层的特征,当然也可选其他层,如conv5 or pool3.最后一个参数是数据的在最小批次。特征已被存到LevelDB examples/_temp/features中,可以被其他代码所调用。若出现“Check failed: status.ok() Failed to open leveldb examples/_temp/features”,则表示目录examples/_temp/features已存在,需要删除后再重新生成。

rm -rf examples/_temp/features/
  • rm -rf test2 会将 test2 子目录及子目录中所有档案删除,并且不用一一确认。

不过在我的电脑上面跑不了这个程序,不知道是不是没有GPU的原因…
这里写图片描述

0 0