使用pycaffe进行的fine-tuning的过程

最近在进行caffe的fine-tuning的实验,在此做个简单地介绍和总结,方便以后的查询。

pre-trainning 与 fine-tuning 简单介绍

在使用大型网络的时候,经常是自己的数据集有限,为此常常会使用现已成熟的网络结构,如:alexnet,Googlenet,vggnet等,可以使用之前在开源社区中已经有人训练好的参数文件(.caffemodel),进行网络的初始化,然后使用自己的数据集进行参数的fine-tuning的过程。pre-trainning 在此,可以看作是caffemodel的参数数据(别人已经训练好或者是自己训练的网络的参数)。只是将原始的随机初始化,变成了已经有一定的使用的成熟的网络参数而已。

fine-tuning 的过程

本文就以vggnet-19 为例 进行介绍

参数与网络的结构使用的是

https://gist.github.com/ksimonyan/3785162f95cd2d5fee77#file-readme-md


1. 获取已有网络的结构(prototxt)和网络参数(caffemodel)

2. 准备好所要替换的自己的数据集,可以仿照原有的网络打包成lmdb或者其他格式的数据,也可以是原始的图像数据,这里不再进行说明,可以参考以前的博文。

3. mean file的计算,这里的话,我是将此文件替换成了自己数据集的mean file(train的集的),但是实验室的另一个大神他说这个是可以不进行替换的,只是一个normal的文件影响不是很大。(此步可以跳过)

4. 根据的自己的需要将最后的全连接的层,以及自己所需要改的层进行名字的修改,不要和原有的层的名称相同即可,caffe网络结构的参数读取,是根据名字将相应的参数读入到网络中的,修改之后,就不会将参数读入到网络中,这些参数就是随机产生的。但是常使用的就是修改最后的全连接层,我这里主要是分类的类别需要修改,例如10分类,改成100分类等。

5.最后是使用caffe的工具将fine-tuning的网络跑起来进行训练。

可以参考caffe的官网:

http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html


./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0
这里的可以使用GPU或者是不指定,默认使用的是CPU。


以上就是整个过程。其实不难,只是在使用上如何更好的使用到自己的网络中。

以上的方法也是可以只进行卷积的过程,提取深度卷积的特征图,可以将某一层的数据使用python脚本序列化到硬盘上,以备后面的将特征图进行统一格式的处理,放入到其他的分类其上进行分类。(在此有个有趣的东西,就是图像的卷积不需要对图像的尺寸进行限制的,我们可以但用来提取任意大小的图像的特征,在批量计算时需要对数据的维数进行考虑,感兴趣的可以看一下sppnet等,fastercnn等网络,蛮有意思的)。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值