在caffe上fine-tuning网络

关于fine-tuning的几个小问题:

1、fine-tuning是什么意思
答:所谓fine-tuning就是微调的意思,也就是在一个已经有了不错的performance的网络基础上,针对自己的任务微小的调整网络中的参数。
2、为何要fine-tuning
答:因为我们做的方向经常是一些特定领域的识别分类任务,比如人脸,车辆,植物等等,而像ImageNet这样上千万级的数据库,我们是不会用到其全部的数据,通常我们的数据量都是比较小的。但是对于一个深度神经网络而言,我们需要输入大量的训练图像来训练参数,在这种情况下完全的重新去训练一个网络是非常困难的,所以我们通常会选择在一个比较好的model上来调整参数。
3、目前可以选择用来fine-tuning的原始model有哪些
答:我比较low,知道的不多,自己用过的有:AlexNet,VGG-16,VGG-19,Network In Network等

fine-tuning流程

fine-tuning的步骤与训练神经网络的步骤几乎是一致的,主要有以下几个步骤:
0、下载好已有的模型参数文件
1、准备好训练数据与测试数据
2、计算图像均值
3、修改网络文件
4、修改solver文件中的初始参数
5、开始fine-tuning
接下里针对每一步进行具体的说明

0、下载已有的模型参数文件

已训练好的模型参数文件在caffe中以后缀名为‘.caffemodel’的形式保存,这个文件需要我们自己在网上下载好。

1、准备训练数据与测试数据

这里需要我们将所有的图像生成一个带标签的list,每一行为图像的存储路径和标签,注意标签一定要从0开始,大致的形式如下:

/FMD/image/fabric/fabric_moderate_001_new.jpg 0
/FMD/image/fabric/fabric_moderate_002_new.jpg 0
/FMD/image/fabric/fabric_moderate_003_new.jpg 0

