批量提取 caffe 特征 (python, C++, Matlab)(待续)

本文参考如下

Instant Recognition with Caffe
Extracting Features

Caffe Python特征提取

caffe 练习4 —-利用python批量抽取caffe计算得到的特征——by 香蕉麦乐迪
caffe 练习3 用caffe提供的C++函数批量抽取图像特征——by 香蕉麦乐迪

caffe python批量抽取图像特征
caffe python 批量抽取图像特征—续篇
caffe c++ 抽取图片特征

shicai C++ Caffe提取特征

caffe源码修改:抽取任意一张图片的特征

matlab 批量提取CNN特征

关于如何批量提取特征,本文的框架如下:
1. 准备数据及相应准备工作
2. 初始化网络
3.读取图像列表
4.提取图像特征,并保存为特定格式

Python方法一
主要有三个函数:
initialize () 初始化网络的相关
readlist() 读取抽取图像列表
extractFeatre() 抽取图像的特征,保存为指定的格式

其中在transformer那里需要根据自己的需求设定

#encoding:utf-8
#详情请查看http://www.cnblogs.com/louyihang-loves-baiyan/p/5078746.html
import numpy as np
import matplotlib.pyplot as plt
import os
import caffe
import sys
import pickle
import struct
import sys,cv2
caffe_root = '../'  
# 运行模型的prototxt
deployPrototxt =  '/home/bids/caffe/caffe-master/changmiao/model/deploy.prototxt'
# 相应载入的modelfile
modelFile = '/home/bids/caffe/caffe-master/changmiao/model/bvlc_reference_caffenet.caffemodel'
# meanfile 也可以用自己生成的
meanFile = 'python/caffe/imagenet/ilsvrc_2012_mean.npy'
# 需要提取的图像列表
imageListFile = '/home/bids/caffe/caffe-master/changmiao/data/temp.txt'
imageBasePath = '/home/bids/caffe/caffe-master/changmiao/data/cat'
#gpuID = 4 #根据你自己电脑的GPU情况而定
postfix = '.classify_allCar1716_fc6'# 初始化函数的相关操作
def initilize():print 'initilize ... 'sys.path.insert(0, caffe_root + 'python')caffe.set_mode_gpu()
#    caffe.set_device(gpuID)net = caffe.Net(deployPrototxt, modelFile,caffe.TEST)return net  
# 提取特征并保存为相应地文件
def extractFeature(imageList, net):# 对输入数据做相应地调整如通道、尺寸等等transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})transformer.set_transpose('data', (2,0,1))transformer.set_mean('data', np.load(caffe_root + meanFile).mean(1).mean(1)) # mean pixeltransformer.set_raw_scale('data', 255)  transformer.set_channel_swap('data', (2,1,0))  # set net to batch size of 1 如果图片较多就设置合适的batchsize net.blobs['data'].reshape(1,3,227,227)      #这里根据需要设定,如果网络中不一致,需要调整num=0#imageList = os.listdir(imageBasePath)for imagefile in imageList:imagefile_abs = os.path.join(imageBasePath, imagefile)print imagefile_absnet.blobs['data'].data[...] = transformer.preprocess('data', caffe.io.load_image(imagefile_abs))out = net.forward()fea_file = imagefile_abs.replace('.jpg',postfix)num +=1print 'Num ',num,' extract feature ',fea_filewith  open(fea_file,'wb') as f:for x in xrange(0, net.blobs['fc6'].data.shape[0]):for y in xrange(0, net.blobs['fc6'].data.shape[1]):f.write(struct.pack('f', net.blobs['fc6'].data[x,y]))# 读取文件列表
def readImageList(imageListFile):imageList = []with open(imageListFile,'r') as fi:while(True):line = fi.readline().strip().split()# every line is a image file nameif not line:breakimageList.append(line[0]) print 'read imageList done image num ', len(imageList)return imageListif __name__ == "__main__":net = initilize()imageList = readImageList(imageListFile) extractFeature(imageList, net)

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

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

相关文章

iOS单例初步理解

iOS单例初步理解 在iOS开发中,系统自带的框架中使用了很多单例,非常方便用户(开发者,使用比如[NSApplication sharedApplication] 等),在实际的开发中,有时候也需要设计单例对象,为…

python面向对象之类的成员

面向对象之类的成员 细分类的组成成员 类大致分为两块区域: 第一部分:静态字段 第二部分:动态方法 class Animal:type_name "动物类" # 静态变量(静态字段)__feature "活的" # 私有静态变量…

