Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我们可以为它没有训练过的类提取VGG16/19特性吗_Python 3.x_Keras_Deep Learning_Feature Extraction_Vgg Net - Fatal编程技术网

Python 3.x 我们可以为它没有训练过的类提取VGG16/19特性吗

Python 3.x 我们可以为它没有训练过的类提取VGG16/19特性吗,python-3.x,keras,deep-learning,feature-extraction,vgg-net,Python 3.x,Keras,Deep Learning,Feature Extraction,Vgg Net,我有一个关于为我的实验提取VGG16/VGG19特征的问题 预先训练的VGG16和VGG19模型已在ImageNet数据集上进行训练,该数据集具有1000个类(例如c1、c2、…c1000),通常我们从指定的第一个和第二个完全连接的层(“FC1”和“FC2”)提取特征;这些4096维特征向量然后用于计算机视觉任务 我的问题是,我们能否使用这些网络来提取不属于上述1000类中任何一类的图像的特征?换句话说,我们可以使用这些网络来提取标签为c1001的图像的特征吗?请记住,c1001不属于最初训练这

我有一个关于为我的实验提取VGG16/VGG19特征的问题

预先训练的VGG16和VGG19模型已在ImageNet数据集上进行训练,该数据集具有1000个类(例如c1、c2、…c1000),通常我们从指定的第一个和第二个完全连接的层(“FC1”和“FC2”)提取特征;这些4096维特征向量然后用于计算机视觉任务

我的问题是,我们能否使用这些网络来提取不属于上述1000类中任何一类的图像的特征?换句话说,我们可以使用这些网络来提取标签为c1001的图像的特征吗?请记住,c1001不属于最初训练这些网络的Imagenet类

在上一篇文章中,我引用了以下内容-

在进行特征提取时,我们处理预训练的网络 作为任意特征提取器,允许输入图像 向前传播,在预先指定的层处停止,并获取 该层的输出作为我们的特征

从上面的文本中,对于图像是否必须属于某个Imagenet类没有任何限制

请抽出一些时间来揭开这个秘密

在研究论文中,作者简单地说,他们使用了从Imagenet数据集上预先训练的VGG16/VGG19网络中提取的特征,但没有给出任何进一步的细节

我将提供一个案例研究以供参考:

具有属性的动物数据集(参见)是一个非常流行的数据集,有50个动物类用于图像识别任务。作者为上述数据集图像提取了ILSVRC预训练ResNet101特征。该ResNet 101网络已经在1000个imagenet类上进行了预培训(不同的imagenet类可在上获得)

此外,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类的图像的表示,并将其与标签一起用于其他分类器。

是的,可以,但是

第一个完全连接层中的特征假设编码非常一般的模式,如角度、线条和简单形状。您可以假设这些可以在它所训练的类集合之外进行泛化

然而,有一个问题是,这些特性被发现可以最大限度地减少1000个类的特定分类任务的错误。这意味着,不能保证它们有助于对任意类进行分类。

是的,可以,但是

第一个完全连接层中的特征假设编码非常一般的模式,如角度、线条和简单形状。您可以假设这些可以在它所训练的类集合之外进行泛化


然而,有一个问题是,这些特性被发现可以最大限度地减少1000个类的特定分类任务的错误。这意味着,不能保证它们有助于对任意类别进行分类。

对于仅提取特征,您可以在预训练的VGG/其他CNN中输入任何您想要的图像。但是,为了进行培训,您必须执行以下其他步骤

所提取的特征是通过专门针对这1000个类进行训练而确定的,属于这1000个类。您可以使用您的网络预测不属于这1000类的图像,但在下面的段落中,我将解释为什么这不是理想的方法

这里要概述的关键点是,提取的集合特征可用于检测/确定照片中是否存在其他对象,但不是“准备就绪”/“开箱即用”

例如,边和线是特征,它们不仅与这1000个类相关,还与其他类相关,因此它们是有用的通用特征

因此,您可以使用“转移学习”在您自己的图像(数据集)上进行训练,例如c1001、c1002、c1003


但是请注意,在使用网络预测新图像(新类)之前,您需要在自己的场景中进行训练。转移学习指的是使用一组已经收集/学习的特征,这些特征可以适用于另一个问题,但您需要针对“新问题”进行培训,比如c1001、c1002、c1003。

对于仅提取特征,您可以在预训练的VGG/其他CNN中输入您想要的任何图像。但是,为了进行培训,您必须执行以下其他步骤

所提取的特征是通过专门针对这1000个类进行训练而确定的,属于这1000个类。您可以使用您的网络预测不属于这1000类的图像,但在下面的段落中,我将解释为什么这不是理想的方法

这里要概述的关键点是,提取的集合特征可用于检测/确定照片中是否存在其他对象,但不是“准备就绪”/“开箱即用”

例如,边和线是特征,它们不仅与这1000个类相关,还与其他类相关,因此它们是有用的通用特征

因此,您可以使用“转移学习”在您自己的图像(数据集)上进行训练,例如c1001、c1002、c1003

但是请注意,在使用网络预测新图像(新类)之前,您需要在自己的场景中进行训练。