caffe

tensorflow 模型权重导出

亡梦爱人 提交于 2021-02-11 02:35:28
tensorflow在保存权重模型时多使用tf.train.Saver().save 函数进行权重保存,保存的ckpt文件无法直接打开,不利于将模型权重导入到其他框架使用(如Caffe、Keras等)。 好在tensorflow提供了相关函数 tf.train.NewCheckpointReader 可以对ckpt文件进行权重查看,因此可以通过该函数进行数据导出。 1 import tensorflow as tf 2 import h5py 3 4 cpktLogFileName = r ' ./checkpoint/checkpoint ' # cpkt 文件路径 5 with open(cpktLogFileName, ' r ' ) as f: 6 # 权重节点往往会保留多个epoch的数据,此处获取最后的权重数据 7 cpktFileName = f.readline().split( ' " ' )[1 ] 8 9 h5FileName = r ' ./model/net_classification.h5 ' 10 11 reader = tf.train.NewCheckpointReader(cpktFileName) 12 f = h5py.File(h5FileName, ' w ' ) 13 t_g = None 14 for key in sorted

【杂谈】从CV小白到人脸表情识别专栏作者,我与有三AI的故事

。_饼干妹妹 提交于 2021-02-10 17:37:01
各位有三AI的读者朋友大家好呀~我是刚刚更新完结的【人脸表情识别】专栏的作者,一名仍然在读的研究生。在分享完我的专栏内容后,分享一下我这枚CV小白与有三 AI 的故事。 认识有三AI 我本科的专业是软件工程,因此较早的时候就开始追随学院中兴起人工智能“潮流”,申报了一个动作识别相关的课题项目。 而凭借着静茹姐给我的勇气,对AI,对CV一无所知的我,开始了从零开始的探索道路。 那个时候,身边没什么人带,跟几个小伙伴找很多资料,走了很多很多的坑。印象特别深的就是,看了很多知乎的回答,跑去看西瓜书、花书等“神书”。当然,这里并非想说西瓜书等不好,相反当你接触越多AI的知识,这些“殿堂级别”的书籍肯定能让你更上一层台阶。但是,我作为一个小白,看完之后还是不!会!敲!代!码!呀!!!(更别说里面的内容也只是看得似懂非懂)当然之后,还是一步一步完成了项目,实际效果嘛,因为是懵懵懂懂做出来的,就很一般。 快毕业的时候,因为需要结题、写小论文、写毕业论文,所以又重新向当年一样找资料,这个时候去看知乎的时候,就看到很多有三AI的回答,也看到了有三AI写的相关综述( 【技术综述】视频分类/行为识别研究综述,从数据集到方法 ),不过当时并未深入了解,只是在脑海里留下,有三AI是个回答得不错,写综述写得很好的个人/媒体,这算是我对有三AI最初的了解跟接触。 从深入了解到成为专栏作者 成为研究生之后

Layer drop and update caffe model

廉价感情. 提交于 2021-02-08 05:45:18
问题 I need to update a caffe model from an existing caffe model where I will drop last two layers. It is needed to reduce caffe model size so that it would be easier and lesser size to deploy. Say my existing caffe model is A1.caffemodel which has 5 convolution layers and 3 fully connected layers . I want to generate a new model from it named B1.caffemodel which will have 5 convolution layers and 1 fully connected layer (last 2 fc layers discarded). I appreciate your all valuable suggestions and

Sharing contiguous numpy arrays between processes in python

