caffe binaryproto 与 npy相互转换的实例讲解

yipeiwu_com6年前Python基础

在caffe中,如果使用的是c++接口,均值文件默认为.binaryproto格式,而如果使用的是python接口,均值文件默认的是numpy的.npy格式,在工作中有时需要将两者进行互相转换,具体方式如下:

binaryproto -> npy

import numpy as np
import caffe
import sys

blob = caffe.proto.caffe_pb2.BlobProto()
data = open( 'mean.binaryproto' , 'rb' ).read()
blob.ParseFromString(data)
arr = np.array( caffe.io.blobproto_to_array(blob) )
out = arr[0]
np.save( 'mean.npy' , out )

npy -> binaryproto

data_mean is 1*H*W

import numpy as np
import caffe
import sys

blob = caffe.proto.caffe_pb2.BlobProto()
with open('mean.npy','rb') as f:
  data_mean = numpy.load(f)
blob.channels=1
blob.height = data_mean.shape[0]
blob.width = data_mean.shape[1]
blob.data.extend(data_mean.astype(float).flat)
binaryproto_file = open('mean.binaryproto', 'wb' ) 
binaryproto_file.write(blob.SerializeToString())
binaryproto_file.close()

以上这篇caffe binaryproto 与 npy相互转换的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python实现在sqlite动态创建表的方法

本文实例讲述了python实现在sqlite动态创建表的方法。分享给大家供大家参考。具体实现方法如下: import sqlite3 as db conn = db.connect(...

python基础教程之序列详解

sequence 序列 sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素) 序列可以包含一个或多个元素,也可以没有...

python 获得任意路径下的文件及其根目录的方法

似乎有一段时间没有更新博客了,这里就写点小功能,轻松获得电脑任意路径下的文件及文件夹,并将其写入word,以下是主要代码: **import os** **from os impor...

在python3中pyqt5和mayavi不兼容问题的解决方法

在python3中pyqt5和mayavi不兼容问题的解决方法

环境: win10 64bit & Linux Mint 18.2 WinPython3.6.1,spyder,qtconsole iep3.7 问题描述: 通过http://www.l...

对python模块中多个类的用法详解

如下所示: import wuhan.wuhan11 class Han: def __init__(self, config): self.batch_size = co...