python元类、反射及双线方法

元类、反射及双线方法 元类 print(type(abc)) print(type(True)) print(type(100)) print(type([1, 2, 3])) print(type({name: 太白金星})) print(type((1,2,3))) print(type(object))class A:passprint(isinstance(object,type)) print(isinstance(A, type)) type元类是获取该…

iOS中的多线程一般使用场景

在IOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用来响应用户的手势操作以及UI刷新,因此主线程又叫做UI线程。 前面的Blog说明了NSThread以及GCD处理并发线程以及线程安全(线…

iOS中如何优化Cell中图片的下载性能

在iOS开发中使用最为常见的是UITableView,其中UITabelViewCell中下载图片,会影响用户下拉刷新UI,导致卡顿,用户体验不好,在这篇blog中,我将以一个例子来说明如何优化UITableView下载图片 1.使用懒加载方式&#xff0c…

【Yoshua Bengio 亲自解答】机器学习 81 个问题及答案(最全收录)

本文转自:http://mp.weixin.qq.com/s?__bizMzI3MTA0MTk1MA&mid401958262&idx1&sn707f228cf5779a31f0933af903516ba6&scene1&srcid0121zzdeFPtgoRoEviZ3LZDG#rd 译者:张巨岩 王婉婷 李宏菲 戴秋池 这是 Quora 的最新节目&#xf…

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们应该如何进行网络请求的优化与…

XCode7 创建framework

1.新建一个静态库工程. file→ new→ project, 弹出框中选择iOS→ framework & library中的cocoa touch static library.点击Next,输入product name: TestFramework, 点击Next→ 点击Create. 2.删除向导所生成工程中的Target. 点击工程名→ 点击TARGETS → 右键Delete. …

基础js逆向练习-登录密码破解(js逆向)

练习平台:逆向账号密码 https://login1.scrape.center/ 直接打开平台,输入密码账号,抓包找到加密的参数携带的位置,这边我们找到的是一个叫token的加密参数,这个参数的携带是一个密文 我们首先考虑一下搜索这个加密的…

python之socket

socket套接字 什么叫socket socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统.socket在python中就是一个模块. socket两个分类 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件…

iOS----JSON解析

在iOS开发中与服务器进行数据交互操作,操作过程中使用最为常见的格式为JSON与XML,其中JSON较为清量,因此本篇blog就讲解一下如何在iOS中进行JSON解析。 1.建立HTTP请求 (1)创建URL NSString *URLStr [NSString stringWithFormat:”http:/…

VS中每次改代码后运行程序不更新,只有重新编译才生效。

解决方法:将项目移除解决方案,再重新添加进来,即添加->现有项目->选择.vcxproj文件,即可解决。 转载于:https://www.cnblogs.com/Gregg/p/11358711.html

socket补充:通信循环、链接循环、远程操作及黏包现象

socket补充:通信循环、链接循环、远程操作及黏包现象 socket通信循环 server端: import socketphone socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind((127.0.0.1,8080))phone.listen(5)conn, client_addr phone.accept() print(conn, cl…

PCA的原理及MATLAB实现

相关文章 PCA的原理及MATLAB实现 UFLDL教程:Exercise:PCA in 2D & PCA and Whitening python-A comparison of various Robust PCA implementations --------&a…

Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的项目中起到积极的作用。…

iOS中下载小文件

在iOS中通过网络下载小文件比如小型图片等资源,一般在子线程中将数据完全下载完毕,然后在调用block将下载的数据整个部分返回,或者采用同步返回下载数据。 一般采用以下两种方式: (1)使用GCD将下载操作放…

iOS下载大文件原理解析一

iOS中下载大型文件,需要考虑到占用内存的大小与下载速度(使用多线程),因此本文首先介绍一个原理性下载文件的DEMO。 在下载大型文件中,需要知道下载的进度因此需要使用代理模式,不断的回调下载进度。 - (…

recv原理、高阶版黏包解决方案、基于UDP的socket通信

recv原理、高阶版黏包解决方案、基于UDP的socket通信 recv原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the optional flags argument, see the Unix manual. 对于这些设置的参数,可…

iOS中下载大型文件的原理解析二

在iOS中下载大型文件,需要使用NSURLConnection 的代理方法: (void)touchesBegan:(NSSet)touches withEvent:(UIEvent *)event { NSURL *url [NSURL URLWithString:”http://d.3987.com/fengj_141112/007.jpg“]; NSURLRequest *request [NSURLReque…