imagenet-vgg-verydeep-19参数结构解析

      第一次用网上下载的VGG-19参数来训练网络,下载的参数文件是

      imagenet-vgg-verydeep-19.mat

     文件有500多兆,不明觉厉害(大神莫笑,如果写得有问题欢迎指出以使我进步,哈哈),一下子不清楚它的参数是怎么组织的,为了弄清楚,参考了网上的帖子,也自己用笨办法一层一层的剥离了一下试试看,把解析后的结构记录一下。

一、VGG-19的结构

    先上一下VGG-Net的结构图,来自论文《VERY DEEP CONVOLUTIONAL NETWORK SFORLARGE-SCALE IMAGE RECOGNITION,发表于ICLR 2015,比较起ALEXNET,VGG对图片有更精确的估值以及更省空间。注意19只包含了卷积层,没有算池化、Relu和最后的FC-1000,而在下载的模型参数中这些层都有包含,导致开始没有想明白。


二、笨办法尝试参数结构

# -*- coding:utf-8 -*
import scipy.io
import numpy as np 
import os 
import scipy.misc 


cwd = os.getcwd()
VGG_PATH = cwd + "/data/imagenet-vgg-verydeep-19.mat"
vgg = scipy.io.loadmat(VGG_PATH)
#先显示一下数据类型,发现是dict
print(type(vgg))
#字典就可以打印出键值dict_keys(['__header__', '__version__', '__globals__', 'layers', 'classes', 'normalization'])
print(vgg.keys())
#进入layers字段,我们要的权重和偏置参数应该就在这个字段下
layers = vgg['layers']

#打印下layers发现输出一大堆括号,好复杂的样子:[[ array([[ (array([[ array([[[[ ,顶级array有两个[[
#所以顶层是两维,每一个维数的元素是array,array内部还有维数
#print(layers)

#输出一下大小,发现是(1, 43),说明虽然有两维,但是第一维是”虚的”,也就是只有一个元素
#根据模型可以知道,这43个元素其实就是对应模型的43层信息(conv1_1,relu,conv1_2…),Vgg-19没有包含Relu和Pool,那么看一层就足以,
#而且我们现在得到了一个有用的index,那就是layer,layers[layer]
print("layers.shape:",layers.shape)
layer = layers[0]
#输出的尾部有dtype=[('weights', 'O'), ('pad', 'O'), ('type', 'O'), ('name', 'O'), ('stride', 'O')])
#可以看出顶层的array有5个元素,分别是weight(含有bias), pad(填充元素,无用), type, name, stride信息,
#然后继续看一下shape信息,
print("layer.shape:",layer.shape)
#print(layer)输出是(1, 1),只有一个元素
print("layer[0].shape:",layer[0].shape)
#layer[0][0].shape: (1,),说明只有一个元素
print("layer[0][0].shape:",layer[0][0].shape)

#layer[0][0][0].shape: (1,),说明只有一个元素
print("layer[0][0][0].shape:",layer[0][0][0].shape)
#len(layer[0][0]):5,即weight(含有bias), pad(填充元素,无用), type, name, stride信息
print("len(layer[0][0][0]):",len(layer[0][0][0]))
#所以应该能按照如下方式拿到信息,比如说name,输出为['conv1_1']
print("name:",layer[0][0][0][3])
#查看一下weights的权重,输出(1,2),再次说明第一维是虚的,weights中包含了weight和bias
print("layer[0][0][0][0].shape",layer[0][0][0][0].shape)
print("layer[0][0][0][0].len",len(layer[0][0][0][0]))

#weights[0].shape: (2,),weights[0].len: 2说明两个元素就是weight和bias
print("layer[0][0][0][0][0].shape:",layer[0][0][0][0][0].shape)
print("layer[0][0][0][0].len:",len(layer[0][0][0][0][0]))

weights = layer[0][0][0][0][0]
#解析出weight和bias
weight,bias = weights
#weight.shape: (3, 3, 3, 64)
print("weight.shape:",weight.shape)
#bias.shape: (1, 64)
print("bias.shape:",bias.shape)