关于如何生成list并将图像顺序打乱可以参考文章:(http://blog.csdn.net/cheese_pop/article/details/52754837)
这样之后,我们将得到两份文本文件一个为训练集,一个为测试集。

2、计算图像均值

在计算图像均值前,我们需要先将训练集转为lmdb的格式,caffe里已经自带了convert_imageset工具,脚本代码如下,如何修改成自己需要的写在了注释里:

#!/usr/bin/env sh
# Create the imagenet lmdb inputs
 ../caffe-master_github/build/tools/convert_imageset.bin  \ #convert_imageset.bin所在路径
 /data2 \ #这个行的内容与下一行中涉及到的trian.txt文件中的图片路径拼起来是图像的绝对路径
 /temp/train.txt \
 ./101lmdb LMDB #保存的文件名及格式,(这里保存成LMDB数据格式)

这样生成了lmdb数据后,我们可以开始计算图像均值,代码如下:

../caffe-master_github/build/tools/compute_image_mean.bin 101lmdb mean.binaryproto

其中第一个参数是compute_image_mean.bin工具所在路径,第二个参数就是在上一步生成的lmdb数据库,第三个参数为生成的均值文件。图像的均值文件是以二进制的形式存储的,可以看到里面是类似于乱码的形式。

3、修改网络prototxt文件

1、修改data层的代码,source参数训练集或测试的参数,meanfile参数修改为上一步中生成的mean.prototxt均值文件。
2、修改最后一层的名称和学习率,修改名字是因为预训练模型赋值的时候就会因为名字不匹配从而重新训练,也就达成了我们适应新任务的目的;修改学习率是因为最后一层是重新学习,因此相比较其他层,这一层需要有更快的学习速率,因此我们将weight和bias的学习速率加快10倍。

layer {
  bottom: "fc7"
  top: "fc8_finetune"
  name: "fc8_finetune" #之前是fc8,根据需要,我将其修改为fc8_fintune
  type: "InnerProduct"
  param{
    lr_mult: 100 #weight的学习率要比之前调高10倍
    decay_mult: 1
  }
  param{
    lr_mult: 200 #bias的学习率这里要比之前调高10倍
    decay_mult: 0
  }
  inner_product_param {
    num_output: 10 #num_output的大小等于数据集的类别数
    weight_filler {
          type: "gaussian"
          std: 0.01
      }
      bias_filler {
          type: "constant"
          value: 1
      }
  }
}
layer {
  bottom: "fc8_finetune" #注意这里的名字也要改
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "label" 
  include { phase: TRAIN} 
}
layer {
   name: "accuracy"
   type: "Accuracy"
   bottom: "fc8_finetune" #注意这里的名字也要改
   bottom: "label"
   top: "accuracy"
   include {phase: TEST}
 }

4、修改solver文件中的初始参数

关于solver文件中的各个参数的含义,可以参考文章:caffe中solver.prototxt文件参数解释

与重新训练一个网络不同的是,fine-tuning的时候loss已接近最优值,因此学习率和步长都应该调小一些。需要修改的参数有:
1、test_itertest_interval。这两个只需要根据自己的数据量和网络文件中的batchsize设置的大小进行修改
2、base_lr 调低10倍甚至更多。trick:如果发现在fintune过程中loss的变化比较震荡,可以进一步调低base_lr的大小
3、stepsizemax_iter根据情况调低。

5、开始fine-tuning

fine-tunig时只需在脚本中载入预训练好的model,脚本代码:

  ../../caffe-master_github/build/tools/caffe train \
  -solver ./VGG_ILSVRC_19_layers_sovler.prototxt \
  -weights ./VGG_ILSVRC_19_layers.caffemodel \ #载入预训练的model
  2>&1 | tee log.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 安装caffe-ssd-gpu在ubuntu18.04的步骤如下: 1. 安装CUDA:从Nvidia官网下载合适的CUDA安装包,按照官方文档的指引进行安装。 2. 安装依赖:运行以下命令安装所需依赖库: ``` sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev \ libopencv-dev libhdf5-serial-dev protobuf-compiler \ libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev ``` 3. 下载caffe-ssd-gpu源码并编译:从Github上下载caffe-ssd-gpu的源码,按照官方文档指引进行编译。编译时需要指定编译选项为GPU模式。 4. 运行测试:安装完成后,运行测试脚本,确保安装配置成功。 以上为简要步骤,具体操作请参考对应文档和官方指引。 ### 回答2: Ubuntu18.04是目前比较常见的Linux操作系统之一,而CAFFE-SSD-GPU是深度学习的一个工具。下面是安装caffe-ssd-gpu的步骤: 1. 安装CUDA和cuDNN 首先,您需要安装CUDA和cuDNN,这是运行深度学习框架所需的必备组件。下载安装CUDA和cuDNN之前,您需要查看您的图形卡的型号,以便选择正确的CUDA版本和cuDNN版本。 在下载和安装CUDA和cuDNN之前,您需要在NVIDIA的开发者网站上注册自己,并下载适用于您机器的CUDA和cuDNN版本。此外,您还需要在命令行界面中设置以下环境变量: export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH 2. 安装依赖项 在安装caffe之前,需要安装一些依赖项。您可以使用以下命令将这些依赖项安装到您的Ubuntu系统上: sudo apt-get update sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy python-scipy 3. 下载和安装CAFFE 现在,您需要在您的系统上下载和安装CAFFE。从github上获取caffesource代码并进行安装: git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd 4. 编译和安装CAFFE 使用以下命令编译和安装caffe: cp Makefile.config.example Makefile.config make all -j $(($(nproc) + 1)) make pycaffe 执行该命令后,您需要等待一段时间才能完成CAFFE的编译。如果出现任何编译错误,请检查您的CUDA和cuDNN版本是否正确,并重新安装依赖项。 5. 使用CAFFE-SSD-GPU 现在,您已经成功地在Ubuntu18.04操作系统上安装并编译了CAFFE-SSD-GPU,您可以开始使用该工具来执行深度学习任务了。 总结 安装CAFFE-SSD-GPU需要充分理解linux的命令行操作。需要先确认CUDA和cuDNN已经安装,并正确设置环境变量。然后需要下载和安装CAFFE, 并最后编译和安装CAFFE。在安装过程中如果存在问题,可以查看错误日志,重新检查步骤。如果对命令行操作不熟悉,则先学习linux基础操作。 ### 回答3: caffe-ssd-gpu是一种基于caffe框架的用于实现目标检测的神经网络模型,在Ubuntu18.04系统中安装caffe-ssd-gpu需要进行以下步骤: 1. 安装CUDA CUDA是NVIDIA公司推出的用于高性能计算的并行计算平台和编程模型,是使用GPU进行深度学习任务所必需的。在Ubuntu18.04上安装CUDA需要首先确认自己的显卡型号,并选择合适的CUDA版本进行安装。可以在NVIDIA官网上下载相应的CUDA安装包,也可以通过命令行方式进行安装。在安装过程中注意要按照提示完成相应的配置和设置。 2. 安装cuDNN cuDNN是用于深度神经网络的GPU加速库,也是必需的组件之一。在安装过程中同样需要确认CUDA的版本和自己的显卡型号,并下载相应的cuDNN安装包进行安装。 3. 安装依赖包 在安装caffe-ssd-gpu前需要先安装几个依赖包,包括protobuf、opencv、boost等。可以通过命令行方式进行安装,例如: ``` sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev ``` 4. 下载caffe-ssd-gpu源码 可以在GitHub上找到caffe-ssd-gpu的源码,下载后解压到自己想要的目录下。 5. 编译和安装caffe-ssd-gpu 进入caffe-ssd-gpu源码目录下,执行以下命令: ``` cd caffe-ssd-gpu mkdir build cd build cmake .. make all -j8 make install ``` 其中,make all -j8表示使用8个线程进行编译,提高编译速度。make install表示安装编译好的caffe-ssd-gpu库文件和可执行文件。 6. 测试安装是否成功 可以尝试运行caffe-ssd-gpu自带的测试程序,检查安装是否成功。在源码目录下执行以下命令: ``` ./build/tools/caffe time --model=models/VGGNet/VOC0712/SSD_300x300_ft/deploy.prototxt --gpu=0 ``` 这条命令会测试caffe-ssd-gpu在GPU上执行推断的速度,如果没有问题,则说明安装成功。 需要注意的是,在安装过程中可能会遇到各种问题,例如依赖包的版本不兼容、CUDA和cuDNN的配置出错等等。这时候需要耐心调试错误,逐个解决问题,才能确保caffe-ssd-gpu能够正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值