Caffe学习笔记2-用一个预训练模型提取特征

本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权

欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing

http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html

制作一个数据库

先做一个临时文件夹

mkdir examples/_temp

为待处理的文件生成一个文件列表,这些图片在examples/images文件夹下

find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt

我们将使用预计标签之后的每一个文件名,故需要在每一行后面加0

sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt

定义特征提取的网络结构

在实际运用中,把分类图片减去均值图像,对提高分类准确率具有很重要的意义,下载ILSVRC的均值文件

./data/ilsvrc12/get_ilsvrc_aux.sh

我们将在网络定义模型中使用data/ilsvrc213/imagenet_mean.binaryproto的文件来定义一个网络模型

拷贝和修改网络训练模型的定义文件,我们将要用的imagedatalayer,这个文件将调整图片大小

cp examples/feature_extraction/imagenet_val.prototxt examples/_temp

提取特征

./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或者pool3等其它层的信息

最后一个参数是图片的最小批次

特征最后存在了examples/_temp/features,文件夹下面

如果出现"Check failed: status.ok() Failed to open leveldb examples/_temp/features"的错误,那是因为examples/_temp/features在上一层运行命令的时候就已经存在了,所以要用命令移除它

rm -rf examples/_temp/features/

最后把临时的文件删除不要

rm -r examples/_temp

问题:

  1. caffemodel不存在

解决:

http://www.cnblogs.com/denny402/p/5111018.html

https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet

大概233M

sudo ./scripts/download_model_binary.py models/bvlc_reference_caffenet

问题2:

https://github.com/BVLC/caffe/issues/3505

参数设置错误,改版之后参数没有继续更改,巨坑,最后发现是caffemodel包没有下载完全,一定要检查那个包呀,233M,最后运行成功!

Caffe学习笔记2的更多相关文章

  1. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  2. Caffe学习笔记(三):Caffe数据是如何输入和输出的?

    Caffe学习笔记(三):Caffe数据是如何输入和输出的? Caffe中的数据流以Blobs进行传输,在<Caffe学习笔记(一):Caffe架构及其模型解析>中已经对Blobs进行了简 ...

  3. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优

    Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...

  4. Caffe学习笔记(一):Caffe架构及其模型解析

    Caffe学习笔记(一):Caffe架构及其模型解析 写在前面:关于caffe平台如何快速搭建以及如何在caffe上进行训练与预测,请参见前面的文章<caffe平台快速搭建:caffe+wind ...

  5. Caffe学习笔记4图像特征进行可视化

    Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...

  6. Caffe学习笔记3

    Caffe学习笔记3 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和h ...

  7. Caffe 学习笔记1

    Caffe 学习笔记1 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和 ...

  8. CAFFE学习笔记(五)用caffe跑自己的jpg数据

    1 收集自己的数据 1-1 我的训练集与测试集的来源:表情包 由于网上一幅一幅图片下载非常麻烦,所以我干脆下载了两个eif表情包.同一个表情包里的图像都有很强的相似性,因此可以当成一类图像来使用.下载 ...

  9. CAFFE学习笔记(四)将自己的jpg数据转成lmdb格式

    1 引言 1-1 以example_mnist为例,如何加载属于自己的测试集? 首先抛出一个问题:在example_mnist这个例子中,测试集是人家给好了的.那么如果我们想自己试着手写几个数字然后验 ...

随机推荐

  1. C语言中printf直接打出2进制数是%什么?16进制是什么?

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h&g ...

  2. UDP发送的数据 以数据包形式发送

    UDP发送的数据 以数据包形式发送

  3. 【bzoj3932】[CQOI2015]任务查询系统 离散化+主席树

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  4. Android 4.0源码结构

    Android 4.0 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等 ...

  5. BZOJ3670 & 洛谷2375 & UOJ5:[NOI2014]动物园——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3670 https://www.luogu.org/problemnew/show/P2375#su ...

  6. LeetCode中二叉树题目总结

    本文仅为博主个人总结,水平有限,欢迎大神指出不妥处. 关于二叉树的相关概念可以参见二叉树的百度百科,或binary tree Wiki. 二叉树结点类的常见定义为: /* Definition for ...

  7. POJ1742 Coins(男人八题之一)

    前言 大名鼎鼎的男人八题,终于见识了... 题面 http://poj.org/problem?id=1742 分析 § 1 多重背包 这很显然是一个完全背包问题,考虑转移方程: DP[i][j]表示 ...

  8. python----测试04.18

    # py4测试题 # 1.8 << 2 # 等于? 8转化成二进制:1000 向左移动2位: 0010 0000 转化成十进制:32 # 2.通过内置函数计算5除以2的余数 print(d ...

  9. 纯CSS实现的风车转动效果特效演示

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. Java并发编程学习笔记

    Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现R ...