利用ImageNet上预训练的VGG19提取图像特征

本文介绍了VGG19卷积神经网络的结构,它在ILSVRC比赛中取得了优异成绩。通过VGG16为例,详细阐述了网络层的配置,包括卷积和池化层。接着,讨论了如何利用TensorFlow构建网络并提取特定层的特征,特别是去掉最后一层softmax,使用预训练权重文件。在实际操作中遇到了关于tf.split函数版本问题的解决办法,并提供了相关代码仓库和模型下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VGG卷积神经网络是牛津大学在2014年提出来的模型。当这个模型被提出时,由于它的简洁性和实用性,马上成为了当时最流行的卷积神经网络模型。它在图像分类和目标检测任务中都表现出非常好的结果。在2014年的ILSVRC比赛中,VGG 在Top-5中取得了92.3%的正确率。有VGG16和VGG19,模型的权重由ImageNet训练而来。

1、VGG结构

下面以VGG16为例来说明:

看出VGG16由13个卷积层+3个全连接层=16层构成,过程为:

经过的卷积核大小为333,stride=1,padding=1,pooling为采用2x2的max pooling方式。

(1) 输入:输入224 * 224 * 3的图片。

(2) Conv1_1+conv1_2+pool1:经过64个卷积核的两次卷积后,采用一次max pooling。经过第一次卷积后,有(3 * 3 * 3) * 64=1728个训练参数;第二次卷积后,有(3 * 3 * 64) * 64=36864个训练参数,大小变为112 * 112 * 64.

(3) Conv2_1+conv2_2+pool2:经过两次128个的卷积核卷积之后,采用一次max pooling,有(3 * 3 * 128) * 128=147456个训练参数,大小变为56 * 56 * 128.

(4) Conv3_1+conv3_2+con3_3+pool3: 经过三次256个的卷积核卷积之后,采用一次max pooling,有(3 * 3 * 256) * 256=589824个训练参数,大小变为28 * 28 * 256.

(5) Conv4_1+conv4_2+con4_3+pool4: 经过三次512个的卷积核卷积之后,采用一次max pooling,有(3 * 3 * 512) * 512=2359296个训练参数,大小变为14 * 14 * 512.

(6) Conv5_1+conv5_2+con5_3+pool5: 再经过三次512个的卷积核卷积之后,采用一次max pooling,有(3 * 3 * 512) * 512=2359296个训练参数,大小变为7 * 7 * 512.

(7) Fc6+Fc7+Fc8:经过三次全连接,最终得到1000维的向量。

2、利用tensorflow搭建网络并提取指定层特征

包括定义网络参数,定义卷积层、池化层、全连接层操作,定义网络结构,等操作,然后根据是分类任务或是其他任务定义损失函数开始训练等。代码较长,在此就不列出,会附在附件中,需要的同事可查看。因为我只需要利用预训练好的vgg提取图像的特征,所以会去掉最后一层softmax,这里需要提前下载在大的图像数据集ImageNet上训练好的网络权重文件vgg16.npy。 encoding must be 'ASCII', 'latin1', or 'bytes' ,当npy文件中只有层名字时候,选用encoding= 'latin1',当npy文件中既有层名字又有各个参数,使用encoding='bytes'.这里是第一种情况,所以用encoding= 'latin1'。选用加载方法如下:vgg16_npy_path为vgg16.npy文件的存放路径,

提取图像特征的代码如下,需要提取哪一层的特征,就把名字修改一下即可,如:我提取的是fc7层,下面就写vgg.fc7,每层名字的定义在vgg16.py文件中,到此操作完毕。

3、遇到的问题

在调用vgg16.py函数时,一直报下面这个错误:

查找原因发现是因为split()这个函数在不同版本的tensorflow中参数位置发生了改变,在tensorflow<0.12.0版本中的用法是:

tf.split(axis, num_or_size_splits, value)

在tensorflow>0.12.0版本中的用法是:

tf.split(value, num_or_size_splits, axis)

在vgg16.py对应位置上修改即可,

完整代码:https://github.com/2281123066/vgg-tensorflow.git

vgg16,vgg19模型下载:

链接:https://pan.baidu.com/s/1rh-Z_Gmn6014d3laQxvNJw 
提取码:nw41

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值