CNN 之 fine-tune methods

CNN 的基本结构是由卷基层和全连接层构成的. 对于在大规模数据集(例如ImageNet)上训练好的网络, 我们可以利用它的权重来帮助我们实现我们的任务.
从原理上来讲,随机初始化容易将网络导向不确定的局部最优, 因此一般需要利用多次随机初始化训练来验证结果的有效性. 而借助已训练好的网络或者说利用已训练好的的网络权重作为网络初始值已被广泛证明有利于网络以较快的速度趋于最优化(transfer learning).
这样做的原理往往是说不清楚的, 但是不乏附会的理由. 这里我们不纠结那些, 只来考虑如何用已训练好的网络来进行fine-tune已适应我们自己的数据.

借助已训练好的网络, fine-tune我们自己的数据. 这里分两种情况:
- A. 我们的输入和网络原始输入一致(尺寸)
原始网络结构(除了输出层class的个数可能有差异)外, 我们可以完全接管过来.
- B. 我们的输入尺寸和网络原始输入尺寸有差异
原始网络的输入层和输出层我们都需要进行改造以处理我们自己的数据. 因为在网络确定的情况下,全连接层的参数规模和结构由输入尺寸决定. 因此输入层和原始网络不一样, 那么原始网络全连接层的权重(具体来说是最后一个卷基层和第一个全连接层处的权重)因参数尺寸不一样,我们用不了. 因此在输入尺寸有变化时,原始网络全连接层的权重就不能用了.
因此需要我们自己构建全连接层.具体改造的方法随后我会举例代码来说明.

fine tune 的方法.

整体训练:
  • 网络整体利用新数据重新训练,所有层都是trainable的.

1 对于情况A, 权重(在输出类别个数改变的情况下,除了最有一层外,其余层的权重都可以直接调用原始网络的)可以调用原始网络的. 然后在原始网络上直接重新进行训练.
2 对于情况B, 卷积层的权重可以直接调用原始网络, 全连接层的权重可以:
2.1. 随机初始化,然后整体一起训练.
2.2. 先freeze卷基层, 用我们的数据训练一下随机初始化的全连接层,然后将训练好的全连接层和卷基层拼在一起,整体重新训练.

局部训练
  • 卷基层freeze, 全连接层进行训练

    1. 卷基层freeze, 随机初始化全连接层,然后用我们自己数据重新训练全连接层.
      这里的卷基层相当于特征提取层, freeze的目的是为了保留它之前的特征提取能力.
# CNN_UCMerced-LandUse_Caffe(数据:http://vision.ucmerced.edu/datasets/landuse.html) 主要任务:基于深度学习框架完成对光学遥感图像UCMerced LandUse数据集的分类。 数据特点:共包含21类土地类型图片,每类100张,每张像素大小为256*256,数据类内距离大,类间小。 完成情况:数据量太小,训练数据出现过拟合;为了克服这个问题,又减小训练时间,采用caffe框架,在别人训练好的bvlc_reference_caffenwt模型上进行fine-tune,对最后一层设置较大的学习速率,结果取得了93%的正确率;在这基础上又在fc7层上提取了每张图片的4096维特征,进行了SVM分类,取得了95%以上的分类正确率,并对结果做了可视化分析。 环境:ubuntu14.04 + caffe + python(数据划分和增强在用windows10的3.5,其余都是unbuntu下用的2.7) 程序(相关路径需要修改)/步骤: multi_divide_pic.py---多进程进行数据划分(cv2没装成功,建议用cv2,方便) multi_augmentation_pic.py---多进程数据增强 make_caffe_lmdb.py---生成caffe训练需要的数据路径文件,然后修改caffe配置文件 bvlc_reference_caffenet.caffemodel---caffe模型,在上面进行finetune(http://dl.caffe.berkeleyvision.org/?from=message&isappinstalled=1) binaryproto2npy.py---将caffe生成的均值文件转换成.npy格式 cnn_vision_caffe.py---对训练好的模型进行可视化分析 extract_features.py---获取每张图片在fc7层输出的4096维特征 svm_predict.py---使用svm对上述提取的特征进行训练预测 svm_vision.py---对svm模型进行可视化分析 tsne.py---对数据进行降维可视化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值