深度学习笔记

本文详细介绍了如何使用CAFFE框架在已有模型基础上训练自定义数据集,包括数据集准备、模型修改、训练过程、特征提取及分类应用。通过创建特定目录结构和使用批处理脚本生成数据列表,实现LMDB数据格式转换。训练前还需计算图像均值并生成对应文件,最后利用caffe训练接口调整配置文件完成训练。训练结束后可提取特征用于分类任务。

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

深度学习笔记——基于CAFFE框架训练自己的数据集

本文主要讲解如何使用caffe在已有的模型上训练自己的数据集,这篇文章主要是用来记录自己学习过程中的一些心得体会留给以后自己复习之用,由于本人接触深度学习和caffe框架才半月时间,所以其中有什么说错的或者不到位的地方,希望批评指正(本文假设已经成功安装caffe和已经配置好了所有的相关库,如果没有安装好,请自行参考caffe官网的指导):

  • 准备数据集
  • 修改已有的模型
  • 开始训练
  • 用训练的模型提取特征
  • 用训练好的数据集去做分类

准备数据集

  • 准备数据集是个比较麻烦的过程,这个过程个人感觉也是比较令人痛苦的事情,总之很浪费时间。
  • 在caffe的更目录下新建一个文件夹如:CAFFEROOT/firstexample
  • 在firstexample文件夹下新建两个文件夹一个命名为train用来保存训练的数据集,另一个命名为val用来保存验证的数据。由于准备数据集比较浪费时间,本文的数据集分为3类(长袖衬衫,连衣裙,西服)其中每个类别训练集是150张图片,验证集包括50张图片。
  • 在train文件夹下新建三个文件夹分别为 changxiuchenshan lianyiqun xifu用来保存图片,这里的图片建议用统一的格式,这样后面新建图片列表的时候会方便一点。
  • 验证集的图片直接保存在val文件夹下,不用再另外分开建文件夹存放。
  • 这里写图片描述
  • 这里写图片描述
  • 上面给出了图片在我电脑里的存储的情况,我想这样给出来应该看的很明白了吧!
  • 接下来我们就要做两个.txt文件。由于数据集往往比较大,所以建议自己写个批处理文件用来生成train.txt和val.txt。两个文件的内容如下图所示:
  • 这里写图片描述
  • 这里写图片描述
  • 这里需要注意一下由于val中的图片是直接保存在val的目录下所以前面是没有其他路径的。另外changxiuchenshan 后面是 0 接下来的lianyiqun 图片后面的标签就是1一次类推。至于上面提到的批处理程序我想不需要我给出来吧!
  • 到了这里我们的数据集就算准备的差不多了,下面就是要生成caffe支持的数据格式lmdb数据了。这里我们用CAFFEROOT/examples/imagenet/create_imagenet.sh的这个文件。我们先把这个文件拷贝到我们的firstexample文件夹下。然后修改一下create_imagenet.sh文件的内容。这里主要修改的内容包括EXAMPLE=firstexample,这个是用来指示我们输出文件的保存路径的我们把输出保存到firstexample文件夹下。DATA=firstexample这个是用来查找我们的train.txt和val.txt文件的。TRAIN_DATA_ROOT=firstexample/train这个是用来查找我们的训练图片数据的。VAL_DATA_ROOT=firstexample/val这个是查找我们的验证图片数据。RESIZE=true这个是用来把我们的图片都调整为256*256大小的图片。剩下的内容我们就不需要改了,建议可以自己看看这个文件的内容体会一下。好了到这里我们就可以运行这个文件区生成我们的lmdb文件了,注意这些文件的运行时在根目录下运行的所以是这样的firstexample/crate_imagenet.sh;因为如果在firstexample目录下运行的话是找不到bin/tools文件的。这里有点啰嗦,我想大家应该都知道了吧!
  • 好了运行完之后就会在firstexample文件下生成两个文件一个ilsvrc12_train_lmdb 一个ilsvrc12_val_lmdb.
  • 这里写图片描述
  • 好了这里之后我们的前期的数据准备就Ok了,接下来就是准备训练了。

计算图像均值

  • 这里我们还需要一个另外的文件,个人感觉这个文件是用来图像去中心化服务的。这个文件可以用CAFFEROOT/examples/imagenet/make_imagenet_mean.sh这个文件生成,注意在根目录下运行这个文件,运行结束会生成一个叫做imagenet_mean.binaryproto的文件,我们把这个文件拷贝到我们的firstexample问件夹下。

训练我们的数据集

  • 好了到了这里我们的前期数据集的准备就真的差不多了,接下来就是准备训练了。
  • 这里我们用caffe提供的训练接口就好了。我们得把已经验证过比较好的模型考到我们的firstexample文件夹下面。这个模型在CAFFEROOT/models/bvlc_reference_caffenet/这个文件夹中。我们把其中的train_val.prototxt和solver.prototxt拷贝到我们的firstexample文件夹中。
  • 在开始训练之前我们要修改train_val.prototxt的部分内容。第一个地方就是训练数据的输入层,也就是第一层,这里要改的第一个是source:”firstexample/ilsvrc12_train_lmdb”这是数据的输入路径。第二个是batch_size:10,由于我们的训练数据比较小所以我们的batch_size设小一点点。第三个是mean_file:”firstexample/imagenet_mean.binaryproto“。第二个地方就是验证数据的输入层,这里要修改的地方和训练数据层大致差不多。也是对应的source:”firstexample/ilsvrc12_val_lmdb”, batch_size:5,mean_file:”firstexample/imagenet_mean.binaryproto”。第三个需要修改的地方是我们的输出层 layers: name “fc8”。由于我们的类别是3个所以我们需要把输出num_output:3改成这样。
  • 接下来我们需要修改的就是这个solover.prototxt文件的内容了。
  • 这里写图片描述
  • 这个solover.protext文件的内容每个条目的意思大家可以参考caffe官网里面的例子。里面有详细的解释,由于有些参数对训练效果的影响我还不是很清楚,所以这里我就不发表自己的拙见了。
  • 写了这么多终于终于可以开始我们的训练了,那么训练的语句是什么呢?很简单,你可以自己写个shell脚本也可以直接在命令行输入下面这段语句:CAFFEROOT/build/tools/caffe train –solver=firstexample/solver.prototxt
    -好的到了这里我们的训练就算结束了。我训练的结果效果达到0.98不过由于数据量小,所以效果不稳定。训练结束之后会在我们的firstexample文件下会保存几个文件,其中caffe_train_iter_4000.caffemodel就是我们训练的结果了。我们可以拿这个文件去分类了,也可以用来提取特征。

    好了到了这里我们的文章就快结束了,由于是刚开始接触深度学习和CAFFE架构所以可能有一些地方写的不清楚。这篇文章留以后复习和反思之用谢谢大家。之后的用已有的模型去特征提取好分类我会在下篇文章中介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值