Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning

17 篇文章 0 订阅
14 篇文章 0 订阅

转自:http://www.cnblogs.com/empty16/p/4884774.html

在经过前面Caffe框架的搭建以及caffe基本框架的了解之后,接下来就要回到正题:使用caffe来进行模型的训练。

但如果对caffe并不是特别熟悉的话,从头开始训练一个模型会花费很多时间和精力,需要对整个caffe框架有一个很清楚的了解,难度比较高;同时,在使用数据迭代训练自己模型时会耗费很多计算资源。对于单GPU或者没有大的GPU计算能力的研究者会比较困难。所以,使用已经训练好的caffe模型来进行finetuning就会是一个比较好的选择。

一来,finetuning的过程和训练的过程步骤大体相同,因此在finetuning的过程中可以对caffe训练过程有一个详细的了解,通过一步步的训练和finetuning,在寻找最优参数过程中加深对caffe框架的理解,为自己后续自己从头开始训练一个caffe深度网络模型打好基础。

另外,finetuning需要的计算资源相对较少,使用的trikes相对较少,难度较低,比较适合caffe新手。在finetuning过程中熟悉caffe的各种接口和操作。

话不多少,进入正题:使用caffe进行finetuing

在finetuning之前,我们应该了解到caffe是一个深度学习框架,在建立好神经网络模型之后,使用大量的数据进行迭代调参数获取到一个深度学习模型,我们使用这样的模型来实现我们的任务,如:图像分类,目标检测等。

在caffe中,训练好的模型为*.caffemodel,在github上面下载的caffe源代码中并没有caffemodel,需要我们单独去下载,下载地址同样也在caffe在git的官网上(经典Alex模型下载点这里),在git上面还有其它已经训练好的模型文件,如GooLenet,Rcnn模型等等。

在下载好model文件之后,按照下面的步骤进行模型的finetuning。

1. 下载数据,转换数据( Convert data) 
2. 定义网络结构(Define net (as prototxt) )
3. 设置网络训练过程中的各种参数(Define solver (as prototxt) )
4. 开始训练(Train (with pretrained weights))

 

1.下载数据按照要求准备好数据,这里主要讲一下如何将数据转换写入db文件中,方便网络训练过程中对数据的读写要求。

使用tools/convert_imageset.cpp将获取到的数据和标签写入db文件中。

需要注意的是,对于每一个训练样本,文件的格式应该是:

“[path/to/image.jpeg] [label]”

 

2.设计定义网络结构 
● 如果是训练过程,那么需要重新写一个*.prototxt 文件,文件格式可以参考src/caffe/proto/caffe.proto下的定义。最简单的方法就是复制一个example中的proto文件根据自己的需要进行修改
● 如果需要对网络进行finetuning,那么复制一份该model文件对应的prototxt文件进行修改,因为finetuning的过程是让原有训练好的模型适应自己的数据,因此一般情况下,网络的模型并没有大的变化。需要做的事情有: 
  ○ 修改文件中的数据层(因为是进行finetuning,因此数据输入层是自己的数据)
  ○ 修改输出层,因为一般情况下,finetuning的应用与原模型的应用不完全相同。

  如:imagenet中的分类输出为1000类,所以在最终输出层时会是一个1000的向量,但是在实际应用中,类别可能只有10+种,因此不能直接使用imagenet中的输出层,需要对输出层进行修改;
  ○ 如果GPU比较小,计算能力比较差的话,需要减小batch_size参数,提高迭代效率; 
  ○ **将blobs_lr参数设置为0**, 因为在finetuning过程中,网络的答题框架参数是不变的,我们只需要使用自己的数据对网络的小部分结构中参数进行更新和学习,因此需要将blob_lr参数设置为0,将网络的层参数进行冻结,不进行更新。

 3.定义网络参数(proto文件)

  在对caffe熟悉过程中,了解到在使用caffe进行网络训练时,需要在*.proto文件中设定网络训练所需参数信息。需要修改的地方有:

○ 将网络改成自己的网络 
○ 修改snapshot的前缀snapshot_prefix(用于存储训练过程中的中间结果) 
○ 减小基础学习率(base learning rate,divide by 100) 
○ 修改参数max_iter 和 snapshot

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用TensorFlow、Keras和Caffe等工具训练自己所需的模型通常需要以下步骤: 1. 数据准备:收集、清理和格式化数据,以便于训练模型。 2. 模型设计:选择适当的模型类型、层数、激活函数等,设计出能够完成所需任务的模型。 3. 模型编译:通过编译器指定模型的损失函数、优化器和评估指标,为模型训练做好准备。 4. 训练模型使用准备好的数据训练模型,可以使用GPU加速训练过程。 5. 模型评估:使用测试集评估模型的表现,以便进行优化和改进。 6. 模型部署:将训练好的模型部署到生产环境,让它可以处理实际数据。 具体来说,使用TensorFlow、Keras和Caffe等工具训练模型的步骤如下: 使用TensorFlow训练模型: 1. 安装TensorFlow:可以通过pip安装或源码编译安装。 2. 准备数据:准备好数据集,将其转化为TensorFlow支持的格式。 3. 设计模型:选择适当的模型类型、层数、激活函数等。 4. 编译模型使用compile()函数编译模型,指定损失函数、优化器和评估指标。 5. 训练模型:通过fit()函数训练模型,指定训练数据、批大小、训练轮数等参数。 6. 评估模型使用evaluate()函数评估模型的表现。 7. 预测数据使用predict()函数对新数据进行预测。 使用Keras训练模型: 1. 安装Keras:可以通过pip安装或源码编译安装。 2. 准备数据:准备好数据集,将其转化为Keras支持的格式。 3. 设计模型使用Keras API设计模型,选择适当的模型类型、层数、激活函数等。 4. 编译模型使用compile()函数编译模型,指定损失函数、优化器和评估指标。 5. 训练模型:通过fit()函数训练模型,指定训练数据、批大小、训练轮数等参数。 6. 评估模型使用evaluate()函数评估模型的表现。 7. 预测数据使用predict()函数对新数据进行预测。 使用Caffe训练模型: 1. 安装Caffe:可以通过源码编译安装。 2. 准备数据:准备好数据集,将其转化为Caffe支持的格式。 3. 设计模型使用Caffe模型定义文件定义模型结构,选择适当的模型类型、层数、激活函数等。 4. 编译模型使用caffe命令编译模型,生成可执行文件。 5. 训练模型使用caffe命令训练模型,指定训练数据、批大小、训练轮数等参数。 6. 评估模型使用caffe命令评估模型的表现。 7. 预测数据使用caffe命令对新数据进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值