CNN迁移学习

    xiaoxiao2021-03-25  100

    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。示意图如下: 为什么这么做?因为原来AlexNet是用在ImageNet图像分类任务上,ImageNet图像分类任务是将图像分为1000个类,因此最后一层softmax输出为1000类,而现在PASCAL VOC只有20个类,因此网络原来的softmax层不适用当前任务。如果我们把网络倒数第二层当做一个“特征提取器”,那么在AlexNet 倒数第二层FC7就可以提取图像特征,将提取出的特征输入到新的FCa(全连接层)和FCb(softmax层,输出为PASCAL VOC的图像种类数),对这两层的权重进行训练,从而可以利用PASCAL VOC数据集的图像分类任务。

    在了解整体思路后,它的整体训练步骤如下: 3.2网络训练 1.首先使用ImageNet预训练CNN网络,并迁移到目标数据集 2.源数据集ImageNet图像中心是单一物体,但目标数据集(Pascal VOC)中一幅图像往往包含不同尺寸和方向的多个物体。目标数据集中也可能包含源数据集中不包括的物体。 因此,我们去除第1步训练得到的AlexNet的softmax层,并添加两个adaption layer(参见3.1中分析)。现在想要训练adapation layer,但我们无法直接以PASCAL VOC中的整幅图像作为输入,因为PASCAL VOC中一幅图像可能包括多个物体。现在我们想要从PASCAL VOC的一幅图像中提取出若干区域,这些区域只包括一个物体。 作者提出可以通过训练sliding window object detectors的方式训练adaptation layer(思想:利用sliding window从图像中抽取只包含单个物体的图像),具体如3: 3. 从每幅图像通过8个不同尺寸的采样提取500个方块,相邻方块至少有50%的重叠面积。 方块边长: s=min(w,h)/β , β{1,1.3,1.6,2,2.4,2.8,3.2,3.6,4} 再将每个方块都缩放/拉伸到224*224(因为网络输出的尺寸大小为224*224)。在得到了500个方块后,以这些方块图像输入到网络中,从而对网络进行微调。但目前我们还不知道这些方块的标签,现在我们对这些方块添加标签,如4: 4.标注目标数据集采样得到的方块 其中, Bo 是PASCAL VOC中某幅图像,它的类别标签为o,P是我们利用sliding window提取到的方块。

    示例如下:

    至此,我们得到了训练数据(即方块)及标签,可以训练adaptation layer了。另外,训练数据还存在不均衡的问题,即:

    背景问题: 训练数据不均衡:不部分方块都来自背景区域 解决:重新采样,随机抽取10%的背景

    参考文献:

    http://ieeexplore.ieee.org/document/6909618/

    转载请注明原文地址: https://ju.6miu.com/read-39589.html

    最新回复(0)