三世轮回 提交于 2021-02-05 20:21:57
问题 While I have found numerous answers to questions similar to mine, I don't believe it has been directly addressed here--and I have several additional questions. The motivation for sharing contiguous numpy arrays is as follows: I'm using a convolutional neural network run on Caffe to perform a regression on images to a series of continuous-value labels. The images require specific preprocessing and data augmentation. The constraints of (1) the continuous nature of the labels (they're floats)

Sharing contiguous numpy arrays between processes in python

强颜欢笑 提交于 2021-02-05 20:19:14
问题 While I have found numerous answers to questions similar to mine, I don't believe it has been directly addressed here--and I have several additional questions. The motivation for sharing contiguous numpy arrays is as follows: I'm using a convolutional neural network run on Caffe to perform a regression on images to a series of continuous-value labels. The images require specific preprocessing and data augmentation. The constraints of (1) the continuous nature of the labels (they're floats)

caffe详解之Python接口

▼魔方 西西 提交于 2021-02-03 00:24:55
从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! 生成net文件 from caffe import layers as L, params as P def lenet (lmdb, batch_size) : # 以Lenet-5网络搭建为例 n = caffe.NetSpec() # 继承自NetSpec # 创建数据层。数据层类型选用LMDB文件,向上传递两类数据(ntop=2):图片数据和对应的标签,并归一化到[0,1] n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb, transform_param=dict(scale= 1. / 255 ), ntop= 2 ) #创建卷积层 n.conv1 = L.Convolution(n.data, kernel_size= 5 , num_output= 20 , weight_filler=dict(type= 'xavier' )) #创建池化层 n.pool1 = L.Pooling(n.conv1, kernel_size= 2 , stride= 2 , pool=P.Pooling.MAX) n.conv2 = L.Convolution(n.pool1, kernel

CNN卷积神经网络-tensorflow

生来就可爱ヽ(ⅴ<●) 提交于 2021-02-02 15:49:11
卷积神经网络的层级结构 1 数据输入层 |input layer 该层要做的处理主要是对原始图像数据进行预处理,包括: 去均值、归一化、 PCA| 白化 。 去均值: 把输入数据各个维度都中心化为 0 ,其目的就是把样本的中心拉回到坐标系原点上。 归一化:幅度归一化到同样的范围。 PCA| 白化 :用 PCA 降维;白化是对数据各个特征轴的幅度归一化。 去均值与归一化效果图:(把样本的中心拉回到坐标系原点上) 去相关与白化效果图:(对数据各个特征轴的幅度归一化) 2 卷积计算层 |Convolution layer 这一层就是卷积神经网络最重要的一个层次,也是 “卷积神经网络”的名字来源。 在这个个卷基层,有两个关键操作:局部关联 ,每个神经元看做一个滤波器( filter )和 窗口滑动( receptive field ) , filter 对局部数据计算。 先介绍卷积层遇到的几个名词: 深度 |depth 步长 |stride (窗口一次滑动的距离) 填充值 |zero-padding 填充值是什么呢? 以下图为例子,比如有这么一个 5*5的图片(一个格子一个像素),我们滑动窗口取2*2,步长取2,那么我们发现还剩下1个像素没法滑完,那怎么办呢? 那我们在原先的矩阵加了一层填充值,使得变成 6*6的矩阵,那么窗口就可以刚好把所有像素遍历完。这就是填充值的作用。 卷积的计算

deeplab 训练自己的数据集

随声附和 提交于 2021-02-02 07:01:22
首先感谢教程 http://blog.csdn.net/ruotianxia/article/details/78331964 很全面很详细 1.配置好deeplab_v2 source code:https://bitbucket.org/aquariusjay/deeplab-public-ver2/src 配置过程不做描述了。。 2.建立一个项目文件夹,文件夹里包括子文件夹config feature feature2 list log model res 为了方便可以复制这个git里的voc2012后做修改 https://github.com/xmojiao/deeplab_v2 3.数据的准备。 数据主要包括图片以及图片对应的label(也为png图片),可以存放在任意你喜欢的位置,后续只需给定路径即可。将数据分为训练和验证集制作list 具体格式参照voc2012 list文件夹中的格式。 为了后续测试最好也留一部分做test set。 另外还有val跟test的图片id list 只要id 不要前缀 4.训练的protxt文件存放在config/deeplab_largeFOV中,在这里使用的shell文件 run_pascal.sh 训练故 trainval.pt 不用修改, 在solver.pt中可修改lr及模型存放位置等。。 5.修改run_pascal.sh

caffe的python接口

坚强是说给别人听的谎言 提交于 2021-02-02 00:57:22
python接口,我的理解主要是两个,一个是原来caffe官方给的,这里是 接口介绍 。另一个是SSD框架加的model_libs.py,主要是添加了一些base_network和一些相关的函数。这两个如果能够用得很好的话,兄弟,恭喜你!你已经精通caffe的python接口了。其实不用说的,这个接口很方便,从此你不再需要手动去写什么网络,单独去执行什么bat又或者是sh的命令训练测试了,接口的可移植性非常好,我们将这些必要的设置写在python文件里,完成上面的一套工作。因此,在我看来,SSD的python接口就是上面两个的完美结合。 第一个就是官方给的,官方是这么介绍的: Python The Python interface – pycaffe – is the caffe module and its scripts in caffe/python. import caffe to load models, do forward and backward , handle IO , visualize networks, and even instrument model solving . All model data, derivatives, and parameters are exposed for reading and writing. caffe.Net

Can't load Caffe model with DummyData layer

旧街凉风 提交于 2021-01-29 07:17:57
问题 when I try to load a caffe model with OpenCV 3.4.3, I get the error what(): OpenCV(3.4.3) /home/schneider/libs/opencv-3.4.3/modules/dnn/src/dnn.cpp:412: error: (-2:Unspecified error) Can't create layer "DummyData1" of type "DummyData" in function 'getLayerInstance'* The layer in the prototxt file looks like this: layer { name: "DummyData1" type: "DummyData" top: "DummyData1" dummy_data_param { shape { dim: 1 dim: 32 dim: 125 dim: 100 } } } It appears that the layer is missing in OpenCV. The