Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks
这是2014年发在CVPR上的一篇论文,主要解决一个问题:深度学习需要大量的数据,对于小的数据集,如何进行深度学习训练?作者提出了可以在大型数据集(如ImageNet)上进行预训练,然后将训练好的网络权重迁移到小的数据集,即用小的数据集对网络进行微调,从而使网络可以适用于小的数据集。
1.引入
2012年CNN在ImageNet竞赛(ILSVRC-2012)取得巨大进展,但它需要大量有标签数据(120万,1000类)
是否每次训练都需要如此大规模数据?
对于小型数据集如何做?(Pascal VOC: 5k训练集,5k验证集,20个类)
作者提出:将在大规模数据训练的CNN网络学习到的图像表示迁移到小型数据集上。
2.迁移CNN权重
CNN中间层可看做图像表示的提取器(extractor),它可以在源数据集(ImageNet)中进行预训练,并应用到目标数据集(Pascal VOC)中。如果直接将在ImageNet上训练的网络直接应用到Pascal VOC上可能存在一些问题,因为源数据集与目标数据集可能存在很大差别。例如:源数据集(ImageNet)和目标数据集(Pascal VOC)图像的分布以及标签可能都不同(如物体种类,图像视角等),另外两个数据集中不同品种的狗可能都被标记为”dog”
3.网络
下图是AlexNet的结构,用于图像分类,参见
http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks
它包括5个卷积层,3个全连接层(最后一层是softmax)
使用的数据集:训练集:120万, 验证集5万, 测试集15万 ,一共1000类
再次回到之前的问题,对于一个小的数据集PASCAL VOC如何进行深度学习训练?其实我们可以首先利用ImageNet这样一个百万量级的数据集进行深度学习训练,但是训练好之后如何直接将它用到PASCAL VOC上效果可能不好,因为 ImageNet和PASCAL两个数据集图像的分布和标签可能都不同。对于这个问题,我们可以利用小的数据集PASCAL VOC对(在ImageNet上训练好的)网络进行微调,使这个网络可以用于小的数据集。具体如下:
3.1网络结构
去掉AlexNet最后一层FC8(softmax层,有1000类),增加两个全连接层Fca,FCb,FCb为softmax层,最后两层称为adaptation layer。示意图如下: