【问题标题】:Which layer of VGG19 should I use to extract feature我应该使用 VGG19 的哪一层来提取特征
【发布时间】:2019-07-06 05:53:12
【问题描述】:

现在,我想要图像的特征来计算它们的相似度。我们可以在 tensorflow 中使用预训练的 VGG19 模型轻松获得特征。但是 VGG19 模型有很多层,我不知道应该使用哪一层来获取特征。哪一层的输出适合这个问题?

# I think this how is correct to extract feature
model = tf.keras.application.VGG19(include_top=True, 
                                   weight='imagenet')
input = model.input
output = model.layers[-2].output
extract_model = tf.keras.Model(input, output)

我的推断是越接近最后的输出,模型输出的功能就越强大。但是有些教程说'使用include_top=False提取特征'(例如Image Captioning with Attention TensorFlow

所以,我不知道应该使用哪一层。请尝试在此线程中帮助我。

【问题讨论】:

    标签: python tensorflow machine-learning tf.keras


    【解决方案1】:

    可以使用include_top=False,因为最后 3 层(对于该特定模型)是完全连接的层,通常不是很好的特征向量。如果模型直接输出一个特征向量,那么就不需要了。

    大多数人使用最后一层进行迁移学习,但这可能取决于您的应用程序。例如,Gatys et. al. 表明 VGG 的前几层对图像的风格敏感,后面几层对内容敏感。

    我可能会在超参数搜索中尝试所有这些方法,看看哪个性能最好。如果图像相似度是指内部物体的相似度,我可能会从最后一层开始。

    【讨论】:

    • 我的意思是整个图像的相似性。它不仅是对象,还包括背景。基本上,当图像相似度意味着图像中对象的相似度时,我应该使用更接近输出的层。而如果我想比较整个图像,我应该设置include_top=False 并使用最后一层。可以吗?
    • 最后一层,但可能值得一试。
    猜你喜欢
    • 2023-03-23
    • 2017-11-01
    • 1970-01-01
    • 2018-07-04
    • 2018-08-18
    • 1970-01-01
    • 2019-11-14
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多