Caffe-10-微调finetune-概念+操作步骤

本文详细介绍了Caffe中微调(finetune)的概念和操作步骤,包括finetune与从头训练的区别,以及在Windows环境下进行Caffe微调的教程。教程涵盖准备数据集、计算均值文件、调整网络层参数和Solver参数,并提供了微调所需的文件修改方法。通过使用预训练模型,如CaffeNet,对新任务进行微调,可以有效地提高模型在特定领域的分类精度。
摘要由CSDN通过智能技术生成


自己识别车流过程中,暴露的问题:
之前是这样做的:只有“堵车”&“不堵车”两类训练样本。
根据cifar10的参数配置文件
cifar10_quick_solver.prototxt里的学习率、迭代次数等参数和
cifar10_quick_train_test.prototxt里的模型结构
作为训练的参数。
但由于自己的图片太少,只有1000张,最后识别率50%(无效),甚至出错。因此考虑用微调方式调参。

微调的概念

找到下面这篇blog:caffe的微调,下面是原文+笔记:
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model。这个model将图片分为1000类,应该是目前为止最好的图片分类model了。
假设我现在有一些自己的图片想进行分类,但样本量太小,可能只有几百张,而一般深度学习都要求样本量在1万以上,因此训练出来的model精度太低,根本用不上,那怎么办呢?

那就用caffe团队提供给我们的model吧。

因为训练好的model里面存放的就是一些参数,**因此我们实际上就是把别人预先训练好的参数,拿来作为我们的初始化参数,而不需要再去随机初始化了。**图片的整个训练过程,说白了就是将初始化参数不断更新到最优的参数的一个过程,既然这个过程别人已经帮我们做了,而且比我们做得更好,那为什么不用他们的成果呢?

使用别人训练好的参数,必须有一个前提,那就是必须和别人用同一个network,因为参数是根据network而来的。当然,最后一层,我们是可以修改的,因为我们的数据可能并没有1000类,而只有几类。我们把最后一层的输出类别改一下,然后把层的名称改一下就可以了。

最后用别人的参数(如w、b、卷积核等)、修改后的network结构我们自己的数据,再进行训练,使得参数适应我们的数据,这样一个过程,通常称之为微调(fine tuning).

既然前两篇文章我们已经讲过使用digits来进行训练和可视化,这样一个神器怎么能不使用呢?因此本文以此工具为例,讲解整个微调训练过程。

win下caffe微调教程1

两个link:
win下caffe微调1

楼燚(yì)航的blog 也是完全按照上面一行链接做的,而且带图片,因此这两个链接其实是一样的。

下面是link1的节选+笔记:
##为什么finetune
小菜最近一直在学习caffe。今天小菜主要介绍一下如何在Caffe上微调网络(ps:小菜中间也出现了许多问题,不过很感谢网上的一些前辈的无私奉献),一般比较经典的深度学习模型是别人训练好的模型,例如分类模型主要是针对Imagenet的数据集进行分类的。为了适应我们自己特定的新任务(小菜的任务是分类),一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据。因为像在ImageNet上毕竟是一个千万级的图像数据库,通常我们可能只能拿到几千张或者几万张某一特定领域的图像,比如识别衣服啊、标志啊、生物种类等等。在这种情况下重新训练一个新的网络是比较复杂的,而且参数不好调整,数据量也不够,因此fine-tuning微调就是一个比较理想的选择。

什么是finetune:

是在别人基于caffe训练好的模型(如caffenet,googlenet等)的基础上,利用别人训练好的模型的权重参数值,通过训练自己的图片集修改最后一层的(也就是softmax)的参数和输出类别,说白了就是网络层的前面层不变作为一个特征提取器,只改变最后一层作为一个分类器,最后的训练就相当于训练了一个适合自己需求的分类器。

finetune 与 scrachtch的区别

微调网络,通常我们有一个初始化的模型参数文件,这里是不同于training from

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值