CNN 之 fine-tune methods

原创 2018年04月14日 23:22:04

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训练之fine tune

目的 深度卷积神经网络包含大量的参数,这就要求了我们需要大量的数据来训练它。而针对特定的一个任务,往往只有少量数据集。在此背景下,微调网络,作为迁移学习的一种应用,很大程度上(并不是完全)解决了这个...
  • kmsj0x00
  • kmsj0x00
  • 2017-11-27 12:49:56
  • 56

R-CNN和SPP-net

一、两篇文章的对比 R-CNN这篇文章对每个regionproposal进行cnn特征提取,也可以解决多标签问题,但从下面的框架图可以看到: 需要输入大约2000次的cnn特征提取,在时间上和s...
  • u011148330
  • u011148330
  • 2015-04-29 10:50:47
  • 7323

CVPR2017论文阅读:Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis

论文阅读:Fine-tuning Convolutional Neural Networks forBiomedical Image Analysis: Actively and Incrementa...
  • xinrui_zhuang
  • xinrui_zhuang
  • 2018-01-09 21:39:09
  • 150

cs231n-(9)迁移学习和Fine-tune网络

介绍适合fine-tune的场景,以及方法。
  • KangRoger
  • KangRoger
  • 2017-02-18 21:55:09
  • 2168

SSD Faster-RCNN使用自己的数据fine-tune训练模型

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • fx409494616
  • fx409494616
  • 2017-01-04 16:18:51
  • 2719

关于CNN(卷积神经网络)最直观的解释

看过许多关于CNN的解释,要么因为涉及公式太多,实在不想被数学公式等高深的理论知识过多的占用理解时间,要么就是跟直接翻译论文上描述,没有那么通俗易懂,我今天看到一个知乎博主写的CNN解释,觉得深入浅出...
  • f12105212
  • f12105212
  • 2017-11-30 11:25:49
  • 432

caffe深度学习(一)fine-tune

我们来说一下如何fine tune。 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型。fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入...
  • FlyYoung0709
  • FlyYoung0709
  • 2017-05-04 17:55:34
  • 407

为什么“Pretrained+Fine-tuning”

Deep Learning或者说CNN在图像识别这一领域取得了巨大的进步,那么自然我们就想将CNN应用到我们自己的数据集上,但这时通常就会面临一个问题:通常我们的dataset都不会特别大,一般不会超...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2017-04-13 11:43:11
  • 1861

Deep learning系列(十三)Transfer learning 和 caffe Fine-tuning

介绍了Transfer Learning及在用caffe进行微调。
  • u012526120
  • u012526120
  • 2015-10-29 20:41:44
  • 9093
收藏助手
不良信息举报
您举报文章:CNN 之 fine-tune methods
举报原因:
原因补充:

(最多只允许输入30个字)