《python深度学习》笔记---5.3-1、猫狗分类(使用预训练网络)
一、总结
一句话总结:
【小型图像数据集】:想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。
【用卷积层提取的特征】:使用在ImageNet 上训练的VGG16 网络的卷积基从 猫狗图像中提取有趣的特征,然后在这些特征上训练一个猫狗分类器。
1、预训练网络(pretrained network)?
【预训练网络是保存好的网络】:预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。
【原始数据集足够大且足够通用】:如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征 的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机 视觉问题,即使这些新问题涉及的类别和原始任务完全不同。
【例如训练好分类动物的ImageNet用于猫狗分类】:假设有一个在 ImageNet 数据集(140 万张标记图像,1000 个不同的类别)上训练 好的大型卷积神经网络。ImageNet 中包含许多动物类别,其中包括不同种类的猫和狗,因此可 以认为它在猫狗分类问题上也能有良好的表现。
【预训练网络让小数据问题非常有效】:这种学到的特征在不同问题之间的可移植性,是深度学习与许多 早期浅层学习方法相比的重要优势,它使得深度学习对小数据问题非常有效。
2、使用预训练网络有两种方法?
特征提取(feature extraction)和微调模型(fine-tuning)
3、使用预训练网络之特征提取(feature extraction)?
【从新样本中提取出有趣的特征】:特征提取是使用之前网络学到的表示来从新样本中提取出有趣的特征。然后将这些特征输 入一个新的分类器,从头开始训练。
【取出之前训练好的网络的卷积基】:对于卷积神经网 络而言,特征提取就是取出之前训练好的网络的卷积基,在上面运行新数据,然后在输出上面 训练一个新的分类器
4、为什么仅重复使用卷积基?我们能否也重复使用密集连接分类器?
【卷积基学到的表示更加通用】:一般来说,应该避免这么做。原因在于卷积基学到的表示可能更加通用,因此更适合重复使用。
【卷积神经网络的特征图表示通用概念在图像中是否存在】:无论面对什么样的计算机视觉问题,这种特征图都可能很 有用。
【dense层学到的是分类的概率信息】:但是,分类器学到的表示必然是针对于模型训练的类别,其中仅包含某个类别出现在整 张图像中的概率信息。
【dense层舍弃了空间信息】:此外,密集连接层的表示不再包含物体在输入图像中的位置信息。密集 连接层舍弃了空间的概念,而物体位置信息仍然由卷积特征图所描述。如果物体位置对于问题 很重要,那么密集连接层的特征在很大程度上是无用的。
5、注意,某个卷积层提取的表示的通用性(以及可复用性)取决于该层在模型中的深度?
【前面是高通用特征,后面是抽象特征】:模型中更靠近底部的层提取的是局部的、高度通用的特征图(比如视觉边缘、颜色和纹理),而更 靠近顶部的层提取的是更加抽象的概念(比如“猫耳朵”或“狗眼睛”)。
【差异较大取卷积层前几层】:因此,如果你的新数 据集与原始模型训练的数据集有很大差异,那么最好只使用模型的前几层来做特征提取,而不 是使用整个卷积基。
二、内容在总结中