Caffe学习系列(15):计算图片数据的均值
2016-01-06 16:11
267 查看
图片减去均值后,再进行训练和测试,会提高速度和精度。因此,一般在各种模型中都会有这个操作。
那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算。
一、二进制格式的均值计算
caffe中使用的均值数据格式是binaryproto, 作者为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面。编译后的可执行体放在 build/tools/ 下面,我们直接调用就可以了
带两个参数:
第一个参数:examples/mnist/mnist_train_lmdb, 表示需要计算均值的数据,格式为lmdb的训练数据。
第二个参数:examples/mnist/mean.binaryproto, 计算出来的结果保存文件。
二、python格式的均值计算
如果我们要使用python接口,或者我们要进行特征可视化,可能就要用到python格式的均值文件了。首先,我们用lmdb格式的数据,计算出二进制格式的均值,然后,再转换成python格式的均值。
我们可以编写一个python脚本来实现:
将这个脚本保存为convert_mean.py
调用格式为:
其中的 mean.binaryproto 就是经过前面步骤计算出来的二进制均值。
mean.npy就是我们需要的python格式的均值。
那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算。
一、二进制格式的均值计算
caffe中使用的均值数据格式是binaryproto, 作者为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面。编译后的可执行体放在 build/tools/ 下面,我们直接调用就可以了
# sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto
带两个参数:
第一个参数:examples/mnist/mnist_train_lmdb, 表示需要计算均值的数据,格式为lmdb的训练数据。
第二个参数:examples/mnist/mean.binaryproto, 计算出来的结果保存文件。
二、python格式的均值计算
如果我们要使用python接口,或者我们要进行特征可视化,可能就要用到python格式的均值文件了。首先,我们用lmdb格式的数据,计算出二进制格式的均值,然后,再转换成python格式的均值。
我们可以编写一个python脚本来实现:
#!/usr/bin/env python import numpy as np import sys,caffe if len(sys.argv)!=3: print "Usage: python convert_mean.py mean.binaryproto mean.npy" sys.exit() blob = caffe.proto.caffe_pb2.BlobProto() bin_mean = open( sys.argv[1] , 'rb' ).read() blob.ParseFromString(bin_mean) arr = np.array( caffe.io.blobproto_to_array(blob) ) npy_mean = arr[0] np.save( sys.argv[2] , npy_mean )
将这个脚本保存为convert_mean.py
调用格式为:
# sudo python convert_mean.py mean.binaryproto mean.npy
其中的 mean.binaryproto 就是经过前面步骤计算出来的二进制均值。
mean.npy就是我们需要的python格式的均值。
相关文章推荐
- FullPage.js全屏滚动插件的配置项、方法和回调函数
- web端加载样式
- web前端--知识点,笔记叠加(javascript,jquery,html5+css3.0,ajax)
- web开发菜鸟应该如何向前端大神提问题(一次性把问题描述清楚)
- JSP相关的内容
- 前端工具bower wiredep
- Jquery 获取checkbox的checked问题
- css3中animation的应用
- 谈谈JavaScript类型系统之Math
- css3-盒子模型的应用
- jQuery UI 实例 - 排序(Sortable)
- JavaScript知识汇总集合
- 深入理解JavaScript是如何实现继承的
- js--上传图片
- JQuery - 设置/获取单选按钮radio/复选按钮checkbox的值
- CSS基础之选择器
- 解析复杂的json数据
- js面向对象与原型
- 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)
- HTML知识汇总集合