Pycaffe转换均值文件:xxx_mean.binaryproto成为xxx_mean.npy

为什么需要mean.binaryproto转mean.npy?

使用Caffe的C++接口进行操作时,需要的图像均值文件是pb格式,例如常见的均值文件名为mean.binaryproto。但在使用python接口进行操作时,需要的图像均值文件是numpy格式,例如mean.npy。所以在跨语言进行操作时,需要将mean.binaryproto转换成mean.npy。

首先是生成binaryproto的sh文件,这里不介绍。这里提供转mean.npy两个程序,bin_2_npy001.py如下:

#!/usr/bin/env python
#binaryproto_2_npy import numpy as np
c=np.fromfile("road_mean.binaryproto", dtype=np.float)
print c
np.save("road_mean.npy", c)
b=np.load('road_mean001.npy')
print b

bin_2_npy002.py如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#mean.binaryproto_2_mean.npy #import sys #导入Python的sys模块                                             
#sys.path.append("/usr/lib/python2.7/dist-packages")            
import caffe                                       # 导入caffe模块
import numpy as np #导入矩阵数值运算程序库 MEAN_PROTO_PATH = 'road_mean.binaryproto' # 待转换的pb格式图像均值文件路径
MEAN_NPY_PATH = 'road_mean002.npy' # 转换后的numpy格式图像均值文件路径 blob = caffe.proto.caffe_pb2.BlobProto() # 创建protobuf blob
data = open(MEAN_PROTO_PATH, 'rb' ).read() # 读入mean.binaryproto文件内容
blob.ParseFromString(data) # 解析文件内容到blob array = np.array(caffe.io.blobproto_to_array(blob))# 将blob中的均值转换成numpy格式,array的shape (mean_number,channel, hight, width)
mean_npy = array[0] # 一个array中可以有多组均值存在,故需要通过下标选择其中一组均值
np.save(MEAN_NPY_PATH ,mean_npy)

说明:本文件夹下的bin_2_npy001.py与bin_2_npy002.py都可以生成均值,但是road_mean002.npy在后续程序中好用。原因尚不明确,待思考解决。

参考 https://blog.csdn.net/hyman_yx/article/details/51732656,补充:

已知图像均值,构造mean.npy

如果已知图像中每个通道的均值,例如3通道图像每个通道的均值分别为104,117,123,我们也可以通过其构造mean.npy。代码如下:

import numpy as np

MEAN_NPY_PATH = 'mean.npy'

mean = np.ones([3,256, 256], dtype=np.float)
mean[0,:,:] = 104
mean[1,:,:] = 117
mean[2,:,:] = 123 np.save(MEAN_NPY, mean)

载入mean.npy

上面我们用两种方式构造了均值文件mean.npy,在使用时载入mean.npy的代码如下:

import numpy as np

mean_npy = np.load(MEAN_NPY_PATH)
mean = mean_npy.mean(1).mean(1)

Caffe---Pycaffe转换均值文件:xxx_mean.binaryproto成为xxx_mean.npy的更多相关文章

  1. 生成均值文件mean.binaryproto

    [感谢:http://www.cnblogs.com/denny402/p/5102328.html] compute_image_mean.bin生成均值文件mean.binaryproto: ca ...

  2. Caffe︱构建lmdb数据集、binaryproto均值文件及各类难辨的文件路径名设置细解

    Lmdb生成的过程简述 1.整理并约束尺寸,文件夹.图片放在不同的文件夹之下,注意图片的size需要规约到统一的格式,不然计算均值文件的时候会报错. 2.将内容生成列表放入txt文件中.两个txt文件 ...

  3. paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结

    paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结 #两个思路 1.思路如下:使用file_get_contents()获取txt文件的内容,然后通过 ...

  4. Windows pyqt4 bat自动转换UI文件-->.pyw文件

    /***************************************************************************** * Windows pyqt4 bat自动 ...

  5. java使用batik转换svg文件

    svg是一种矢量图片格式,用来保存高保真的图片.我们可以用编辑器打开svg,我们可以看到svg文件其实就是一个xml文件,这种文件浏览器也可以识别.因此要查看svg用现成的浏览器就可以了.值得庆幸的是 ...

  6. 批量转换cue文件编码

    之前在网上下载的无损(flac.ape),好多都是整盘的,也就是说一个flac或ape文件搭配一个cue分轨文件,这个文件记录着在不同时间段是哪一首歌曲. 由于之前的操作都是在windows下进行的, ...

  7. html5中将图片的绝对路径转换成文件对象

    html5中将图片的绝对路径转换成文件对象 将图片的绝对路径转换成base64编码,请看这篇文章 我们先来理解基本知识点: 1. 理解HTML5中的FileList对象与file对象. 在HTML5中 ...

  8. 使用python调用wps v9转换office文件到pdf

    #!/usr/bin/python2.6 # -*- coding: utf-8 -*- # pip install timeout-decorator import os import win32c ...

  9. 使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件

    kompose 是一个不错的快速转换docker-compose 文件为k8s 部署yaml文件的工具,使用次工具我们 可以将简单的docker-compose文件,转换为复杂的yaml文件,对于使用 ...

随机推荐

  1. java面试考点-HashTable/HashMap/ConcurrentHashMap

    HashTable 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低 HashMap 结构同HashTable,键值对允许为null,线程不安全, 默认初始 ...

  2. Windows下的3389端口渗透

    1.Win7.Win2003.XP系统 在CMD命令行开启3389端口:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" &qu ...

  3. Java向上保留两位小数

    setScale(2, BigDecimal.ROUND_UP) 例如:0.035 运算结果 为0.01

  4. mysql 启动出错

    错误:The server quit without updating PID file 看错误日志: Setting lower_case_table_names=2 because file sy ...

  5. 使用 pyenv 可以在一个系统中安装多个python版本

    Installl related yum install readline readline-devel readline-static -y yum install openssl openssl- ...

  6. Ural 1298 Knight 题解

    目录 Ural 1298 Knight 题解 题意 题解 程序 Ural 1298 Knight 题解 题意 给定一个\(n\times n(1\le n\le8)\)的国际象棋棋盘和一个骑士(基本上 ...

  7. 2019HDU暑期多校训练-1004equation-方程求解

    Description You are given two integers N,C and two integer sequences a and b of length N. The sequen ...

  8. Java打包

    打成jar包 如果你使用的是maven来管理项目,执行以下命令既可以 cd 项目跟目录(和pom.xml同级)mvn clean package## 或者执行下面的命令## 排除测试代码后进行打包mv ...

  9. 【AC自动机】病毒

    [题目链接] https://loj.ac/problem/10062 [题意] 寻找一个没有模式串为子串的无限01串.是否存在. [题解] 其实就是用dfs找一个环. 1.环需要从根结点出发找到这个 ...

  10. C#向远程地址发送数据

    static string proxyIpAddress = AppConfig.GetProxyIpAddress; static string proxyUserName = AppConfig. ...