【发布时间】:2020-12-14 21:22:21
【问题描述】:
我有一个关于为我的实验提取 VGG16/VGG19 特征的问题。
预训练的 VGG16 和 VGG19 模型已在具有 1000 个类(例如 c1、c2、... 'FC2');然后将这些 4096 维特征向量用于计算机视觉任务。
我的问题是,我们可以使用这些网络来提取不属于上述 1000 个类别的图像的特征吗?换句话说,我们可以使用这些网络来提取标签为 c1001 的图像的特征吗?请记住,c1001 不属于最初训练这些网络的 Imagenet 类。
在https://www.pyimagesearch.com/2019/05/20/transfer-learning-with-keras-and-deep-learning/ 上的文章中,我引用了以下内容-
在进行特征提取时,我们对待预训练的网络 作为任意特征提取器,允许输入图像 向前传播,在预先指定的层停止,并取 该层的输出作为我们的特征
从上面的文字来看,对于图像是否必须属于 Imagenet 类之一没有限制。
请抽出一些时间来揭开这个谜团。
在研究论文中,作者只是简单地说他们使用了从在 Imagenet 数据集上预训练的 VGG16/VGG19 网络中提取的特征,而没有提供任何进一步的细节。
我提供一个案例研究供参考:
Animal with Attribute dataset(见https://cvml.ist.ac.at/AwA2/)是一个非常流行的数据集,包含 50 个用于图像识别任务的动物类别。作者为上述数据集图像提取了 ILSVRC 预训练的 ResNet101 特征。这个 ResNet 101 网络已经在 1000 个 imagenet 类上进行了预训练(不同的 imagenet 类可在 https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a#file-imagenet1000_clsidx_to_labels-txt 获得)。
另外,AWA 类如下:
antelope, grizzly+bear, killer+whale, beaver, dalmatian, persian+cat, horse
german+shepherd, blue+whale, siamese+cat, skunk, mole, tiger, hippopotamus, leopard, moose, spider+monkey, humpback+whale, elephant, gorilla, ox, fox, sheep
seal, chimpanzee, hamster, squirrel, rhinoceros, rabbit, bat, giraffe, wolf, chihuahua, rat, weasel, otter, buffalo, zebra, giant+panda, deer, bobcat, pig, lion, mouse, polar+bear, collie, walrus, raccoon, cow, dolphin
现在,如果我们将数据集中的类与 1000 个 Imagenet 类进行比较,我们会发现 Imagenet 中不存在海豚、牛、浣熊、山猫、蝙蝠、海豹、绵羊、马、灰熊、长颈鹿等类作者仍然继续提取 ResNet101 特征。我相信提取的特征是可推广的,这就是为什么作者认为这些特征是对 AWA 图像有意义的表示。
您对此有何看法?
这个想法是获取不属于 ImageNet 类的图像的表示,并将它们与它们的标签一起用于其他分类器。
【问题讨论】:
标签: python-3.x keras deep-learning feature-extraction vgg-net