三、总结

   所以Vgg-19的layers部分参数数据结构应该是:




### 回答1: Imagenet-vgg-verydeep-19.mat是一个预训练的深度神经网络模型文件,包含了一个19层的卷积神经网络(CNN)模型,在计算机视觉领域中非常有用。它被称为VGG-19,因为它由两个重复的卷积层阶段组成,每个阶段包含了4个卷积层和2个池化层,加上3个全连接层。此模型是由牛津大学计算机科学系Visual Geometry Group团队开发的,用于2014年ImageNet图像分类竞赛中取得了第二名的成绩。 下载Imagenet-vgg-verydeep-19.mat模型文件可以方便地使用它进行迁移学习和特征提取,将已经训练好的模型用于类似的计算机视觉任务,例如图像分类、物体检测、图像分割等。在许多研究领域,它已经成为使用深度学习进行计算机视觉最常使用的模型之一。 需要注意的是,Imagenet-vgg-verydeep-19.mat是一个很大的文件(约几百MB),下载它可能需要一些耐心和时间,特别是在网络环境较为缓慢的情况下。此外,该模型是使用MATLAB语言编写的,因此如果你想在其他编程语言中使用该模型,需要进行一些额外的工作来将其转化为其他语言所能识别的格式。 ### 回答2: imagenet-vgg-verydeep-19.mat是一个神经网络模型,它是基于VGG网络架构的一个深度神经网络。它是在2014年ILSVRC比赛中,由Visual Geometry Group (VGG)的研究人员提出的一种高效的CNN模型,该模型在“image classification”(图像分类)任务上的表现相当惊人,打破了当时的记录。它在准确性和速度方面表现出色,因此它得到了广泛的应用,成为深度学习领域的研究者和开发者们常用的模型之一。 imagenet-vgg-verydeep-19.mat是该模型的一个预训练权重文件,其中包含了30多万个图像的标识符和与之相应的特征描述符。这些权重可用于快速训练您自己的图片分类器或其他深度学习任务,这比从头开始训练一个完整的神经网络要快得多。您也可以使用这些权重来对一些图像进行分类,并使用它们的特征描述符来进行特征提取和图像检索。 如果您想要使用imagenet-vgg-verydeep-19.mat文件,您需要先下载它并存储到您的本地计算机中。在MATLAB中,您可以使用以下命令来下载该文件: ``` urlwrite('http://www.vlfeat.org/matconvnet/models/imagenet-vgg-verydeep-19.mat', 'imagenet-vgg-verydeep-19.mat'); ``` 下载完成后,您可以将其导入到MATLAB环境中,使用它进行图像分类和特征提取。该文件的大小约为500MB,因此请确保您的计算机具有足够的存储空间和足够的RAM来使用它。 ### 回答3: Imagenet-vgg-verydeep-19.mat是一个预训练的深度神经网络的模型文件,可以用来在计算机视觉领域进行图像分类、目标检测等诸多任务。该模型主要基于VGG网络结构,是一种具有较好性能和广泛应用的深度卷积神经网络。 下载Imagenet-vgg-verydeep-19.mat文件可以帮助研究人员或开发人员更快地开发和实现计算机视觉的应用程序。在某些应用场景下,为了实现对图像的识别或分类,需要大量的数据和计算资源。使用预训练的模型可以节省很多时间和计算资源,同时也可以提高模型的准确度。 目前,Imagenet-vgg-verydeep-19.mat模型已经被广泛应用于图像分类、目标检测和语义分割等领域。可以作为图像识别算法的基础模型,进行相应的改进和优化,从而得到更高的精度和更好的效果。 需要注意的是,使用Imagenet-vgg-verydeep-19.mat文件时,需要具备一定的深度学习算法和编程技能,否则很难实现相关应用。同时,也需要具备一定的数据处理能力,针对不同的应用场景,对数据进行适当的预处理和增强,才能得到更优的模型效果。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值