标签分类
技术文章
当前位置:主页 > 计算机编程 > python > Caffe均值文件mean.binaryproto转mean.npy的方法

Caffe均值文件mean.binaryproto转mean.npy的步骤详解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:198

Caffe均值文件mean.binaryproto转mean.npy的方法

这篇文章主要知识点是关于mean.binaryproto,mean.npy,Caffe均值文件mean.binaryproto转mean.npy的方法,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python数据科学入门
  • 类型:Python数据处理大小:13.9 MB格式:PDF出版:人民邮电出版社作者:Dmitry
立即下载

更多相关的学习资源可以参阅 程序设计电子书Python电子书、等栏目。

mean.binaryproto转mean.npy

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

import caffe
import numpy as np

MEAN_PROTO_PATH = 'mean.binaryproto'        # 待转换的pb格式图像均值文件路径
MEAN_NPY_PATH = 'mean.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)

已知图像均值,构造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均值文件mean.binaryproto转mean.npy的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到详解vue axios封装请求状态、 vue项目中使用md5加密以及、 解决axios.interceptors.respon、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:《Python并行编程参考手册》书评、笔记、下载

下一篇:Python实现通过继承覆盖方法实例讲解

展开 +

收起 -

学习笔记
网友NO.123373

python+opencv+caffe+摄像头做目标检测的实例代码

首先之前已经成功的使用Python做图像的目标检测,这回因为项目最终是需要用摄像头的, 所以实现摄像头获取图像,并且用Python调用CAFFE接口来实现目标识别 首先是摄像头请选择支持Linux万能驱动兼容V4L2的摄像头, 因为之前用学ARM的时候使用的Smart210,我已经确认我的摄像头是支持的, 我把摄像头插上之後自然就在 /dev 目录下看到多了一个video0的文件, 这个就是摄像头的设备文件了,所以我就没有额外处理驱动的部分 一、检测环境 再来在开始前因为之前按着国嵌的指导手册安装的opencv3.2当时没有开启V4L2及GTK_2.x的支持, 所以後面遇到了一连串的问题,请大家如下面方法检测 $ python 1.检测Python的V4L2支持及摄像头驱动是否正常 进入Python之後如下命令 Python 2.7.12 (default, Nov 19 2016, 06:48:10)[GCC 5.4.0 20160609] on linux2Type "help", "copyright", "credits" or "license" for more information. import cv2 cap = cv2.VideoCapture(0) print cap.isOpened()True 如果 返回True就代表摄像头及你的opencv的V4L2支持就已经完全正常了 如果返回False就代表opencv或是摄像头有问题叁考後面的修改方式 2.再来因为我们要把摄像头的影像生成窗口,所以我们需要检测Python的gtk支持如下 import cv2 cv2.namedWindow('test',cv2.WINDOW_AUTOSIZE) 如果没有报任何错误就代表gtk也是正常的 如如果出现下面提示 Open……

网友NO.761486

详细介绍高性能Java缓存库Caffeine

1、介绍 在本文中,我们来看看Caffeine — 一个高性能的 Java 缓存库。 缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item。 回收策略为在指定时间删除哪些对象。此策略直接影响缓存的命中率 — 缓存库的一个重要特征。 Caffeine 因使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。 2、依赖 我们需要在 pom.xml 中添加 caffeine 依赖: dependency groupIdcom.github.ben-manes.caffeine/groupId artifactIdcaffeine/artifactId version2.5.5/version/dependency 您可以在Maven Central 上找到最新版本的 caffeine。 3、填充缓存 让我们来了解一下 Caffeine 的三种缓存填充策略:手动、同步加载和异步加载。 首先,我们为要缓存中存储的值类型写一个类: class DataObject { private final String data; private static int objectCounter = 0; // standard constructors/getters public static DataObject get(String data) { objectCounter++; return new DataObject(data); }} 3.1、手动填充 在此策略中,我们手动将值放入缓存之后再检索。 让我们初始化缓存: CacheString, DataObject cache = Caffeine.newBuilder() .expireAfterWrite(1, TimeUnit.MINUTES) .maximumSize(100) .build(); 现在,我们可以使用 getIfPresent 方法从缓存中获取一些值。 如果缓存中不存在此值,则此方法将返回 null: String key = "A";DataObject dataObject = cache.getIfPresent(key); assertNull(dataObject);……

网友NO.791424

python与caffe改变通道顺序的方法

把通道放在前面: image = cv2.imread(path + file)image = cv2.resize(image, (48, 48), interpolation=cv2.INTER_CUBIC) aaaa= np.transpose(image,(2, 0, 1)) print(aaaa) 图像原来shape:(48, 48, 3),改之后shape:(3,48,48) 注意:reshape不能解决通道转换问题 pycaffe做识别时通道转换问题: 要注意一点的就是:Caffe中彩色图像的通道是BGR格式,图像存储是【0,255】 1.caffe.io.load_image方式 view plai cop image = caffe.io.load_image(image_file) #加载图片 使用caffe.io.load_image()读进来的是RGB格式和0~1(float) 所以在进行识别之前要在transformer中设置transformer.set_raw_scale('data',255)(缩放至0~255) 以及transformer.set_channel_swap('data',(2,1,0)(将RGB变换到BGR) # python中将图片存储为[0, 1],而caffe中将图片存储为[0, 255],所以需要一个转换 transformer.set_raw_scale('data', 255) # 缩放到[0,255]之间 transformer.set_channel_swap('data', (2,1,0)) #交换通道,将图片由RGB变为BGR(caffe中图片是BGR格式,而原始格式是RGB,所以要转化) 2.使用cv2.imread()来读取图片 cv2.imread()接口读图像,读进来直接是BGR 格式and 0~255 所以不需要再缩放到【0,255】和通道变换【2,1,0】,不需要transformer.set_raw_scale('data',255)和transformer.set_channel_swap('data',(2,1,0)) 3.使用PIL来读取图片 对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明