利用预训练CNN进行特征提取及HDF5存储
1. 预训练CNN作为特征提取器
通常,我们将卷积神经网络(CNN)视为端到端的图像分类器,其流程如下:
1. 向网络输入一张图像。
2. 图像在网络中进行前向传播。
3. 从网络末端获取最终的分类概率。
但实际上,我们并非一定要让图像在整个网络中完成前向传播。我们可以在任意层(如激活层或池化层)停止传播,提取该层的数值,并将其用作特征向量。
以Simonyan和Zisserman提出的VGG16网络架构为例,原始的VGG16网络会输出1000个ImageNet类标签的概率。当将网络作为特征提取器时,我们通常会在全连接层之前截断网络(具体位置取决于数据集)。
此时,网络的最后一层是最大池化层,输出形状为 7×7×512,意味着有512个大小为 7×7 的滤波器。如果将一张图像通过去除了全连接层的VGG16网络进行前向传播,会得到512个 7×7 的激活值,这些值会根据图像内容被激活或不激活。我们可以将这 7×7×512 = 25,088 个值作为一个特征向量,用于量化图像的内容。
对整个图像数据集(包括VGG16未训练过的数据集)重复此过程,会得到一个包含N张图像的设计矩阵,每张图像有25,088列用于量化其内容(即特征向量)。基于这些特征向量,我们可以在其基础上训练现成的机器学习模型,如线性支持向量机(Linear SVM)、逻辑回归分类器或随机森林,以获得能够识别新图像类别的分类器。
需要注意的是,CNN本身无法识别这些新类别,我们只是将其作为中间的特征提取器,下游的机器学习分类器将负责学习从CNN提取的特征的潜在模式。
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



